Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LT資料_20190813.pdf
Search
stqp
August 13, 2019
Technology
0
180
LT資料_20190813.pdf
5分のLT発表で使ったスライドです。
MacOSXのBookmarkバイナリデータの構造について説明しました。
stqp
August 13, 2019
Tweet
Share
More Decks by stqp
See All by stqp
File System Forensic Analysis まとめ - chapter 3
stqp
0
540
Other Decks in Technology
See All in Technology
202512_AIoT.pdf
iotcomjpadmin
0
140
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
180
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
2
260
AI との良い付き合い方を僕らは誰も知らない
asei
0
250
障害対応訓練、その前に
coconala_engineer
0
190
Next.js 16の新機能 Cache Components について
sutetotanuki
0
180
AIBuildersDay_track_A_iidaxs
iidaxs
4
1.3k
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
170
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
1
760
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
140
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
140
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
150
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
It's Worth the Effort
3n
187
29k
Why Our Code Smells
bkeepers
PRO
340
57k
New Earth Scene 8
popppiees
0
1.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
260
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
51
43k
Faster Mobile Websites
deanohume
310
31k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
69
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
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