Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/priyansh-anand/steganographer
暗号化/復号化ツールデータ流出ステガノグラフィー学習と教育
GitHubpriyansh-anand/steganographer

steganographer

Pythonによるステガノグラフィ | 画像ファイルにファイルやデータを隠す

リポジトリを見る
1693484年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Pythonでのステガノグラフィ

このスクリプトはファイルを画像内に隠し、変更された画像をディスクに保存します。

画像内に隠せるファイルの最大サイズは、画像の寸法に依存します。

root@kitploit:~
max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

'100k words.txt' は 'original_image.png' に隠されており、'image_with_100k words.png' という名前で保存されています。 これら2つの画像の違いを見つけられるか確認してみてください。 このモジュールを使用して、'image_with_100k words.png' から '100k words.txt' を抽出できます。

例

元の画像 Original Image

変更後の画像 Modified Image

この画像には10万語(テキストファイル)が隠されています!

仕組み

これは、各ピクセルのLSB(最下位ビット)を変更しても、その変化は重要ではなく、目で気づかれないという単純な原理に基づいています。

したがって、このモジュールは隠すファイルから2ビットのデータを取り出し、1つのピクセルの最後の2ビットをその2ビットで置き換え、次のピクセルに移動します。 ピクセルの最大変化は4単位であり、PNG画像の値の範囲は(0,255)であるため、この変化は重要ではありません。

PNG画像では、各ピクセルは3つのチャンネル(赤、緑、青)を持ちます。(一部のPNG画像は1または4チャンネルですが、このプログラムはそれらを3チャンネルに変換します) PNG画像の典型的なピクセルは次のようになります:

root@kitploit:~
a_pixel = (17,32,11)     # (RED, GREEN, BLUE)

したがって、1ピクセルに3回×2ビット、つまり1ピクセルあたり6ビットを保存できます。これにより、画像に隠せるファイルサイズの上限が決まります:

root@kitploit:~
max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

例を使って理解しましょう。隠すデータは次のとおりです:

root@kitploit:~
binary_data = 0b100111

最初の2ビットを取り出し、'a_pixel'の赤チャンネルと置き換えます。

root@kitploit:~
a_pixel = (0b10001, 0b100000, 0b1011)   # binary representation of a_pixel values
# Let's change a_pixel's RED Channel
# 0b10001 -> 0b10010  ( First 2 bits are 10 )
a_pixel = (0b10010, 0b100000, 0b1011)  # modified pixel

再びbinary_dataから2ビットを取り出し、緑チャンネルの最後の2ビットと置き換えます。

root@kitploit:~
a_pixel = (0b10010, 0b100000, 0b1011)
# Let's change a_pixel's GREEN Channel
# 0b100000 -> 0b100001  ( The 2 bits are 01 )
a_pixel = (0b10010, 0b100001, 0b1011)  # modified pixel

青チャンネルでもう一度これを行い、完了です。

root@kitploit:~
a_pixel = (0b10010, 0b100001, 0b1011)
# Let's change a_pixel's BLUE Channel
# 0b1011 -> 0b1011  ( The 2 bits are 11 ) ; Notice that the value wasn't changed this time
a_pixel = (0b10010, 0b100001, 0b1011)  # pixel wasn't modified this time

これで、6ビットのメッセージを1ピクセルに隠しました。ピクセルの変化を見てみましょう。

root@kitploit:~
a_pixel             = (0b10001, 0b100000, 0b1011) = (17, 32, 11)
a_pixel_with_data   = (0b10010, 0b100001, 0b1011) = (18, 33, 11)

見てわかるように、変化はピクセルレベルでも気づかれません。モジュールはすべてのデータが画像に保存されるまでこれを繰り返します。

Data hidden in Raw Image

注意:写真のノイズが増加し、写真編集ソフトウェアを使用して元の画像と比較すると、この画像は元の画像よりもはるかにノイズが多くなります。

この問題の解決策:元の画像をインターネットにアップロード/共有しないこと

ToDo

  • JPEG画像のサポート追加
  • 抽出するファイル名の自動検出追加

ライセンス

MIT

自由ソフトウェア、最高!

ツールをダウンロード