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
ShareTrace 内部処理の調査
Search
meow
April 25, 2026
Technology
36
0
Share
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
37
バニラVisaギフトカードを棄てるのは結構大変
meow_noisy
0
420
learnwithjohnbest氏の物理学的ファクトチェック術を学ぶ
meow_noisy
0
73
ユーザースクリプトでUIコンポーネントを非表示にするなど
meow_noisy
0
89
Pandocでmd→pptx便利すぎワロタwww
meow_noisy
2
2.2k
marpで出力したpptxのスライドをコピペすると白紙になる問題の調査
meow_noisy
0
83
FRAVIAの"Learning to transform question into effective queries"を読む
meow_noisy
0
67
『FRAVIA: The Art of Searching』を読む
meow_noisy
1
95
Stranger Case V3 作戦会議
meow_noisy
0
500
Other Decks in Technology
See All in Technology
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
2.5k
freeeで運用しているAIQAについて
qatonchan
0
400
AI時代に越境し、 組織を変えるQAスキルの正体 / QA Skills for Transforming an Organization
mii3king
5
4.2k
毎日の作業を Claude Code 経由にしたら、 ノウハウがコードになった
kossykinto
1
1.1k
クラウドネイティブ DB はいかにして制約を 克服したか? 〜進化歴史から紐解く、スケーラブルアーキテクチャ設計指針〜
hacomono
PRO
5
700
(きっとたぶん)人材育成や教育のような何かの話
sejima
0
670
Building a Study Buddy AI Agent from Scratch: From Passive Chatbots to Autonomous Systems
itchimonji
0
140
小さいVue.jsを30分で作る
hal_spidernight
0
140
Modernizing Your HCL Connections Experience: Visual Report to chain, Profile Enhancements, and AI Integration
wannesrams
0
290
変化の激しい時代をゴキゲンに生き抜くために 〜ストレスマネジメントのススメ〜
kakehashi
PRO
4
1.2k
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
150
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
290
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
560
The Cost Of JavaScript in 2023
addyosmani
55
9.9k
Design in an AI World
tapps
1
210
sira's awesome portfolio website redesign presentation
elsirapls
0
230
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
540
Music & Morning Musume
bryan
47
7.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
280
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
550
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
140
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