Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
jdvrif — JPG画像向けステガノグラフィツール | Kitploit
ツール/GitHubGitHub/cleasbycode/jdvrif
暗号化/復号化ツールデータ流出フォレンジックステガノグラフィー暗号化プライバシー
GitHubcleasbycode/jdvrif

jdvrif

JPG画像向けステガノグラフィツール

リポジトリを見る
691355日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

jdvrif

jdvrif (JPG Data Vehicle) は、JPG 画像を介してあらゆるファイルタイプを隠蔽・抽出するための、高速で使いやすいステガノグラフィー用コマンドラインツールです。Linux 専用です。

データファイルは libdeflate/zlib で圧縮され、次にランダムに生成された リカバリー PIN から Argon2id で導出された鍵の下で XChaCha20-Poly1305 (libsodium secretstream) により暗号化され、最後にカバー画像に埋め込まれます。PIN は conceal の最後に一度だけ表示され、どこにも保存されません。PIN がなければ、隠蔽されたファイルを復元することはできません。

デフォルトの conceal モードを使用すると、あらゆるファイルタイプを隠蔽でき、完成した画像は最大 2GiB に制限されます。その他のプラットフォーム向け conceal モードや、対応するソーシャルメディアサイト (以下に記載) には、それぞれ独自の はるかに小さい サイズ制限やその他の要件があります。

jdvrif には Web 版 があり、CLI ソースコードをダウンロードしてコンパイルする代わりに、すぐに使用できる便利な選択肢として利用できます。Web でのファイルアップロードは 20MiB に制限されています。

この言語に興味がある方向けに、実験的な Rust 移植版 jdvrif-rs も利用可能です。フォーマット互換性があり、どちらのビルドでも相手側の画像を復元できます。

jdvrif は、セキュリティ研究者 David Buchanan によって 実装された手法 に部分的に由来しています。

Demo Image
デモ画像: 「隠蔽の場所」 / PIN: 7912872750612437051

jdvrif がデータを隠蔽する仕組み

カバー画像のピクセル内にデータを隠蔽する一般的な LSB (最下位ビット) ステガノグラフィー手法とは異なり、jdvrif は主に JPG 画像の アプリケーションセグメント (ICC、EXIF、XMP など) 内にデータを隠します。

Conceal モードデータの格納先出力画像の共有先
(オプションなし)APP2/ICC プロファイルセグメントX-Twitter、Tumblr、Mastodon、Pixelfed、PostImage、ImgBB、ImgPile、Flickr
-bフレーム化された EXIF / Photoshop / XMP セグメントBluesky のみ
-rJPEG DCT 係数 (QIM)Reddit のみ
-xJPEG DCT 係数 (J-UNIWARD/STC)X-Twitter のみ

デフォルトのセグメント格納方式に対する 2 つのプラットフォーム例外は Reddit と X-Twitter です。どちらも独自の conceal モードを持ち、これらのモードはいずれもメタデータセグメントをまったく使用しません。-r と -x は代わりに JPG 画像の DCT 係数にペイロードを格納します。

Reddit はアップロードされた画像を再エンコードし、デフォルトモードが依存するメタデータセグメントを破棄するため、-r がそこでは唯一機能するモードです。X-Twitter は単一の小さな ICC セグメントを保持するため、デフォルトモードはそのプラットフォームでも引き続き機能しますが、ごく小さなペイロードに限られます。

Reddit 向け conceal モード (-r) では、QIM ステガノグラフィー手法 (JPEG DCT ドメイン量子化インデックス変調) を使用します。これは現在 Reddit で機能する唯一の格納方式であるためです。カバーはベースライン Q75 4:2:0 にトランスコードされ、ペイロードはその輝度 DCT ブロックに格納されます。

Reddit プラットフォーム向けにストレージ容量を最大化するには、大きな寸法のカバー画像 (2048x2048、4096x4096、8192x8192 (最大) など) を使用してください。

