 tkgstratorandClaude Opus 4.6
|
70fb7279d0
|
docs(spec): devicetoken = deviceIdToken の Base64 デコードと判明 — ESN のみで Python 実行可能
- CBOR "devicetoken" (216B) と "apphmac" (32B) は同一の DEVICE_ID_TOKEN の異なる表現
- 両方とも x-netflix-deviceidtoken HTTP レスポンスヘッダから取得
- NFSharedStore App Group コンテナに DEVICE_ID_TOKEN キーで永続化
- getAuthData() 内で: apphmac = UTF8 bytes, devicetoken = Base64.decode()
- Tweak キャプチャは ESN のみで Python 単体で appboot→MSL認証が実行可能
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 15:14:07 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
f17ed6fc60
|
docs(spec): deviceIdToken はサーバー発行 (x-netflix-deviceidtoken ヘッダ) と確定
- deviceIdToken は暗号計算ではなく Netflix サーバーが HTTP レスポンスヘッダで配信
- 永続化先は NFSharedStore App Group コンテナ (Keychain 外)
- 初回 appboot では nil で送信可能、レスポンスから取得してキャッシュ
- Python 単体で取得可能 — Tweak でのキャプチャ不要
- 必要なキャプチャ値は ESN + devicetoken (216B) の 2 つのみに削減
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 14:45:20 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
87333975f6
|
docs(spec): トークンは DRM 層永続化と確定、Phase 2 48B key 検証済み
- Keychain 全削除 (18件) + アプリデータ全削除後も同一トークンが使用された
- devicetoken/deviceIdToken は Keychain より深い層 (Secure Enclave/CDM) に永続化
- getNRMCookieWithESN: コールバックは Keychain 削除後も発火せず
- HTTP エンドポイントも存在しない (mitmproxy 確認済み)
- → 一度 Tweak でキャプチャすれば長期間再利用可能
- Phase 2 KDF: SHA384(session_bind[:16]) = 48B key の一致を確認
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 13:52:59 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
65bb5a213e
|
docs(spec): apphmac = deviceIdToken と確定 — 全未知値が解明完了
- apphmac は HMAC/SHA/HKDF ではなく [device deviceIdToken] (CDM由来の不透明トークン)
- MslClient getAuthData() (0x284bc) の静的解析で this+0xe8 → CBOR "apphmac" の流れを確認
- setApphmac() (0x29930), 3つのコードパス (A/B/C) を特定
- HKDF(MGK, PSK, Nonce) は apphmac とは無関係 (Phase 3 KDF 初期化用)
- entity_auth_data の全フィールド構造を確定
全未知値の解明が完了:
- apphmac: deviceIdToken (キャプチャ必要)
- appboot sign key: Keychain キャッシュ (初回は sign_key_1)
- devicetoken: NRM トークン (キャプチャ必要)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 13:27:22 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
84ff134874
|
docs(spec): apphmac は毎リクエスト可変 (67/243 ユニーク) — HKDF 仮説を否定
- CBOR 直接照合で HKDF(MGK, PSK, Nonce) 出力と不一致を確認
- 243 appboot リクエスト中 67 個のユニーク apphmac 値を観測
- ランダムノンスまたはタイムスタンプ依存の値
- entity_auth_data の CBOR 構造を完全に記載 (key 35 + key 30)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 12:55:17 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
42a7eadfce
|
feat(tweak): FpsMgkAppIdAuthData キャプチャ成功 — x5は devicetoken と判明
- FpsMgkAppIdAuthData (0x28038) フック発火確認
- RE で apphmac と名付けられたx5引数は実際には devicetoken (216B protobuf)
- apphmac はコンストラクタ引数ではなく getAuthData() 内部で計算される
- HKDF hook を無効化 (sret 呼び出し規約でクラッシュ)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 12:47:32 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
7cd95f6631
|
feat(re): apphmac 導出式を特定 — HKDF(MGK, PSK, Nonce) が最有力候補
- AppleWebCrypto::HKDF (NFWebCrypto+0x11900) フックで入力を完全キャプチャ:
key=MGK(48B), ikm=PSK(16B), info=Nonce(16B)
- 導出式: HMAC-SHA256(HMAC-SHA256(MGK, PSK), Nonce)
- 全入力が既知定数/導出可能値のため Python で再現可能
- HKDF の key パラメータ読み取りを修正 (obj+8 offset で KeyByteArray データ発見)
- これにより appboot→MSL認証に必要な全値の導出式が技術的に揃った
- IosMGKAuthData での最終照合が残る (コンストラクタオフセット要再検証)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 10:53:59 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
69603736d7
|
docs(spec): appboot sign key は Keychain キャッシュと判明 — ブロッカー1つ解消
- 全アプリデータ削除後のクリーン起動で 38b2030d / 8887ddf1 が出現しないことを確認
- これらは前回セッションの Phase 2 sign key が Keychain にキャッシュされたもの
- フレッシュ appboot では sign_key_1 (Phase 3 KDF) で署名すれば良い
- 残るブロッカーは apphmac の導出ロジックのみ
- Tweak に HKDF (AppleWebCrypto::HKDF @ +0x11900) フックを追加
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 10:16:33 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
e1f68dca27
|
docs(spec): 全値の固定/可変・再利用可否・Python再現可否を明記
unknown_values_report.md を全面改訂:
- 全値を「バイナリ固定」「デバイス固有」「ランタイム可変」に分類
- 各値に固定/可変、再利用可否、Python再現可否を明記
- 最大のブロッカー: apphmac導出ロジック、appboot sign key導出元
- HMAC署名チェーンの実行順序を記載
- appboot blob (8549B) の構造を記載
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 09:34:07 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
6968207fd3
|
feat(tweak): NetflixEntityAuth で appboot blob をキャプチャ、devicetoken 抽出
- NetflixEntityAuth Tweak: HMAC/IosMGKAuthData/MslRegistration フック
- 大容量 HMAC データ (>1KB) を自動ファイルダンプする機能追加
- 8549B appboot blob から以下を抽出:
- Full ESN: NFAPPL-02-IPHONE9=1-AD0455EF27...
- AppID: a2becfec-b286-535c-b884-903a384caee6
- DeviceToken: 216B protobuf
- AppKeyVersion: 1
- Phase 3 KDF チェーン全体をライブ検証 (Python 実装と完全一致)
- unknown_values_report.md を実測結果で更新
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 09:30:21 +00:00 |
|
 tkgstratorandClaude Opus 4.6
|
2a23b7723a
|
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 |
|