Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用した画像ベースのステガノグラフィ?


ステガノグラフィは、舞台裏で情報を隠す技術です。これは、データの暗号化(SHA1、MD5などのさまざまなアルゴリズムによる)に焦点を当てた暗号化とは異なり、ステガノグラフィは、別のファイル、画像、メッセージ、またはビデオ内にデータ(データはファイル、画像、メッセージ、またはビデオ)を隠すことに焦点を当てています。魅力を避けるため。

そのため、ここでは、画像の外観に目立った変化を与えることなく、画像の背後にある情報を非表示にする単純なPythonプログラムを作成しようとします。プログラムには2つの主要な部分があります。1つは画像ファイルから秘密情報を抽出できるデコード機能で、もう1つは秘密メッセージを画像にエンコードするエンコード機能です。

この目的のためにPythonPillowライブラリを使用します(openCvまたは他のものも可能です☺)。 pipを使用してインストールできます。コマンドプロンプトでpipinstallpillowを実行するだけです。

$pip install pillow

ピクセルモデルとカラーモ​​デルの基本概念:

ピクセルは、画像の最小の個々の要素です。したがって、各ピクセルは元の画像の一部を表します。つまり、ピクセルが高いほど、実際の画像の表現が高くなるか、はるかに正確になります。

白黒画像(グレースケールではない)では、黒のピクセルの値は1で、白のピクセルの値は0です。一方、カラー画像では、3つの主要な色成分(RGB-赤、緑、青)があり、ピクセルがあります。各ピクセルの0〜255の値。したがって、(255、255、255)のピクセルは白を表し、(0,0,0)は黒を意味します。 8ビットの2進数が255を表すことができる最大数として、私たちが行くことができる最大数です。

2進数の基数は2なので、2進数を10進数に非常に簡単に変換できます。 2進数が01010101であるとすると、それに相当する10進数(基数10)は次のようになります。

26 +24 + 22 + 20 = 64 + 16 + 4 + 1 = 85

上記でテストできます–Pythonターミナルでも2進化10進変換。

>>> print(0b01010101)
85
>>> type(0b01010101)
<class 'int'>
>>> 0b01010101
85
>>> 0b01010110
86

どうやってそれを達成するか:

Step 1: Import the required library/package.
Step 2: Open the file or Image
Step 3: Encode some text into the source Image & then save it.
Step 4: Check both the images (with and without hidden data file) and see if there is any visible changes.
Step 5: Decode the image- to extract data from the image

上記の手順の実装:

サンプルコード

>>> #Import the required library
>>> from PIL import Image
>>> import stepic
>>>

エンコードとデコードの目的でstepicライブラリを使用しました。 pipを使用してstepicライブラリをインストールできます:

Pythonを使用した画像ベースのステガノグラフィ?

>>> #Open Image or file in which you want to hide your data
>>> im = Image.open('TajMahal.png')
>>>
>>> #Encode some text into your Image file and save it in another file
>>> im1 = stepic.encode(im, b'Hello Python')
>>> im1.save('TajMahal.png', 'PNG')
>>>
>>> #Now is the time to check both images and see if there is any visible changes
>>> im1 = Image.open('TajMahal.png')
>>> im1.show()

テキストが非表示の画像:

Pythonを使用した画像ベースのステガノグラフィ?

Actual image:
>>> im.show()
>>>'

Pythonを使用した画像ベースのステガノグラフィ?

>>>
>>> #Decode the image so as to extract the hidden data from the image
>>> im2 = Image.open('TajMahal.png')
>>> stegoImage = stepic.decode(im2)
>>> stegoImage
'Hello Python'

したがって、画像の背後にあるテキストを非表示にするのがいかに簡単であるかがわかります。ビデオなどの他の入力項目やjpegなどの他の形式を使用でき、他のライブラリを使用して同じ結果を得ることができます。Pythonを使用したハッピーステガノグラフィ☺。


  1. Pythonを使用して画像を読む?

    OpenCVを使用した画像処理 OpenCV(オープンソースコンピュータービジョン)は、基本的に機械学習とコンピュータービジョンのために開発されたオープンソースプログラミングライブラリです。コンピュータビジョンアプリケーションで動作し、商用製品での機械学習の使用を高速化するための共通のインフラストラクチャを提供します。 コンピュータービジョンと機械学習の両方に最適化された2.5千を超えるアルゴリズムは、古典的で最先端のアルゴリズムです。非常に多くのアルゴリズムを使用して、顔の検出と認識、オブジェクトの識別、ビデオ内の人間の行動の分類、カメラの動きの追跡、画像の結合によるシーン全体の高解像度

  2. Pythonを使用したWebサイトブロッカー

    大規模なIT企業で働いている場合は、その2つのWebサイト、特にFacebook、YouTube、Instagramなどのソーシャルネットワーキングサイトがブロックされていることに気付くかもしれません。 サードパーティのアプリケーションを使用して特定のWebサイトをブロックする代わりに、選択したWebサイトをブロックする独自のカスタムアプリケーションを開発できます。PythonでWebサイトブロッカーを開発することもそれほど難しくありません。それが私たちがやろうとしていることです-私たちが望むウェブサイトをブロックするPythonスクリプトを開発します。 前提条件: Python3.xが