この手法ではカバー画像の品質は重要ではなく、カバー画像のファイルサイズを最小化するために、最大寸法では基本的な品質に保つべきです。

X-Twitter プラットフォームは、データが APP2/ICC セグメント内に隠蔽される jdvrif のデフォルト方式を使用できますが、X-Twitter はこれを最大サイズがわずか ~10KiB の単一 ICC セグメントに制限します。

~10KiB を超えるデータを格納するには、X-Twitter プラットフォーム隠蔽モード (-x) を使用します。このモードはメタデータセグメントを完全に放棄し、ICC プロファイルには何も書き込まず、代わりに Syndrome-Trellis Coding (STC) を用いた適応型 J-UNIWARD ステガノグラフィ手法 を使用します。カバー画像は、そのソース由来の品質 (Q97 を上限とする) でプログレッシブ 4:2:0 にトランスコードされます。

X-Twitter プラットフォーム向けにストレージ容量を最大化するには、大きな寸法サイズ (1024x1024、2048x2048、4096x4096 (最大) など) を持つ高品質で詳細なカバー画像を使用してください。

-r および -x キャリアはデータを暗号化し、その位置を Argon2id を用いてリカバリ PIN にキー付けしますが、埋め込みは依然として画像の DCT 統計を変化させるため、専用のステガナリシスによって画像が隠しデータを運んでいることが明らかになる可能性があります。

jdvrif v9.0 で作成された -r および -x 画像は引き続き復元可能ですが、v9.0 は v9.1 で作成された -r または -x 画像を復元できません。

両方の DCT モードはデフォルトモードよりもはるかに少ないデータしか運べないため、ペイロードを選択する前に capsize を使用してカバー画像を測定してください (容量の確認 を参照)。

要件とコンパイル (Linux)

ビルドには CMake 3.20 以降、util-linux の flock、および Ninja (推奨) または Make のいずれかが必要です。コンパイラは GCC 14 以降、または std::format や std::print などの機能を実装した C++23 標準ライブラリと組み合わせた Clang 18 以降である必要があります。必要なネイティブライブラリは libsodium、libjpeg-turbo (turbojpeg と libjpeg の両方の API)、zlib、libdeflate です。OpenMP はオプションです。存在する場合、-x J-UNIWARD コストパスを並列化します。

$ sudo apt update
$ sudo apt install g++ cmake ninja-build util-linux libsodium-dev libturbojpeg0-dev libjpeg-dev zlib1g-dev libdeflate-dev

$ g++ --version   # confirm the reported version is 14 or newer

$ chmod +x compile_jdvrif.sh
$ ./compile_jdvrif.sh

$ sudo cp jdvrif /usr/bin

ディストリビューションが GCC 14 をバージョン付きパッケージとして提供している場合は、g++-14 をインストールし、CXX=g++-14 ./compile_jdvrif.sh でビルドしてください。

このラッパーは依存関係を追跡したオブジェクトファイルを src/build/ 配下に保持するため、以降の呼び出しでは変更された部分のみが再ビルドされ、公開済みの jdvrif バイナリは完全かつ成功したビルドの後にのみ置き換えられます。並列度の上限を変更するには JDVRIF_JOBS=<count> を設定し(デフォルト: CPU 数、最大 8)、別のビルドキャッシュを使用するには JDVRIF_BUILD_DIR=<path> を設定するか、ASan/UBSan ビルドには BUILD_MODE=sanitize を設定してください。

使用方法

$ jdvrif

Usage: jdvrif conceal [-b|-r|-x] <cover_image> <secret_file>
       jdvrif recover <cover_image>
       jdvrif capsize [-r|-x] <cover_image>
       jdvrif --info

jdvrif --info を実行すると、モード、プラットフォームオプション、サイズ制限に関する完全な組み込みガイドが表示されます。

$ jdvrif conceal your_cover_image.jpg your_secret_file.doc

