Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ShareTrace 内部処理の調査
Search
meow
April 25, 2026
Technology
97
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ShareTrace 内部処理の調査
2026/04/25(土) 秋葉原電脳倶楽部 技術発表会 #30 で発表した資料です
https://akiba.connpass.com/event/390273/
meow
April 25, 2026
More Decks by meow
See All by meow
GitFive 内部処理の調査
meow_noisy
0
73
バニラVisaギフトカードを棄てるのは結構大変
meow_noisy
0
1.2k
learnwithjohnbest氏の物理学的ファクトチェック術を学ぶ
meow_noisy
0
110
ユーザースクリプトでUIコンポーネントを非表示にするなど
meow_noisy
0
120
Pandocでmd→pptx便利すぎワロタwww
meow_noisy
2
3k
marpで出力したpptxのスライドをコピペすると白紙になる問題の調査
meow_noisy
0
150
FRAVIAの"Learning to transform question into effective queries"を読む
meow_noisy
0
100
『FRAVIA: The Art of Searching』を読む
meow_noisy
1
140
Stranger Case V3 作戦会議
meow_noisy
0
510
Other Decks in Technology
See All in Technology
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
340
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
870
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
130
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
270
enechainの内製セルフサービスプラットフォーム
hiyosi
0
160
AIで仕事のやり方を変える
matsu7874
3
1.1k
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
700
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
310
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
630
Claude Code本って、 読む必要あるの?
oikon48
2
400
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
320
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
160
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
Building the Perfect Custom Keyboard
takai
2
870
A Modern Web Designer's Workflow
chriscoyier
699
190k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Crafting Experiences
bethany
1
320
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Done Done
chrislema
186
16k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Transcript
秋葉原電脳倶楽部 技術発表会 #30 meow (@meow_noisy) _ 2026年4⽉25⽇(⼟) ShareTrace 内部処理の調査
発表概要 u 2026年4⽉に話題になった、共有リンクから背後にいる アカウントを調査するツール『ShareTrace』の 内部ロジックを追ったことについて報告する u 各プラットフォームの共有リンクから 『何が』『どうやって』 取れるのかを1つずつ⾒ていく u
最後に抽出ロジックを抽象化して、こういう⼿法をそもそも どう⾒つけているのかを推測 ⚠免責事項 本発表は機微情報保護の勉強を⽬的として作成されました。 本発表の内容を不正に利⽤した場合、刑事罰、⺠事訴訟の対象となることがあります。 本発表の内容を⽤いたことにより起こした、いかなる損害、損失に対し著者は⼀切責任を負いません。
アジェンダ u 1. はじめに u ShareTrace概要 u 2. ShareTraceの使い⽅ u
インストール、 共有リンクの仕様上の注意 u 3. 各プラットフォームの実⾏結果と追跡の理屈 u TikTok、Discord、Instagram...など u 4. APIをどうやって発⾒しているかの推測 u 5. まとめ
背景 u 2026年4⽉初旬、界隈で急に sharetrace というツール が話題になった u 「共有リンクからアカウントを追跡できる」という⼝ぶりで拡散 u どういうロジックで追跡しているのか気になった
ので内部処理を⾒てみることにした https://x.com/cyb_detective/status/2041437639278993863
ShareTrace 概要 u プラットフォームが発⾏する共有リンクから背後のユーザー の情報を明らかにするツール u 抽出できる情報の種類: ユーザー名、表⽰名、ID、アバター、場合 によってはメール u
対応プラットフォーム: 10種以上(次スライド) u Python 製 / CLI で動作
Platform 抽出できる情報 有効な共有リンクフォー マット 無効なリンク TikTok ユーザID, ユーザネーム, 表⽰ 名,
国, デバイス,...など vm.tiktok.com/ZMxxxxxx / vt.tiktok.com/... ブラウザのアドレスバーから 取った tiktok.com/@user/video/1 23... Instagram ユーザID, ユーザネーム, 表⽰ 名, プロフィール写真 ?igsh=... を含む共有リン ク 素の /p/Cxxx/ URL、数⽇以 上経過したリンク Discord 招待リンクを発⾏した、 ユーザID, ユーザネーム, 表⽰ 名, アバター画像, アカウント作 成時刻 discord.gg/xxxxx discord.com/invite/xxxxx 提携サーバーのカスタム招待 リンク、またはプロフィール /メッセージの直接URL。 ChatGPT 表⽰名 chatgpt.com/share/<uui d> ̶ 抽出できる情報は公式リポジトリ、 有効な共有リンク、無効なリンクは デモアプリ(p.16)から引⽤ 現在は抽出できなくなってる 対応プラットフォームと抽出される情報 26/4/19時点
対応プラットフォームと抽出される情報 Platform 抽出できる情報 有効な共有リンクフォー マット 無効なリンク Claude 表⽰名, ユーザーID claude.ai/share/<uuid>
̶ Perplexity ユーザ名, ユーザーID, アバ ター perplexity.ai/search/<slu g> ̶ Microsoft メールアドレス *- my.sharepoint.com/:x:/p /username/... “Anyone with the link” の 1drv.ms 匿名URL Pinterest ユーザネーム, ユーザID, 表⽰ 名, アバター, ...など 短縮リンク pin.it/XXXXX webサイトからコピーした pinterest.com/pin/123.../ 26/4/19時点 抽出できる情報は公式リポジトリ、 有効な共有リンク、無効なリンクは デモアプリ(p.16)から引⽤
Platform 抽出できる情報 有効な共有リンクフォー マット 無効なリンク Substack ユーザネーム, ハンドル名, Bio,...など ?r=XXXXX
を含む紹介リン ク ?r= の無い通常の投稿URL Suno ユーザネーム, 表⽰名, アバ ター, ...など suno.com/song/<uuid> suno.com/playlist/... ̶ Telegram 招待リンクを発⾏した User ID t.me/+AbCdEf... t.me/joinchat/AAAA... メッセージリンク t.me/c/123/456、公開チャ ネル t.me/channelname 対応プラットフォームと抽出される情報 26/4/19時点 抽出できる情報は公式リポジトリ、 有効な共有リンク、無効なリンクは デモアプリ(p.16)から引⽤
主なユースケース u ジャーナリズム / ファクトチェック u 情報源(特に偽情報と疑われるもの)の発信元アカウントを辿る u 機微情報、プライバシー保護、OpSec u
企業 u 組織の共有運⽤が本当に匿名化されているかの検査 u 個⼈ u ⾃分が発信しているリンクから、どこまで素性が漏れているか確認 (主にSNSアカウント調査の)ピボットを増やすことに役に⽴つという意味では めちゃくちゃでかい
「リンクを共有した時点で、 共有主がわかるのは当たり前では?」 ...という質問が想定される u 実際には「当たり前」ではない u 共有した本⼈は ⾃分のアカウント情報が埋め込まれている⾃覚が ない可能性がある u
「共有 → リンクをコピー」を押しただけで、UIに警告は出ない u URLに明⽰化されているわけではなく気づきにくい u 受け⼿が⼀段掘らないと出てこない情報 u 他⼈の投稿に対して共有リンクを発⾏しても有効 u 同⼀⼈物が運⽤しているがプライベートにしているアカウ ントを追跡されるリスクがある(次のスライド)
ありそうな機微情報 漏えいシナリオ このカフェおしゃれ〜☕ このカフェおしゃれ〜☕ ⚠他⼈の投稿に対して 共有リンクを発⾏しても有効
アジェンダ u 1. はじめに u ShareTrace概要 u 2. ShareTraceの使い⽅ u
インストール、 共有リンクの仕様上の注意 u 3. 各プラットフォームの実⾏結果と追跡の理屈 u TikTok、Discord、Instagram...など u 4. APIをどうやって発⾒しているかの推測 u 5. まとめ
本発表で使⽤するリポジトリ u オリジナルは @loaded ⽒のリポジトリ u https://github.com/loaded/sharetrace (削除済) u しかし、何らかの事情でアカウントごと削除されている
u forkは複数残っている u 今回はstar数の多い @soxoj ⽒のfork を使⽤ u https://github.com/soxoj/sharetrace
インストールと実⾏(README.mdより) ターミナルでpythonのモジュール実⾏をするだけ。 インストール u git clone https://github.com/soxoj/sharetrace.git u cd sharetrace
u pip install -r requirements.txt 実⾏ u python -m sharetrace <url> u urlはクオートで囲むんだほうがいい(? や & がシェルに⾷われる)
注意点: 共有リンク ≠ 普通のURL u 共有リンクは 「共有ボタンを押した瞬間」に⽣成されるト ークン付きURL u ブラウザのアドレスバーのURLではない
[備考]有志によるWeb アプリ版 u Flask 実装のセルフホスト版 u https://github.com/voelspriet/sharetrace-web u @henkvaness⽒によるデモアプリ u
https://share.whopostedwhat.com/ u 説明や、デモの対象とするターゲットも⽤意されており、 CLIを叩く前に所感を掴むのにオススメ @henkvaness⽒によるデモアプリ
ツール使⽤時の倫理について 公式README.mdの翻訳。本当に気をつけましょう。
アジェンダ u 1. はじめに u ShareTrace概要 u 2. ShareTraceの使い⽅ u
インストール、 共有リンクの仕様上の注意 u 3. 各プラットフォームの実⾏結果と追跡の理屈 u TikTok、Discord、Instagram...など u 4. APIをどうやって発⾒しているかの推測 u 5. まとめ
調査対象 u 表のうち、以下のプラットフォームの実⾏と、どういう理 屈でやっているかを(Claudeを利⽤して)調査 u TikTok u Discord u Instagram
u Perplexity u Pinterest u Telegram
[備考]内部処理を調査する意味 u 便利ツールの出⼒は、出⼒過程を理解していないと正当性 を主張できない u 例: 裁判でShareTraceで得た証拠を出したとしても「そんな出⾃ のわからないツールから出た情報なんか信じられるか」と⾔われた ら終わり u
コードから「どうやってそれを⾒つけたのか」を掴みたい u 別のプラットフォームにも応⽤可能なノウハウにしたい (興味本位以外で)
TikTok 実⾏結果 u Xで投稿されているTikTokのリンク u これを踏んでも、他⼈の動画が出るだけ u ShareTraceでURLを解析すると、共有リンクを発⾏した TikTokアカウントが表⽰される DIVER
OSINT CTF 2024 “uploader” より
TikTokで追跡できる理屈 1. 短縮URL vm.tiktok.com/XXXXX をリダイレクト追跡 2. Android ブラウザを偽装してページHTMLを取得 3. HTML内の
webapp.reflow.global.shareUser JSON を正規表現でパース GitHub リポジトリより
Discord 実⾏結果 u ⾃分のサーバーで招待リンクを⽣成し試した u ⾃分のDiscordアカウントがヒット u 招待リンクをexpireさせるとヒットしなくなる
Discord で追跡できる理屈 u エンドポイント: GET discord.com/api/v9/invites/{code} u レスポンスの inviter.id /
inviter.username / inviter.avatar を参照 u さらに Snowflake ID から アカウント作成⽇時 も算出 GitHub リポジトリより
Instagram 実⾏結果 u ⼿軽に試せるアカウントがないが、確かに、スマホアプリ の紙⾶⾏機のアイコンからリンクを作成すると、⾃分のア カウントが発⾒できた u webブラウザ版だと上⼿くいかなかった
Instagramで追跡できる理屈 u Android ブラウザを偽装して招待リンクの ページHTMLを取得 u HTML内の user_for_shid_logged_out キーのJSON をパースして取得
GitHub リポジトリより
Perplexity 実⾏結果 Perplexity 実⾏結果(Webアプリ版)
Perplexityで追跡できる理屈 u 公開REST APIを叩くだけ u エンドポイント: GET perplexity.ai/rest/thread/{slug} u レスポンスの
entries[0] から投稿者情報を参照 u 取得情報: Username / アバター / User ID
Pinterest 実⾏結果 u 短縮リンク pin.it/XXXXX が対象 u 通常のピンURL (pinterest.com/pin/123...) では動か
ない Pinterest 実⾏結果(Webアプリ版)
Pinterestで追跡できる理屈 u ① 短縮URL pin.it/XXXXX のリダイレクト先( Locationヘッダー)から invite_code を抽出 u
② InviteCodeMetadataResource API に invite_code を渡してリクエスト u ③ レスポンスの sender フィールドを参照 GitHub リポジトリより
Telegram u 共有リンク: t.me/joinchat/JdJoSRcUuUma- UHZN3NTmg u 出⼒は 数値ID のみ →
1231606309 u ユーザー名解決は別途必要 実⾏結果(Webアプリ版)
Telegramで追跡できる理屈 t.me/joinchat/JdJoSRcUuUma-UHZN3NTmg を例に説明 u ① ハッシュ部分を Base64url デコード → 16バイトのバイ
ナリ: 25 D2 68 49 17 14 B9 49 ... u ② 先頭4バイトをリトルエンディアンで読む → 0x4968D225 = 1231606309(これがUser ID) 通常の利⽤だとまず気づかない。 GitHub リポジトリより # 22⽂字 → 2⽂字不⾜ → "==" を補う Base64urlデコード → 16バイトのバイナリ('¥x25¥xD2..) 先頭4バイトをリトルエンディアンの 32bit整数として読む
現状動いていないモジュール プラット フォーム 原因 ChatGPT OGPが "Shared by NAME via
ChatGPT" → "Shared via ChatGPT" に変化 プラットフォーム側の仕様変更への追従が必要
取得⼿法のざっくり分類 u スライドでは扱えなかった部分もあるが、次のような分類 になりそう ⼿法 プラットフォーム HTML内埋め込みJSON解析 TikTok, Instagram, Substack
OGP内の情報 ChatGPT 内部API利⽤ Discord, Perplexity, Suno, Claude URLデコードのみ(通信不要) Microsoft, Telegram
アジェンダ u 1. はじめに u ShareTrace概要 u 2. ShareTraceの使い⽅ u
インストール、 共有リンクの仕様上の注意 u 3. 各プラットフォームの実⾏結果と追跡の理屈 u TikTok、Discord、Instagram...など u 4. APIをどうやって発⾒しているかの推測 u 5. まとめ
どうやってAPIを発⾒しているか の推測 ここまで抽出できる理屈を追ってきたが、そこから抽象化し てみると、アプローチは主に2つあるのではないかと思って いる 1. ブラウザの開発者ツールで観察する 2. URLやバイナリを⽬で読む
① ブラウザ開発者ツールで観察 u 共有リンクを開いた状態で 開発者ツール の Network タ ブを⾒る u
どのAPIが叩かれているかが⼀覧で⾒える u Sources タブで HTML ソースの埋め込みJSONが⾒える u そこから地道に⾒つけているのではないか
② URLを⽬で読む u 構造を観察 u Microsoft: SharePoint URLはメールが _ 区切りでそのまま⼊
っている u Telegram: Base64をデコードすると、先頭4バイトが User ID と判明 u 同じアカウントで複数の招待リンクを⽣成 → 先頭4バイトが⼀致し、 怪しいと推測 u 処理過程を地道に読解
共通している発想 u ブラウザが内部的にやっていることを真似るだけ u 特別な脆弱性を突いているわけではないが、ブラウザを使っている だけだと⾒えない部分を利⽤ u プラットフォームが埋め込んでいる情報を読んで解析して 地道に⾒つけている u
抽象化して横展開できるような銀の弾丸は無かった。 u ツール公開者には本当に尊敬しかない。
アジェンダ u 1. はじめに u ShareTrace概要 u 2. ShareTraceの使い⽅ u
インストール、 共有リンクの仕様上の注意 u 3. 各プラットフォームの実⾏結果と追跡の理屈 u TikTok、Discord、Instagram...など u 4. APIをどうやって発⾒しているかの推測 u 5. まとめ
まとめ u ShareTraceの実⾏、コードリーディングを通して、どう情報を抽出 しているのかの仕組みを理解した u 全体的にブラウザがやっていることの再現 u 脆さもある u プラットフォームの仕様変更でいつ壊れてもおかしくない
u 実際に ChatGPT は現時点で取得不能 u 技法がオープンになる前に、⾃分で⾒つける姿勢が⼤事だと思っている u ⾃分で⾒つけるとなった場合、アプローチは2つありそう u ブラウザ開発者ツール の Network などの タブで通信を観察 u URL・バイナリを⽬で読んで構造を推測
ご清聴ありがとうございました @meow_noisy