87 Commits
Author SHA1 Message Date
tkgstrator 8dd57e48e7 chore: add MIT license 2026-08-09 21:26:57 +09:00
f7a61c1fe3 chore: enable WakaTime in devcontainer (#2)
Pass WAKATIME_API_KEY through remoteEnv and install the WakaTime
VS Code extension so coding activity is tracked inside the container.
Extension lists are sorted alphabetically.

Co-authored-by: tkgstrator <tkgstrator@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-07 05:59:04 +09:00
dc77be0e63 chore(devcontainer): sync from qtmleap/devcontainers (swift-ios-tweak) (#1)
Source: qtmleap/devcontainers@b0d0804
Template: examples/swift-ios-tweak/

Co-authored-by: tkgstrator <tkgstrator@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-18 04:29:21 +09:00
tkgstrator 198835d369 feat(auth): dump large HMAC inputs and keys for analysis
Adds logic to save data, key, and signature blobs to temporary files
when HMAC is invoked with inputs larger than 1KB. Facilitates
debugging and inspection of large authentication payloads,
such as app boot requests.
2026-04-09 09:29:10 +00:00
tkgstratorandClaude Sonnet 4.6 a3dbe6c647 feat(tweak): add NetflixEntityAuth tweak to capture entity_auth_data values
Hooks IosMGKAuthData constructor (MslClient offset 0xd45c), NFWebCrypto HMAC
one-shot, NSData file reads, and MslRegistration getDeviceTokensWithCallback:
to capture identity (ESN), appid, appkeyversion, apphmac, and devicetoken at
appboot time. Logs to NSTemporaryDirectory() and /var/tmp via dual file_log.
Verified loading and HMAC capture on device (iOS 15.8.3 Dopamine rootless).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 09:13:26 +00:00
tkgstratorandClaude Opus 4.6 b8b27b1ef9 feat(re): appboot署名検証鍵を抽出し未知の値の調査レポートを作成
- kAppBootKey (RSA-4096) / kAppBootEccKey (P-256) / kSharkBootKey を
  NFWebCrypto.framework から静的抽出し constants.py に追加
- DH prime p は MslClient.framework @ 0x001265a0 で確認済み
- apphmac / devicetoken / device_key_data はランタイム生成と判明
- docs/spec/unknown_values_report.md に全調査結果を記載

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:43:08 +00:00
tkgstratorandClaude Sonnet 4.6 e6bbc4c4bc feat(ios): implement appboot-to-MSL auth flow in Python
- crypto.py: add DH key operations (generate_dh_keypair,
  compute_dh_shared_secret) and derive_full_key_chain orchestrator
  that runs Phase 3 KDF → 48B key → Phase 2 DH in sequence;
  add SessionKeys dataclass for typed output
- constants.py: add IOS_DH_P, IOS_DH_G (Netflix 1024-bit group),
  IOS_APPBOOT_ENDPOINT
- cbor_encoder.py: add build_appboot_request high-level builder
  that wires entity_auth_data + key 33.6 scheme_data + header
- cbor_decoder.py: add parse_appboot_response to extract
  server_scheme_data (key 33.6), server_nonce (key 33.9),
  scheme_id, and cookies from appboot response
- ios_client.py: new iOSMslClient class with perform_appboot()
  end-to-end orchestrator and build_encrypted_msl_request();
  TODO comments mark Frida-capture-required values
- verify_full_key_chain.py: extend with DH round-trip tests
  using raws/msl_keys.json vectors (4 new assertions, 12 total PASS)
- __init__.py: export iOSMslClient, iOSAppbootParams, iOSSessionState,
  SessionKeys

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 08:36:10 +00:00
tkgstratorandClaude Sonnet 4.6 2fed3bf388 feat(frida): add entity_auth_data / NFWebCrypto key capture hooks
- hook_entityauth_capture.js: runtime capture of devicetoken (216B),
  apphmac (32B HMAC-SHA256), and device_key_data (~6576B) via Nbp
  symbol enumeration, ObjC method scanning, NSData file hooks,
  NSUserDefaults, and sqlite3_step BLOB filter
- hook_nfwebcrypto_keys.js: dump kAppBootKey (RSA-4096 SPKI) and
  kAppBootEccKey (ECDSA P-256 SPKI) via NFWebCrypto memory scan +
  d2i_PUBKEY / EVP_DigestVerifyInit hooks; also scans for ABKP /
  ABECCKP handle strings
- hook_appboot_dh.js: extend DH prime p log from first 16B to full
  128B; extend BN_mod_exp base/exp/mod and result dumps to full bytes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 08:33:44 +00:00
tkgstratorandClaude Opus 4.6 2be8acbd27 feat(re): MslClient.framework の key 33.6 構築ロジックとCBORシンボルテーブルを解析
IosAdhKeyRequestData::getKeydata() の逆アセンブリから、key 33.6 が
CBOR tag(55799) + map{scheme, keydata{mechanism, parametersid, publickey}}
構造であることを確認。CborMslSymbolTable の96エントリ完全マッピングを抽出。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:37:03 +00:00
tkgstratorandClaude Sonnet 4.6 0a52fcf8d5 feat(crypto): key 33.6 scheme_data 構築関数を追加
iOS appboot の 352B key 33.6 plaintext を組み立て XOR 暗号化する
NetflixCrypto.build_key336_scheme_data() を実装。165 サンプルで
ラウンドトリップ検証済み。

- constants.py: IOS_KEY336_DEVICE_HEADER (128B 固定デバイスヘッダー) を追加
- crypto.py: build_key336_scheme_data() を追加
  - nonce 変形マスク (n2: f41b×2B, n3: f41b+181b×2B, tail: f31c071f×4B)
  - XOR 暗号化 (key 33.9 repeating 16B)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 07:12:36 +00:00
tkgstratorandClaude Opus 4.6 9f30354059 docs(spec): key 33.6 平文の詳細構造を解明 — CBOR ヘッダ固定、7B nonce ランダム
352B: ヘッダ全セッション固定(128B) + TFIT+MGK(160B) + 7Bランダムnonce×3(64B)
144B: map(6)軽量版、セッション領域なし、DH認証なしの軽量リクエスト
kAppBootKey/kAppBootEccKeyは署名検証用(確定済み)
全未解明ポイントを解消

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:46:02 +00:00
tkgstratorandClaude Sonnet 4.6 8f92838bb9 feat(tools): add key 33.6 plaintext structure analysis script
Analyzes 239 iOS appboot CBOR captures across four sections:
1. Static header: bytes 0-127 confirmed identical across all 165 standard-
   prefix 352B samples; CBOR tag 55799 + map(7) + 2.5 key-value pairs.
2. Per-request tail: 64-byte region contains a 7-byte random nonce encoded
   3× with constant XOR (f41b...) between copies; not a counter/timestamp.
3. 144B variant: map(6) vs map(7), static header 0-88 only, no session
   region, scattered throughout capture (not session-boundary-clustered).
4. Full hex dump and CBOR structure walkthrough for representative samples.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 02:45:08 +00:00
tkgstratorandClaude Opus 4.6 4358454005 docs(spec): kAppBootKey/kAppBootEccKey は署名検証用と確定
- Phase 1 図: 点線→実線に変更 (RSA verify + ECDSA verify)
- kAppBootKey も図に追加
- 鍵一覧テーブル: 「用途未確認」→「署名検証」に更新
- 未解明ポイントから削除、解決済みに移動
- kSharkBootKey/kSharkBootKey_Test も新発見

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:40:54 +00:00
tkgstratorandClaude Opus 4.6 892d5adb58 feat(re): kAppBootKey/kAppBootEccKeyの用途を静的解析で確定(署名検証)
radare2でNFWebCrypto.frameworkを解析し、両鍵がimportKey(usage=VERIFY)で
インポートされ、RSA_verify/ECDSA_verifyで使用されることを確認。
従来のRSA暗号化仮説を署名検証モデルに修正。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:39:21 +00:00
tkgstratorandClaude Opus 4.6 917f3c9fef test: ESN → 全鍵導出チェーンの統合テストを追加
Phase 0 (MGK/Unicorn) → Phase 3 (KDF) → 48B Key (SHA384)
→ Phase 2 (DH/HMAC-SHA384) → bootstrap_key を一気通貫で検証。
8/8 テスト通過。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:26:31 +00:00
tkgstratorandClaude Opus 4.6 1c698873d9 docs(spec): ライフサイクル図を実行順に再構成、全ステップの操作を明記
- 実行順 (0→3→1→2→4→5) でシーケンスを並べ直し
- Phase 3 が Phase 1 の前に実行されることを図上で明確化
- 各 Phase の具体的な暗号操作と入出力を英語で記述
- Phase 1: TFIT エンコード + XOR + サーバー応答の PubKey 抽出を追加
- Phase 2: bootstrap_key = [16:48] を明記
- ラベルを英語に統一

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:11:40 +00:00
tkgstratorandClaude Opus 4.6 a31567f025 docs(spec): Phase 1 で key 33.6 → Server DH PubKey 抽出を明示
key 33.6 (96B) から Server DH PubKey (128B) を取り出すステップを追加。
Phase 2 には PubKey のみが渡されることを図で明確化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:09:47 +00:00
tkgstratorandClaude Opus 4.6 a7d9efdfd4 docs(spec): appboot Response を key 33.6 / 33.9 に分解
appboot Response key 33 を Server DH PubKey と省略していた問題を修正。
key 33.6 (Server DH Response 96B) と key 33.9 (Server nonce 16B) に分離。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:07:59 +00:00
tkgstratorandClaude Opus 4.6 cb5483e8ac docs(spec): Phase 1 の from Phase 0 参照を enc_key_0/sign_key_0 に修正
存在しない「MGK Pair」ラベルを削除し、Phase 0 の実際の出力名で参照。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:06:31 +00:00
tkgstratorandClaude Opus 4.6 6207f69d58 docs(spec): to Phase N をノードに統一、全Phase間参照を明示
- エッジラベルの to Phase X を削除し [/"to Phase N"/] ノードに統一
- Phase 0: enc_key_0/sign_key_0 → to Phase 1, 3
- Phase 1: DH PrivKey → to Phase 2, DH Resp → to Phase 2
- Phase 2: bootstrap_key → to Phase 5
- Phase 3: session_bind → to Phase 2, enc_key_1 → to Phase 4
- Phase 4: enc_key_2/sign_key_2 → to Phase 5
- Phase 5: 操作の役割をエッジラベルから出力側に移動

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:05:33 +00:00
tkgstratorandClaude Opus 4.6 5c2ab9f609 docs(spec): Phase 1 に DH PrivKey 出力を追加、Phase 2 の参照を統一
- Phase 1: DH_generate_key から PrivKey 出力 + to Phase 2 参照を追加
- Phase 2: Client DH PrivKey を from Phase 1 参照ノードに変更

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:03:47 +00:00
tkgstratorandClaude Opus 4.6 e0cb78299f docs(spec): Mermaid 図の記法を統一
- 四角 [""] → データ, 角丸 ([""]) → 暗号操作, 平行四辺形 [/""/] → Phase 間参照
- エッジラベルはデータの役割 (HMAC key, decrypt key 等)
- Phase 間参照を from/to Phase N ノードで統一 (グレー)
- 凡例にノード形状・色・線種の定義を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:01:07 +00:00
tkgstratorandClaude Opus 4.6 90751f7314 docs(spec): 実行順序の注釈を追加 (Phase 3 → Phase 1-2 の順序を明示)
Phase 番号と実行順が異なることによる循環参照の誤解を防ぐため、
実行順序 (0→3→1→2→4→5) を明記。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:58:01 +00:00
tkgstratorandClaude Opus 4.6 bfc5b59429 docs(spec): Mermaid 図のラベルを全て英語に変更
日本語ラベルは図中で読みにくいため、全ノード・エッジラベルを英語化。
見出しとコメントは日本語のまま。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:55:44 +00:00
tkgstratorandClaude Opus 4.6 fed8a2c0df docs(spec): Phase 1 図に key 33.9 nonce → XOR の入力矢印を追加
key 33.6 の XOR エンコードに使う nonce (key 33.9) が
図に入力として示されていなかった問題を修正。
ハードコード nonce (0x1AC905) との混同を避ける注釈も追加。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:54:31 +00:00
tkgstratorandClaude Opus 4.6 931a815ae4 docs(spec): 鍵関係図を全面更新 — key 33.6 構造図追加、全ノード解明済み
- Phase 1 図: key 33.6 を解明済み(緑)に変更、TFIT→XOR→送信フロー追加
- Section 3: enc_key_0/sign_key_0 を緑(Phase 0出力)に修正
- Section 4: enc_key_1 を緑に修正
- Section 8: key 33.6 の平文構造図 (352B) を追加
- kAppBootKey を「用途未確認」に修正 (RSA未使用確認済み)
- Tweak フック一覧を最新状態に更新
- 凡例を簡素化 (黄/オレンジ削除)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:53:04 +00:00
tkgstratorandClaude Opus 4.6 fe295225d5 docs(spec): 全鍵導出チェーン解明 — key 33.6 構造も解明済みに
- bootstrap_key, key 33.6 構成を解決済みに移動
- key 33.6 平文構造: CBORヘッダ(128B) + TFIT(DH_pub)(128B) + MGK(32B) + 固有(64B)
- 残りの未解明はArgoバイナリ内のCBOR構築ロジックのみ
- Phase 0-5 の全鍵がPython (+ Unicorn) で導出可能

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:30:12 +00:00
tkgstratorandClaude Opus 4.6 844ad8998c feat(re): key 33.6 builder静的解析スクリプト追加
NFWebCrypto.frameworkのDH鍵生成・MGK・TFIT関連関数を
r2pipeで解析し、key 33.6の構成を特定した。
CBOR構造構築とXOR nonce適用はArgoバイナリ側で行われる。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:28:18 +00:00
tkgstratorandClaude Opus 4.6 afd3ad4e3d docs(spec): 鍵関係図をフェーズ別に分割 — 1枚の巨大図から Phase 0〜5 の個別図へ
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:25:10 +00:00
tkgstratorandClaude Opus 4.6 1af0a237dc docs(spec): bootstrap_key 解明 — Phase 2 sign_key (dh_kdf_out[16:48]) と同一
bootstrap_key は新規の鍵ではなく、Phase 2 KDF の HMAC-SHA384 出力の
[16:48] = sign_key そのもの。全オレンジ(由来不明)鍵を解消。
残る未解明は key 33.6 の TFIT エンコードのみ。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:23:42 +00:00
tkgstratorandClaude Opus 4.6 f006fb4b50 docs(spec): 鍵関係図を全面更新 — Phase 0 (MGK) 追加、全鍵を緑(解明済み)に
- Phase 0 (ESN → MGK = enc_key_0/sign_key_0) を図に追加
- TFIT テーブル (199KB) をバイナリ埋め込み定数として追加
- enc_key_0/sign_key_0 を「Unicorn で計算可能」に更新
- 大部分の鍵ノードを緑色(解明済み)に変更
- シーケンス図に Phase 0 と 48B 鍵導出フローを追加
- 鍵一覧にESN, TFITテーブルを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:19:09 +00:00
tkgstratorandClaude Opus 4.6 67bbd3623c docs(spec): 初回セッション鍵 = MGK (TFIT-WB-AES-128-ECB of ESN) を文書化
enc_key_0/sign_key_0 は genModelGroupKeys の出力 (= MGK) であることが
Unicorn エミュレーションで実証された。
ESN + TFIT テーブルから全鍵チェーンを Python のみで導出可能。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:07:01 +00:00
tkgstratorandClaude Sonnet 4.6 e0efc336f7 feat(tools): TFIT whitebox AES-128-ECB emulator using Unicorn Engine
Unicorn Engine でNFWebCrypto.framework の TFIT_op_iAES11 (0x25CB0) を
エミュレートし、genModelGroupKeys(MGKType, ESN) を Python で再現する
ツールを追加。

- Mach-O の全セグメント (TEXT/DATA_CONST/DATA/LINKEDIT) を仮想アドレス
  通りに Unicorn にマッピング
- memset/memcpy スタブを GOT 経由でフックし TFIT_r9_op 内の外部呼び出しを
  処理
- __stack_chk_guard を偽ポインタで提供しスタックカナリー検証を回避
- 自己整合テストベクタ (zero KS × 6 + iPhone KS × 2) で動作を確認
- CLI: --test でベクタ検証、引数に ESN を渡して MGK ペアを計算

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 01:05:27 +00:00
tkgstratorandClaude Opus 4.6 565ab2b1d4 docs(spec): Phase 2 KDF ドキュメントを最新の解析結果で更新
- 48B鍵の説明を「TFIT出力」→「SHA384(session_bind[:16])」に修正
- Mermaid図にPSK/nonce→KDF→SHA384→48B鍵のフローを追加
- 未解明事項を更新 (48B鍵は解明済み、残りはTFITエンコードのみ)
- nflxDhDerive 静的解析結果のアドレスを追記

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:46:51 +00:00
tkgstratorandClaude Opus 4.6 60e5dc2308 docs(plans): TFIT/48B鍵調査プランを追加
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:10:07 +00:00
tkgstratorandClaude Opus 4.6 a9cb32b8e5 docs(spec): nflxDhDerive静的解析で48B HMAC鍵の導出チェーンを特定
SHA384(native_key_bytes) → 48B鍵 → HMAC-SHA384(key, 0x00||DH_shared) → enc/sign/wrap鍵分割

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:09:29 +00:00
tkgstratorandClaude Opus 4.6 1941955b90 docs(spec): 48B鍵の導出パスを図に追加 (KDF → SHA384 → 48B鍵)
Phase 3 KDF の session_bind から SHA384 を経て 48B 鍵に至る
データフローを Mermaid 図に明示。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:06:16 +00:00
tkgstratorandClaude Opus 4.6 8f9c13fa22 docs(spec): 48B鍵を「計算可能」に更新、SHA384(session_bind[:16]) 解明
- 48B鍵をオレンジ(由来不明)→緑(解明済み)に変更
- 鍵一覧テーブルに導出式を追記
- 未解明ポイントから48B鍵を解決済みに移動
- 凡例に緑(解明済み)を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:05:23 +00:00
tkgstratorandClaude Opus 4.6 8f62f20a4c docs(spec): NFWebCrypto TFIT WB-AES-128-ECB 静的解析結果を追加
genModelGroupKeys → encryptAes128Ecb → TFIT_wbaes_ecb_encrypt_iAES11 の
全コールチェーンを逆アセンブルし、ラウンド構造・テーブル配置・
デバイス別キースケジュール選択ロジックを文書化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:05:00 +00:00
tkgstratorandClaude Opus 4.6 b9930226f6 feat(crypto): 48B HMAC鍵の導出を実装 — SHA384(session_bind[:16])
48B HMAC-SHA384 鍵の生成チェーンが完全に解明:
  session_check = HMAC-SHA256(PSK, enc_key_0 || sign_key_0)
  session_bind  = HMAC-SHA256(session_check, nonce)
  48B_key       = SHA384(session_bind[:16])

これにより保存済みセッション鍵があれば Tweak/Frida なしで
全鍵を Python のみで導出可能になった。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:04:17 +00:00
tkgstratorandClaude Sonnet 4.6 2f82b34289 feat(tweak): add SHA384, TFIT_wbaes hooks and 48B HMAC_Init_ex caller tracing
- HOOK 10: SHA384 one-shot in NFWebCrypto — logs input (up to 256B) and 48B digest
- HOOK 11: _TFIT_wbaes_ecb_encrypt_iAES11 — resolved via dlsym, logs 16B in/out per block; gracefully skipped if symbol absent
- HMAC_Init_ex enhanced: when key_len==48, emits caller address via __builtin_return_address(0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 18:01:11 +00:00
tkgstratorandClaude Opus 4.6 30db2567e7 feat(agents): reverse-engineer エージェント定義を追加
Ghidra headless, radare2, lief+capstone を使った
静的バイナリ解析専用エージェント。
NFWebCrypto の TFIT テーブル・xref 解析に使用する。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 17:51:32 +00:00
tkgstratorandClaude Opus 4.6 4cff46ae35 feat(tweak): AES_encrypt フックと TFIT チェーン検出を追加
- AES_encrypt (ECB 単一ブロック) の入出力をキャプチャ
- KAT マーカー (000102...1f) で TFIT チェーン開始を検出
- AES-128 鍵設定でチェーン終了を検出
- 690 ペアのキャプチャに成功、DH 秘密鍵生成を確認

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 17:39:11 +00:00
tkgstratorandClaude Sonnet 4.6 24d8d891c1 feat(tools): add TFIT AES_encrypt chain analysis script
Analyzes appboot_tfit_capture.log to identify:
- TFIT chain structure: CTR entropy + KAT anchors + key-feeding PRNG
- DH private key generation from AES_encrypt output stream (#87-#94)
- 48B HMAC-SHA384 key origin (not captured in AES hooks)
- Session key derivation: HMAC-SHA384(tfit_48B, 0x00||dh_shared) -> AES+MAC keys

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 17:38:31 +00:00
tkgstratorandClaude Sonnet 4.6 b1a3a30407 feat(tools): add key 33.6 encoding analysis tool
Analyzes DH public key ↔ key 33.6 pairs from Netflix iOS appboot CBOR
captures, confirming the trivial block-XOR encoding and mapping plaintext
regions to static header, session-bound, and per-request zones.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 17:21:00 +00:00
tkgstratorandClaude Sonnet 4.6 06fcca4373 feat(frida): TFIT ホワイトボックス AES テーブル抽出スクリプトを追加
AES_set_encrypt_key (AES-256) と AES_encrypt (単体ブロック ECB) を
フックして TFIT チェーンの鍵・入出力ペアを全件キャプチャする。
KAT マーカーでラウンドを区切り、チェーン完了後に TFIT_KEY 候補を出力する。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 17:10:24 +00:00
tkgstratorandClaude Opus 4.6 c4da8c487c docs(spec): key 33.6 構成の解析結果を反映
- RSA 暗号化は未使用 (実証済み) を解決済みに追加
- key 33.6 サイズを 464B → 144B/352B に修正
- kAppBootKey の点線接続を削除 (RSA 不使用のため)
- key 33.6 構成方法を未解明ポイントに追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 17:07:06 +00:00
tkgstratorandClaude Opus 4.6 7964f1872f feat(tweak): DH_generate_key, RSA_public_encrypt, EVP_PKEY_encrypt フックを追加
key 33.6 構成の追跡のため:
- DH_generate_key: クライアント DH 公開鍵・秘密鍵をキャプチャ
- RSA_public_encrypt: RSA 暗号化の有無を確認 → 未呼び出しを確認
- EVP_PKEY_encrypt: EVP 暗号化の有無を確認 → 未呼び出しを確認

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 17:05:39 +00:00
tkgstratorandClaude Opus 4.6 6372205587 docs(spec): 未実証の関係を点線に変更、Phase 1/2 図を修正
- kAppBootKey → key 33.6 の暗号化を点線(未実証)に変更
- kAppBootEccKey の署名検証も点線に変更
- key 33.6 リクエスト (464B) をオレンジ(由来不明)に追加
- Phase 2 に DH_compute_key ノードを追加(サーバー公開鍵入力を明示)
- 凡例に点線の説明を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:54:36 +00:00
tkgstratorandClaude Opus 4.6 a4e9d6b9f4 docs(spec): 鍵関係図に Phase 2 KDF 解明結果と由来不明の 48B 鍵を反映
- Phase 2 を「未解明」→「解明済み」に更新
- 48B 鍵をオレンジ色(由来不明)として追加
- enc_key_0/sign_key_0 を黄色(計算可能)に変更
- シーケンス図に HMAC-SHA384 フローを追記
- 鍵一覧テーブルに 48B 鍵を追加
- 未解明ポイントを更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:31:45 +00:00