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
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
630
Other Decks in Technology
See All in Technology
AIで楽になるはずが、なぜ疲れる?
kinopeee
0
120
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
160
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
4
610
データエンジニアリングとドメイン駆動設計
masuda220
PRO
15
2.7k
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
180
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
7
1.6k
QA・ソフトウェアテスト研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
3
1.3k
「休む」重要さ
smt7174
7
1.7k
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
300
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
2
680
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
550
データ活用研修 問いの発見と仮説構築【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
470
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Designing Experiences People Love
moore
143
24k
The browser strikes back
jonoalderson
0
1.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Product Roadmaps are Hard
iamctodd
55
12k
WCS-LA-2024
lcolladotor
0
760
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
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