Platform compatibility for output image:-

 ✓ X-Twitter
 ✓ Tumblr
 ✓ Mastodon
 ✓ Pixelfed
 ✓ PostImage
 ✓ ImgBB
 ✓ ImgPile
 ✓ Flickr

Recovery PIN: [***2166776980318349924***]

Important: Keep your PIN safe, so that you can extract the hidden file.


Saved "file-embedded" JPG image: jrif_4e87c566c.jpg (143029 bytes).

Complete!

$ jdvrif recover jrif_4e87c566c.jpg

PIN: *******************

Extracted hidden file: your_secret_file.doc (6165 bytes).

Complete! Please check your file.

jdvrif mode 引数:

conceal - 秘密データファイルを圧縮・暗号化し、JPG カバー画像内に埋め込みます。
recover - JPG カバー画像から隠蔽されたデータファイルを復号・解凍・抽出します(復元 PIN が必要)。
capsize - -r または -x モードにおけるカバー画像の収容容量を報告します。画像は保存されません。

カバー画像の要件:

● JPEG のみ、最低 400x400 ピクセル、グレースケールまたは YCbCr カラーのいずれか — CMYK/YCCK 画像は事前に RGB へ変換する必要があります。

● デフォルトおよび -b の上限寸法は 4096x4096px です。-r は 8192x8192px を使用し、-x も 4096x4096px に制限されます。

● デフォルトモード(オプションなし)では、推定 JPEG 品質が Q97 を超えるカバー画像も拒否されます。拒否された場合は、より低い品質で画像を再保存してください。

秘密データファイルの要件:

● 埋め込まれるファイル名は 20 バイト以内でなければならず、. または - で始まること、スペースまたは . で終わることはできません。また、制御文字や双方向書式文字、/ \ : * ? " < > | のいずれも含まない有効な UTF-8 である必要があります。名前は画像内に保存され、recover 時に復元されます。

● データファイルは暗号化前に圧縮されますが、既に圧縮済みと認識されるファイル形式(.zip、.7z、.mp4、.jpg、.png など)は除きます。デフォルトおよび -b モードでは、これらの形式は 10MiB より大きい場合にのみ圧縮をスキップします。-r および -x モードでは常にスキップします。小さいプラットフォームの制限に合わせて送るその他のファイルについては、保存後の正確なサイズを把握できるよう、事前に自身で圧縮することを検討してください(zip、rar、7z など)。

対応プラットフォーム

******************
注: Bluesky は現在、画像をデフォルトで WEBP として保存します。

jdvrif で隠蔽データを引き続き復元できるよう、画像を JPG として保存するには:

まず投稿内の画像をクリックして開き、その画像を右クリックします。メニューから 新しいタブで画像を開く を選択します。

新しいタブを選択し、アドレスバー内でアドレスの末尾に移動して @jpg を追加し、Enter キーを押します。
画像を右クリックし、メニューから 画像を保存... を選択します。

これで画像が JPG としてダウンロードされ、jdvrif で動作するようになります。

Bluesky に投稿するために WEBP 画像を使ってデータを隠蔽するツールが必要な場合は、私の WEBP ステガノグラフィ CLI ツール wbpdv を使用できます。
******************

投稿サイズ制限は、カバー画像 + 圧縮データファイル の 合計 サイズで測定されます:

● Flickr(200MiB)、ImgPile(100MiB)、ImgBB(32MiB)、PostImage(32MiB)、Pixelfed(15MiB)。

サイズ制限は 圧縮データファイルのサイズのみ で測定されます:

● Mastodon (~6MiB)、Tumblr (~64KiB)、X-Twitter (~10KiB / デフォルト方式)。

例えば Mastodon では、カバー画像が 1MiB であっても、~6MiB のサイズ制限までデータファイルを埋め込むことができます。

その他: 独自の conceal モードを持つプラットフォーム:

ツールをダウンロード