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
AI駆動開発の実践とその未来
eltociear
2
490
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.1k
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
120
20251222_サンフランシスコサバイバル術
ponponmikankan
2
140
SREが取り組むデプロイ高速化 ─ Docker Buildを最適化した話
capytan
0
140
Claude Codeを使った情報整理術
knishioka
5
2.4k
オープンソースKeycloakのMCP認可サーバの仕様の対応状況 / 20251219 OpenID BizDay #18 LT Keycloak
oidfj
0
170
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
2
310
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.7k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
2
200
特別捜査官等研修会
nomizone
0
560
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
2
260
Featured
See All Featured
Tell your own story through comics
letsgokoyo
0
760
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
200
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
76
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
340
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
250
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
120
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
94
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
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