
🔍 LSBステガノグラフィのためのGoツール。画像内に任意のファイルを隠すことができます。
stegify は、任意のファイルを画像または画像群の中に完全に透過的に隠すことができるシンプルなコマンドラインツールです。この技法は LSB(最下位ビット)ステガノグラフィー として知られています。
| キャリア | データ | 結果 |
|---|---|---|
![]() | ![]() | ![]() |
Result ファイルには Data ファイルが隠されています。ご覧のとおり、完全に透過的です。
複数の Carrier ファイルが指定された場合、Data ファイルは断片に分割され、各断片がそれぞれのキャリアにエンコードされます。
| キャリア1 | キャリア2 | データ | 結果1 | 結果2 |
|---|---|---|---|---|
![]() |
Result1 ファイルには Data ファイルの半分が隠されており、Result2 には残りの半分が含まれています。いつも通り、完全に透過的です。
go install github.com/DimitarPetrov/stegify@latest
brew tap DimitarPetrov/stegify
brew install stegify
または、お使いのシステム用のバイナリをこちらからダウンロードできます。
stegify encode --carrier <file-name> --data <file-name> --result <file-name>
stegify decode --carrier <file-name> --result <file-name>
エンコード時、--data フラグで指定された名前のファイルが --carrier フラグで指定された名前のファイル内に隠され、結果のファイルはカレントワーキングディレクトリに --result フラグで指定された名前で新しいファイルとして保存されます。
注: 結果ファイルにはファイル拡張子が付かないため、
--resultフラグで明示的に指定する必要があります。
デコード時、以前にエンコードされたデータを含むキャリアファイルのファイル名が与えられると、データが抽出され、カレントワーキングディレクトリに --result フラグで指定された名前で新しいファイルとして保存されます。
注: 結果ファイルにはファイル拡張子が付かないため、
--resultフラグで明示的に指定する必要があります。
どちらの場合も、--result フラグは省略可能で、デフォルト値が使用されます。
stegify encode --carriers "<file-names...>" --data <file-name> --results "<file-names...>"
OR
stegify encode --carrier <file-name> --carrier <file-name> ... --data <file-name> --result <file-name> --result <file-name> ...
stegify decode --carriers "<file-names...>" --result <file-name>
OR
stegify decode --carrier <file-name> --carrier <file-name> ... --result <file-name>
複数のキャリアにデータファイルをエンコードする場合、データファイルは N 個のチャンクに分割されます。ここで N は指定されたキャリアの数です。各チャンクはそれぞれのキャリアにエンコードされます。
注: デコード時は、結果を正しく抽出するために、キャリアを 正確に 同じ順序で指定する必要があります。
この種のエンコードは、セキュリティの層を一つ追加し、サイズ制限に関してより柔軟性を提供します。
どちらの場合も、--result/--results フラグは省略可能で、デフォルト値が使用されます。
注: エンコード時、結果ファイルの数(指定する場合)はキャリアファイルの数と等しくなければなりません。デコード時は、結果は1つだけ期待されます。
複数のキャリアが混在したフラグで指定された場合、carrier フラグで指定された名前が最初に取得され、次に carriers/c フラグで指定されたものが取得されます。result/results フラグについても同様です。
stegify はプログラムからも使用でき、ファイル名または生の Reader や Writer を扱う使いやすい関数を提供します。詳細については、steg パッケージの godoc をご覧ください。
キャリアファイルが jpeg または jpg 形式の場合、エンコード後の結果ファイル画像は、結果フラグで指定されたファイル拡張子に関わらず、png 形式でエンコードされます(そのためサイズが大きくなる可能性があります)。
stegify は Codefest'19 の Capture The Flag チャレンジの一つで使用されました。
参加者には一見「無害な」猫の写真が与えられました。怪しいものは何もありませんよね?もう一度考えてみましょう!
![]() |
![]() |
![]() |
![]() |