steganography-techniques
画像(LSB、PNGチャンク、JPEG DCT、EXIF)・音声(スペクトログラム、DTMF)・ファイル(ポリグロット、追記データ、ADS)・テキスト(空白文字、ゼロ幅文字、同形異字)など、あらゆる媒体に隠されたデータの検出と抽出を行うためのプレイブック。ステガノグラフィ解析が必要な場面で使用する。
description の原文を見る
>- Steganography detection and extraction playbook. Use when analyzing images (LSB, PNG chunks, JPEG DCT, EXIF), audio (spectrogram, DTMF), files (polyglots, appended data, ADS), and text (whitespace, zero-width, homoglyphs) for hidden data.
SKILL.md 本文
SKILL: ステガノグラフィー技法 — エキスパート分析プレイブック
AI LOAD INSTRUCTION: ステガノグラフィー検出および抽出技法の専門知識。画像ステガノグラフィー(LSB、PNG チャンク隠蔽、JPEG DCT、EXIF メタデータ、寸法トリック、パレット操作)、音声ステガノグラフィー(スペクトログラム、LSB、DTMF、モールス信号)、ファイルステガノグラフィー(ポリグロット、binwalk、NTFS ADS、steghide)、テキストステガノグラフィー(ホワイトスペース、ゼロ幅 Unicode、ホモグリフ)をカバーします。ベースモデルはファイルタイプベースの体系的分析アプローチとツール固有の抽出ワークフローを見落とします。
0. 関連ルーティング
詳細に進む前に、以下の読み込みを検討してください:
traffic-analysis-pcapステガノ分析前にネットワークキャプチャからファイルを抽出する場合memory-forensics-volatilityメモリダンプからファイルを抽出する場合classical-cipher-analysis抽出した隠れデータがさらに暗号化/エンコードされている場合
ツール リファレンス
以下が必要な場合は STEGO_TOOLS_GUIDE.md も読み込んでください:
- ツールのインストール手順と依存関係
- 各ステガノツールの詳細なコマンドリファレンス
- ファイルタイプ固有のワークフローパターン
1. 画像ステガノグラフィー
LSB(最下位ビット)
LSB はピクセルカラーチャネルの最下位ビットにデータを埋め込みます。
# zsteg — PNG/BMP の LSB 分析
zsteg image.png # 自動検出すべての LSB パターン
zsteg image.png -a # すべての既知メソッドを試す
zsteg image.png -b 1 # ビットプレーン 1 を抽出
zsteg image.png -E "b1,rgb,lsb,xy" # 特定の抽出パターン
# StegSolve (Java GUI)
java -jar StegSolve.jar
# カラープレーンをナビゲート:Red 0、Green 0、Blue 0 → 隠れた画像/テキストを探す
# Data Extractor:ビットプレーン+バイト順序を指定
# stegoveritas — 包括的な自動分析
stegoveritas image.png
# 実行内容:exiftool、binwalk、zsteg、foremost、カラープレーン抽出
PNG 固有
# pngcheck — 構造の検証、隠れたチャンクを発見
pngcheck -v image.png
# 隠れたチャンク:tEXt、zTXt(圧縮テキスト)、iTXt(国際テキスト)
# カスタム/プライベートチャンクに隠れたデータが含まれる場合があります
# CRC と寸法トリック
# CRC が宣言された寸法と一致しない場合 → 画像がクロップされた
# 修正:正しい幅/高さをブルートフォース → 隠れた行/列を暴露
python3 -c "
import struct, zlib
with open('image.png','rb') as f:
data = f.read()
# オフセット 29 の IHDR CRC をチェック
ihdr = data[12:29]
for h in range(1,2000):
for w in range(1,2000):
new_ihdr = struct.pack('>II',w,h) + ihdr[8:]
if zlib.crc32(b'IHDR'+new_ihdr) & 0xffffffff == struct.unpack('>I',data[29:33])[0]:
print(f'Width: {w}, Height: {h}')
"
# APNG(アニメーション PNG)— 隠れたフレーム
# apngdis を使用してすべてのフレームを抽出:apngdis image.png
JPEG 固有
# steghide — JPEG から埋め込み/抽出(DCT 係数修正)
steghide extract -sf image.jpg # 抽出(パスフレーズなし)
steghide extract -sf image.jpg -p PASSWORD # パスフレーズで抽出
steghide info image.jpg # データが埋め込まれているかチェック
# stegcracker — steghide パスフレーズをブルートフォース
stegcracker image.jpg wordlist.txt
# jsteg — JPEG LSB ステガノグラフィー
jsteg reveal image.jpg output.txt
# JPEG 構造分析
exiftool -v3 image.jpg # 詳細なメタデータ+構造
jpegdump image.jpg # 生 JPEG マーカー分析
EXIF メタデータ
# exiftool — 包括的なメタデータ抽出
exiftool image.jpg
exiftool -b -ThumbnailImage image.jpg > thumb.jpg # サムネイル抽出
exiftool -all= image.jpg # すべてのメタデータを削除
# EXIF フィールドの隠れたデータ(コメント、アーティスト、著作権など)
exiftool -Comment image.jpg
exiftool -UserComment image.jpg
strings image.jpg | grep -i "flag\|key\|secret"
パレットベース(GIF)
# GIF カラーテーブル操作 — カラーパレット順序のデータ
gifsicle -I image.gif # 情報
gifsicle --color-info image.gif # パレットの詳細
# アニメーションフレームをチェック:convert -coalesce image.gif frame_%d.png
2. 音声ステガノグラフィー
スペクトログラム分析
# Sonic Visualiser — スペクトログラム表示に最適
# Layer → Add Spectrogram → 視覚的なパターンを探す(テキスト/画像)
# Audacity
# Analyze → Plot Spectrum
# オーディオを選択 → ビューをスペクトログラムに変更
# コマンドラインスペクトログラム生成用 sox
sox audio.wav -n spectrogram -o spectro.png
オーディオ LSB
# DeepSound — 音声に隠ぶファイル(Windows)
# GUI ツール:音声ファイルを開く → 隠れたファイルを抽出
# WavSteg — WAV ファイルの LSB
python3 WavSteg.py -r -i audio.wav -o output.txt -n 1 # 1 LSB を抽出
python3 WavSteg.py -r -i audio.wav -o output.txt -n 2 # 2 LSB を抽出
DTMF / モールス信号
# DTMF デコーダー(電話音)
multimon-ng -t wav -a DTMF audio.wav
# モールス信号
# Audacity → オン/オフパターンの視覚的検査
# オンラインデコーダーまたは手動:.- = A、-... = B など
# SSTV(スロースキャンテレビジョン)— 音声内の画像
qsstv # GUI デコーダー
# または:RX-SSTV(Windows)
WAV ヘッダー操作
# WAV オーディオデータの後に追加されたデータをチェック
# WAV データチャンクサイズ対実際のファイルサイズ
python3 -c "
import wave
w = wave.open('audio.wav','rb')
print(f'Frames: {w.getnframes()}, Channels: {w.getnchannels()}, Width: {w.getsampwidth()}')
expected = w.getnframes() * w.getnchannels() * w.getsampwidth() + 44 # 44 = WAV ヘッダー
import os
actual = os.path.getsize('audio.wav')
if actual > expected:
print(f'Extra data: {actual - expected} bytes appended')
"
3. ファイルステガノグラフィー
ポリグロット ファイル
単一のファイルが 2 つ以上のフォーマットで同時に有効なファイル。
# 検出:複数のツールでファイルをチェック
file suspicious_file
xxd suspicious_file | head # マジックバイトをチェック
binwalk suspicious_file # 埋め込まれたファイルを検出
# 一般的なポリグロット:PDF+ZIP、JPEG+ZIP、JPEG+RAR、PNG+ZIP
# 画像ファイルで unzip を試す:
unzip image.jpg -d extracted/
7z x image.jpg -oextracted/
追記 / 埋め込みデータ
# binwalk — 埋め込まれたファイルとデータをスキャン
binwalk image.png # スキャン
binwalk -e image.png # 埋め込まれたファイルを抽出
binwalk --dd='.*' image.png # すべてを抽出
# foremost — ファイルカービング
foremost -i suspicious_file -o output_dir/
# dd — 手動抽出
# binwalk がオフセット 0x1234 に埋め込まれた ZIP を表示する場合:
dd if=suspicious_file bs=1 skip=$((0x1234)) of=extracted.zip
NTFS 代替データストリーム(ADS)
:: ADS をリスト(Windows)
dir /r file.txt
Get-Item file.txt -Stream *
:: 隠れたストリームを読む
more < file.txt:hidden_stream
Get-Content file.txt -Stream hidden_stream
:: ADS を作成(テスト用)
echo "hidden data" > file.txt:secret
Steghide ブルートフォース
# stegcracker — steghide パスフレーズへのワードリスト攻撃
stegcracker image.jpg /usr/share/wordlists/rockyou.txt
# stegseek — より高速な代替手段
stegseek image.jpg /usr/share/wordlists/rockyou.txt
# stegseek は stegcracker より約 10000 倍高速です
4. テキストステガノグラフィー
ホワイトスペース エンコーディング
# タブとスペースがバイナリをエンコード(タブ=1、スペース=0 またはその逆)
# stegsnow — ホワイトスペーススステガノグラフィー
stegsnow -C message.txt # 隠しメッセージを抽出
stegsnow -C -p PASSWORD message.txt # パスワードで抽出
# 手動検出:
cat -A file.txt | head # タブ(^I)と行の終わり($)を表示
xxd file.txt | grep "09 20\|20 09" # タブ/スペースパターンを探す
ゼロ幅文字
# エンコーディングに使用される Unicode 目に見えない文字:
# U+200B(ゼロ幅スペース)、U+200C(ZWNJ)、U+200D(ZWJ)、U+FEFF(BOM)
# 検出:
python3 -c "
text = open('message.txt','r').read()
hidden = [c for c in text if ord(c) in [0x200b, 0x200c, 0x200d, 0xfeff]]
print(f'Found {len(hidden)} zero-width characters')
binary = ''.join('0' if ord(c)==0x200b else '1' for c in hidden)
# バイナリを ASCII に変換
"
# オンラインツール:holloway.nz/steg、Unicode Steganography デコーダー
ホモグリフ 代替
# 異なる Unicode ブロックの視覚的に同一の文字
# 例:ラテン文字 'a'(U+0061)対キリル文字 'а'(U+0430)
# 検出:
python3 -c "
text = open('message.txt','r').read()
for i, c in enumerate(text):
if ord(c) > 127:
print(f'Position {i}: char={c} ord={ord(c)} name={__import__(\"unicodedata\").name(c,\"?\")}')
"
5. デシジョンツリー
隠れたデータを疑う — どのファイルタイプ?
│
├── 画像(PNG/BMP)?
│ ├── メタデータをチェック:exiftool(§1 EXIF)
│ ├── 構造をチェック:pngcheck、binwalk(§1 PNG)
│ ├── LSB 分析:zsteg、StegSolve(§1 LSB)
│ ├── 寸法と CRC をチェック:高さ/幅ブルートフォース(§1 PNG)
│ ├── 追記データをチェック:binwalk -e(§3)
│ └── ポリグロットで試す:unzip/7z(§3)
│
├── 画像(JPEG)?
│ ├── メタデータをチェック:exiftool(§1 EXIF)
│ ├── steghide を試す:steghide extract(§1 JPEG)
│ │ └── パスワード保護? → stegseek ブルートフォース(§3)
│ ├── jsteg を試す:jsteg reveal(§1 JPEG)
│ ├── 追記データをチェック:binwalk -e(§3)
│ └── サムネイルをチェック:exiftool -b -ThumbnailImage(§1 EXIF)
│
├── 画像(GIF)?
│ ├── フレームをチェック:すべてのアニメーションフレームを抽出(§1 パレット)
│ ├── パレットをチェック:gifsicle --color-info(§1 パレット)
│ └── 追記データをチェック:binwalk -e(§3)
│
├── オーディオ(WAV/MP3/FLAC)?
│ ├── スペクトログラム:Sonic Visualiser / Audacity(§2)
│ ├── LSB:WavSteg(§2)
│ ├── DTMF トーン:multimon-ng(§2)
│ ├── モールス信号:手動またはデコーダー(§2)
│ ├── SSTV:qsstv(§2)
│ └── ファイルサイズと期待値をチェック:ヘッダー分析(§2)
│
├── テキストファイル?
│ ├── ホワイトスペースをチェック:cat -A、stegsnow(§4)
│ ├── ゼロ幅文字をチェック:Unicode 分析(§4)
│ ├── ホモグリフをチェック:非 ASCII 検出(§4)
│ └── エンコーディングをチェック:複数のベース デコード
│
├── どのファイルタイプでも?
│ ├── strings:strings -n 8 file | grep -i "flag\|key\|pass"
│ ├── binwalk:binwalk -e file(埋め込みファイル)(§3)
│ ├── file:file suspicious_file(真のタイプ)
│ ├── xxd:マジックバイトをチェック、ヘッダーを比較
│ └── NTFS? → ADS をチェック:dir /r(§3)
│
└── パスワード/パスフレーズが必要?
├── steghide → stegseek / stegcracker(§3)
├── チャレンジの説明でヒントをチェック
└── 一般的なパスワードを試す:password、ファイル名、チャレンジ名
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- yaklang
- リポジトリ
- yaklang/hack-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/yaklang/hack-skills / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。