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
0
160
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
370
Other Decks in Technology
See All in Technology
テストコードを書きながらCompose Multiplatformを乗りこなす
subroh0508
0
140
Laboratories in Science and Technology: Deep Neural Networks
keio_smilab
PRO
3
110
1Q86
kawaguti
PRO
2
190
回り回って効いてくる副次的効果としての技術広報/techpr
nishiuma
1
180
能動学習のいろは:書籍「Human-in-the-Loop機械学習」3〜5章
hiroyoshiito
0
290
Password cracking: past, present, future
openwall
0
260
[PyconUS 2024] Having fun with Pydantic and pattern matching
enforcerpl
0
130
複雑なビジネスルールに挑む:正確性と効率性を両立するfp-tsのチーム活用術 / Strike a balance between correctness and efficiency with fp-ts
kakehashi
5
3.5k
TiDBにおけるテーブル設計と最適化の事例
cygames
0
790
5分で分かる(かもしれない) Vector engine for OpenSearch Serverless
tsukuboshi
1
400
令和版ソフトウェアエンジニアの情報収集術 PHPカンファレンス香川2024
ysknsid25
4
880
Databricksの生成AI戦略
taka_aki
1
370
Featured
See All Featured
Statistics for Hackers
jakevdp
790
220k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
Documentation Writing (for coders)
carmenintech
60
4k
Design by the Numbers
sachag
274
18k
What's in a price? How to price your products and services
michaelherold
238
11k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
67
14k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
We Have a Design System, Now What?
morganepeng
43
6.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
The Invisible Customer
myddelton
114
12k
Building Adaptive Systems
keathley
32
1.9k
How GitHub (no longer) Works
holman
305
140k
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