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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
75
フィード生成ツールの開発
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
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
170
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
340
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
290
高専キャリア LT 発表内容
crysta1221
6
5.5k
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
0
430
typoなんかねぇよ
raspython3
0
660
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
990
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
Building an Out-of-Order CPU
latte72
0
690
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
140
Featured
See All Featured
Between Models and Reality
mayunak
4
450
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
440
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
New Earth Scene 8
popppiees
3
2.5k
Code Review Best Practice
trishagee
74
20k
Designing for humans not robots
tammielis
254
26k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
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