Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
写真に埋め込まれた音声データを救出せよ
Search
R SATO
March 14, 2026
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
写真に埋め込まれた音声データを救出せよ
小江戸らぐ 第284回活動報告会
https://koedolug.connpass.com/event/385833/
R SATO
March 14, 2026
More Decks by R SATO
See All by R SATO
【ジャンク品】ドンキUMPCの活用
rsato
1
69
フィード生成ツールの開発
rsato
0
200
YouTubeの動画を高画質でダウンロードしよう
rsato
0
480
ランダムな文字列を判定するには?
rsato
0
440
Review for SanDisk, Kingston, and Lexar's SD Card faster than UHS-I (max speed: 104MB/s)
rsato
0
370
Factorioのすすめ (Short Introduction to Factorio)
rsato
0
380
パスワードマネージャーのLinux対応状況を調べる
rsato
0
120
タイムラプスビデオの作り方 / How to create Time-lapse video
rsato
1
630
Other Decks in Programming
See All in Programming
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
810
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
110
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
210
源内ハンズオン概要編
hideg
0
190
Cloudflare is Agents
chimame
0
170
React本体のコードリーディング
high_g_engineer
1
150
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
540
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
5
1.9k
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
420
Featured
See All Featured
Crafting Experiences
bethany
1
250
Google's AI Overviews - The New Search
badams
0
1.1k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
870
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Leo the Paperboy
mayatellez
8
2.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
Mind Mapping
helmedeiros
PRO
1
320
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
4 Signs Your Business is Dying
shpigford
187
23k
Transcript
写真に埋め込まれた音声 データを救出せよ R SATO(佐藤 玲) 2026/3/14 小江戸らぐ 第284 回活動報告会 1
ソニーのカメラはアプリが入った(過去形) • 「 PlayMemories Camera Apps 」 • 2012 年~2016
年のカメラが対応 • NEX-6~α6500/α7S II など • RX100 III ~ RX100 Vなど • アプリストアまたはカメラから直 接購入・インストール可能 • 決済はスマホか PCから • 約30のアプリ • タイムラプス、多重露光、フォ トレタッチ、 POBox など • 2025 年8 月31日にサービス終了 2026/3/14 小江戸らぐ 第284 回活動報告会 2
2026/3/14 小江戸らぐ 第284 回活動報告会 3
サウンドフォト • 撮影した前後の音を録音できるアプリ • 録音タイミングはシャッター前も可能 • 音声データは カメラ内の本アプリまたは PlayMemories Online
で再生可能 2026/3/14 小江戸らぐ 第284 回活動報告会 4
写真に埋め込まれた音声データを救出せよ • PlayMemories Online は2025 年8月31日にサービス終了 • カメラのアプリは初期化すると消えてしまう • 二度とインストールできない
• カメラが故障したり、手放したら? • 撮影した音声データが聴けなく なる! 2026/3/14 小江戸らぐ 第284 回活動報告会 5
Document Freedom Day • オープンスタンダードとオープンドキュメント形式の普及・啓 発を目的とした世界的な記念日 • 2026 年は3月25日 •
文書・スプレッドシートだけでなく 音声・映像など、あらゆる デジタルデータが対象 logo DFD Colored 2026/3/14 小江戸らぐ 第284 回活動報告会 6 https://digitalfreedoms.org/en/ document -freedom -day
音声データはどこ?形式は? 1. JPEG内のメタデータ (EXIF) 2. SDカード内の隠しフォルダ 3. カメラ内アプリ領域 4. 画像部分にステガノグラ
フィ a. MP3 b. MP4 c. AAC d. ATRAC3 2026/3/14 小江戸らぐ 第284 回活動報告会 7
JPEGファイルの解析 (1) • とりあえず exiftool で見る • 何か独自データらしい部分が …? $
exiftool -a –u _DSC2367.JPG ExifTool Version Number : 12.76 File Name : _DSC2367.JPG Directory : . File Size : 20 MB : Sony 0x9407 : 7f e7 b4 7f b7 fc bb b7 f2 45 75 4b fe 6f 3f 26 4d 5e b[...] Sony 0x9408 : 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0[...] Sony 0x9409 : 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0[...] : 2026/3/14 小江戸らぐ 第284 回活動報告会 8
JPEGファイルの解析 (2) • 怪しいタグのデータは 1000 バイトと小さい • MP3のシグネチャである 49 44
33 03 (ID3) ではない • 他の値も音声データのシグネチャなし $ exiftool -htmlDump _DSC2367.JPG > _DSC2367.JPG.html 2026/3/14 小江戸らぐ 第284 回活動報告会 9
ファイル末尾に怪しいブロック • SD_HEADと SD_FOOTで挟まれたエリアに WAVEファイルぽい データ を確認 • シグネチャは 52
49 46 46 ?? ?? ?? ?? 57 41 56 45 (RIFF???WAVE) • サイズは約 2MB 2026/3/14 小江戸らぐ 第284 回活動報告会 10
データ抜き出し • JPEGファイルから当該部分のオフセット を取得して dd で出力 • WAVEのRIFFヘッダからサイズ情報 を元にdd で出力
$ HEAD=$(grep -oba 'SD_HEAD' _DSC2367.JPG | head -1 | cut -d: -f1) $ FOOT=$(grep -oba 'SD_FOOT' _DSC2367.JPG | head -1 | cut -d: -f1) $ dd if=_DSC2367.JPG offset=$HEAD count=$((FOOT-HEAD)) of=sd_area.bin $ RIFF_OFFSET=$(grep -oba 'RIFF' sd_area.bin | head -1 | cut -d: -f1) $ SIZE_HEX=$(dd if=sd_area.bin bs=1 skip=$((RIFF_OFFSET+4)) count=4 2>/dev/null | xxd -p) $ SIZE_DEC=$((0x$SIZE_HEX)) $ RIFF_TOTAL=$((SIZE_DEC + 8)) $ dd if=sd_area.bin bs=1 skip=$RIFF_OFFSET count=$RIFF_TOTAL of=audio.wav $ file audio.wav audio.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz 2026/3/14 小江戸らぐ 第284 回活動報告会 11
データ抜き出し図 • dd のbs=1なのでむっちゃ遅い (別の方法を模索 ) • tail/head で削るほうが速い •
一連の処理を汎用化して GitHub に公開予定 2026/3/14 小江戸らぐ 第284 回活動報告会 12 JFIF SD_HEAD SD_FOOT HEAD FOOT RIFF (Chunk) (Chunk size) (Payload) RIFF_OFFSET RIFF_OFFSET + RIFF_TOTAL Chunk size + 8
Take Back Control & Breakthrough 2026/3/14 小江戸らぐ 第284 回活動報告会 13