Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LT資料_20190813.pdf
Search
stqp
August 13, 2019
Technology
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LT資料_20190813.pdf
5分のLT発表で使ったスライドです。
MacOSXのBookmarkバイナリデータの構造について説明しました。
stqp
August 13, 2019
More Decks by stqp
See All by stqp
File System Forensic Analysis まとめ - chapter 3
stqp
0
640
Other Decks in Technology
See All in Technology
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
180
beyond jj: config & tools ecosystem
indirect
0
5.8k
おい、エージェントを使って終わらせろ
nwiizo
2
850
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
210
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.7k
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.6k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
370
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
440
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
170
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.3k
Antigravity SDK for the Java Developer
glaforge
0
170
Featured
See All Featured
New Earth Scene 8
popppiees
4
2.6k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
240
A designer walks into a library…
pauljervisheath
211
25k
Become a Pro
speakerdeck
PRO
31
6.3k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
530
Unsuck your backbone
ammeep
672
58k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
Transcript
Mac OS X Bookmark フォーマットの話 Sosuke Tokuda (@stqp)
⾃⼰紹介 • Sosuke Tokuda (@stqp) • インフラ/アプリやってます。 今⽇はMacOSXのBookmarkデータ構造を紹介します。
きっかけはMacMRU • MacのMRU収集ツール • https://github.com/mac4n6/macMRU-Parser • 開発者は Mac4n6。リリース記事が2016年に出ています。 • https://www.mac4n6.com/blog/2016/7/10/new-script-macmru-
most-recently-used-plist-parser • Plist、ShareFileList を探して中⾝を解析するツールです。 • その際 Bookmark Data を解析してMRU情報を抽出しています。
None
処理対象のファイルパス
処理結果
Blobに関するボリューム情報
blobに関連するファイルのパス blobに関連するファイルの作成時刻
What is Bookmark Data? • Plist、ShareFileListファイルに含まれるバイナリデータ • ※当スライドではblobと呼ぶことにします • 例えば最近開いたファイルのパスなどが含まれています。
• 公式の仕様は分かりません(少なくとも調べた感じだと..)。 • 誰かが頑張ってリバースエンジニアリングしてくれています。 • https://github.com/al45tair/mac_alias/blob/master/doc/bookm ark_fmt.rst
Bookmark Format ※ ()の中はバイト数 ヘッダー (48) ボディー
Header ボディー マジック (4) 総合サイズ (4) Unkown (4) ヘッダサイズ (4)
※ ()の中はバイト数
Header ボディー マジック (4) 総合サイズ (4) Unkown (4) ヘッダサイズ (4)
予約 (32) ※ ()の中はバイト数
Body ヘッダー(48) TOCオフセット(4) ※ ()の中はバイト数
Body ヘッダー(48) TOCオフセット(4) TOC ① ※ ()の中はバイト数
Body ヘッダー(48) TOCオフセット(4) TOC ① TOC ② TOC ③ ※
()の中はバイト数
What is TOC? • Table Of Content の略 • Bookmarkの実データを管理するためのテーブル
• テーブルはエントリーへの参照を保持しています。 • そしてエントリーは実データへの参照を保持しています。
TOC Structure ヘッダー(48) TOC TOC Entry① ※ ()の中はバイト数 TOC Entry②
Data Data
TOC TOCサイズ(4) マジック(4) ※ ()の中はバイト数 識別⼦(4) 次のTOCへの オフセット(4) TOC Entry総数(4)
TOC Entry キー(4) 実データへの オフセット(4) 予約(4)
TOC Entry Data ※ ()の中はバイト数 Dataサイズ(4) Dataタイプ(4) Data データタイプはさまざま。 •
⽂字列 • バイト • 数値 • ⽇付 • 配列(etc)
So How to Parse Bookmark? Use this. ・オリジナル https://github.com/al45tair/mac_alias/blob/master/mac_alias /bookmark.py
・理解しやすく⾃分で書き直した版 https://github.com/stqp/mac-mru/blob/master/bookmark.py
End