
Windows GDID デバイス識別子(VPN 越しにハッカーを追跡した ID)を読み取り、理解し、無効化します。実際の Win11 VM で検証済み。正直に言うと: レポート送信を止めるものであり、匿名化するものではありません。
Windows のグローバル デバイス識別子 (GDID) を読み取り、理解し、沈黙させます — VPN を使用していた容疑者を FBI が特定するのに役立った、アカウントごとに隠されたデバイス ID。
⚠️ 最初に正直な免責事項: このツールは GDID を消去せず、匿名にもしません。GDID は、サインインした瞬間から Microsoft アカウントに結び付けられ、Microsoft のサーバー上に存在します。
no-gdidはお使いのマシンがそれを再登録・報告するのを止めるだけです — Microsoft がすでに保有しているものを取り消すことはできません。機密性の高い作業で本当のプライバシーを求めるなら、信頼できる唯一の答えは Windows に依存しないことです。
ここに記載されたすべての発見は、実際の Windows 11 Pro VM (ビルド 26200) で再現されてから書き留められています。理論上のものは何もありません。証拠は信頼度レベルでタグ付けされ、docs/technical-writeup.md にあります — また、その検証が実際に何を伴うのかについては 構築方法 を参照してください。
2026年、FBI は VPN を介して3か国にわたって IP を切り替えていた Scattered Spider 容疑者を追跡しました。彼の正体を暴いたのは GDID — Microsoft が Windows インストールに結び付け、召喚状に基づいて法執行機関と共有するデバイス識別子です。IP を変更しても変わりません。このリポジトリはその識別子を分解し、実際に何ができるのかを示します。
ハードウェアハッシュではありません — login.live.com によって発行され、レジストリにローカルキャッシュされ、Microsoft の Device Directory Service グラフに登録され、配信の最適化 (Delivery Optimization) を通じて報告される 64ビット MSA デバイス PUID です。
wlidsvc ── mint ──► PUID from login.live.com
│ cached at HKCU\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties\LID
CDPSvc / CDPUserSvc ── register ──► Device Directory Service (dds.microsoft.com)
│
DoSvc ── report ──► UCDOStatus.GlobalDeviceId (Azure Monitor)
レジストリの LID (16進数) はサーバー側の値 g:<decimal> に対応します。すべての Windows デバイス PUID は 0x0018… 名前空間に存在します (検証済み: 当方のテスト値と裁判所提出書類の値が同じ名前空間を共有していました)。
すべてのスクリプトは PowerShell 製で、ASCII のみで書かれ、任意のコードページで動作します。管理者権限の PowerShell を開いてください。
# 1. See your own GDID and which parts of the chain are active (read-only, safe)
powershell -ExecutionPolicy Bypass -File .\audit\Get-GDID-Audit.ps1
# 2. Preview what the mitigation would change (no changes yet)
powershell -ExecutionPolicy Bypass -File .\mitigate\Disable-GDID-Services.ps1
powershell -ExecutionPolicy Bypass -File .\mitigate\Block-GDID-Endpoints.ps1
# 3. Apply it: stop the report chain + blackhole its endpoints, keep MSA working
powershell -ExecutionPolicy Bypass -File .\mitigate\Disable-GDID-Services.ps1 -Apply
powershell -ExecutionPolicy Bypass -File .\mitigate\Block-GDID-Endpoints.ps1 -Apply
# Undo everything
powershell -ExecutionPolicy Bypass -File .\mitigate\Revert-GDID.ps1
まずスナップショット付き VM でテストしてください。 この緩和策はシステムサービスを無効化します。
wlidsvc を再起動し、Microsoft アプリに触れると、サーバーから同一の値が戻ってきます。アカウントに固定されているのです。DoSvc は管理者でも Set-Service を拒否するため、レジストリの Start=4 で無効化します (技術解説を参照)。これらのサービスを無効化すると、配信の最適化のピアキャッシュ、Phone Link / 「PC で続ける」、近距離共有が使えなくなります。wlidsvc と login.live.com はそのまま残してあるため、Microsoft アカウントのサインインは機能し続けます。
docs/technical-writeup.md — チェーン全体、レジストリパス、エンドポイント、および信頼度でタグ付けされたすべての主張 ([COURT]、[OBSERVED]、[STATIC]、[NO-GDID VÉRIFIÉ])。docs/FAQ.md — よくある質問への簡潔な回答。このプロジェクトは、AI (Claude) の多大な支援を受けて調査・執筆されました。コミット履歴にもこのセクションにもその旨が明記されています — わざわざ探す必要はないようにしています。
正直に言って、実際には次のような意味です:
LID キーを削除して wlidsvc を再起動すると、Microsoft アプリが要求した時点で同じ識別子が本当に戻ってきます — その様子を実際に目撃しました。DiagTrack はその VM ではすでに停止していましたが、GDID は依然として存在しており、「テレメトリをオフにするだけでいい」というアドバイスは否定されました。DoSvc は管理者でも Set-Service を本当に拒否するため、スクリプトは代わりにレジストリ経由で無効化します。これらはそれぞれ AI の仮説として始まり、テストされるまでいくつかは誤りでした。LID/GDID が存在します)。技術解説には各発見がどのビルドに由来するかが記録されています — ビルド番号が付いていない主張は、信頼性が低いものとして扱ってください。ここに記載された主張がご自身のマシンで成立しない場合は、ビルド番号を添えて issue を開いてください — それは賛同の言葉よりもこのリポジトリにとって価値があります。
SmtimesIWndr/gdid-reversal。MIT。防御的でプライバシー重視のツールです。所有するマシンで使用してください。
| パス | 目的 | 書き込み? |
|---|
audit/Get-GDID-Audit.ps1 | GDID と5サービスチェーンの状態を読み取る | なし |
audit/Get-GDID-Traffic.ps1 | チェーンの実際のネットワークエンドポイントをマッピングする | なし |
mitigate/Block-GDID-Endpoints.ps1 | hosts 内の DDS/DO エンドポイントをブラックホール化する (login.live.com は維持) | -Apply 指定時 |
mitigate/Disable-GDID-Services.ps1 | CDPSvc/DoSvc/CDPUserSvc を無効化する (wlidsvc は維持) | -Apply 指定時 |
mitigate/Revert-GDID.ps1 | サービスを復元し hosts をクリーンアップする | あり |
experiments/ | 発見を証明するために使用するスナップショット保護付きプローブ | 破壊的、保護付き |
docs/ | 出典付き技術解説 + FAQ | — |