crypttrace 0.33.0__tar.gz → 0.34.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {crypttrace-0.33.0/src/crypttrace.egg-info → crypttrace-0.34.0}/PKG-INFO +28 -8
- {crypttrace-0.33.0 → crypttrace-0.34.0}/README.md +27 -7
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/__init__.py +1 -1
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/known.json +1 -1
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/web/index.html +24 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0/src/crypttrace.egg-info}/PKG-INFO +28 -8
- {crypttrace-0.33.0 → crypttrace-0.34.0}/LICENSE +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/pyproject.toml +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/setup.cfg +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/addresses.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/analysis.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/assess.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/assets.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/bridges.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/case.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/chains.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/cli.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/config.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/drain.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/evidence.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/export.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/__init__.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/bitcoin.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/etherscan.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/http.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/solana.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/ton.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/fetchers/tron.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/freeze.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/funder.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/gascluster.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/investigate.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/__init__.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/audit.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/bulk.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/labels.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/names.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/partial.json +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/tonapi.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/labels/tronscan.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/offramp.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/poisoning.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/prices.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/render.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/report.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/spam.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/store.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/trace.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/verify.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/watch.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace/webapp.py +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace.egg-info/SOURCES.txt +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace.egg-info/dependency_links.txt +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace.egg-info/entry_points.txt +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace.egg-info/requires.txt +0 -0
- {crypttrace-0.33.0 → crypttrace-0.34.0}/src/crypttrace.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crypttrace
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.34.0
|
|
4
4
|
Summary: OSINT toolkit for crypto investigations: trace stolen funds across Ethereum, Bitcoin, Tron, Solana and TON
|
|
5
5
|
Author: bobslayerX
|
|
6
6
|
License-Expression: MIT
|
|
@@ -50,12 +50,14 @@ here's the wallet — where did the money go, and where can it still be stopped?
|
|
|
50
50
|
Works as a terminal tool **and** as a local web app with an interactive
|
|
51
51
|
fund-flow graph.
|
|
52
52
|
|
|
53
|
-

|
|
54
54
|
|
|
55
|
-
*Real case: the
|
|
56
|
-
stolen ETH
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
*Real case: the Ronin bridge exploiter (Lazarus, 2022). The graph shows the
|
|
56
|
+
stolen ETH leaving in three transfers of 23,500–33,600 ETH, every one to a
|
|
57
|
+
wallet on the US sanctions list. The side panel shows what is known about the
|
|
58
|
+
address and where it comes from: the OFAC listing behind the label, USDT and
|
|
59
|
+
USDC blacklisted by Tether and Circle, and the first funding of the wallet —
|
|
60
|
+
1.06 ETH from a Binance reserve wallet, an exchange that knows who withdrew it.*
|
|
59
61
|
|
|
60
62
|
---
|
|
61
63
|
|
|
@@ -137,6 +139,8 @@ so scams that start in a Telegram chat often end there. TON addresses are
|
|
|
137
139
|
accepted in any form (`UQ…`, `EQ…` or raw `0:…`) and shown as wallets show
|
|
138
140
|
them (`UQ…`); jetton transfers are reported between the owners' wallets.
|
|
139
141
|
|
|
142
|
+

|
|
143
|
+
|
|
140
144
|
---
|
|
141
145
|
|
|
142
146
|
## Was my wallet drained?
|
|
@@ -161,6 +165,14 @@ history and answers in plain language:
|
|
|
161
165
|
jetton balances and NFTs from trusted collections, not airdropped spam), and
|
|
162
166
|
who to report to.
|
|
163
167
|
|
|
168
|
+
It also names any payment the wallet made to an address on a phishing or
|
|
169
|
+
sanctions list (ScamSniffer's phishing blacklist and OFAC's, downloaded with
|
|
170
|
+
`crypttrace update-labels`). A fake site or a signed token approval takes money
|
|
171
|
+
in one transfer, so there is no burst to find, but the destination gives it
|
|
172
|
+
away:
|
|
173
|
+
|
|
174
|
+

|
|
175
|
+
|
|
164
176
|
The web UI has the same check in its **Was I drained?** tab.
|
|
165
177
|
|
|
166
178
|
### An evidence pack for the exchange and the police
|
|
@@ -192,8 +204,11 @@ explorer. A side panel shows the profile, first-funder chain, off-ramp check
|
|
|
192
204
|
and whether USDT/USDC at the address is frozen. Tabs add the assessment, the
|
|
193
205
|
timeline, the list of who sent funds here, and address poisoning (look-alikes
|
|
194
206
|
planted in the wallet's history, and payments lured by this address). **Case
|
|
195
|
-
file** downloads the same one-page HTML report `crypttrace report` writes
|
|
196
|
-
|
|
207
|
+
file** downloads the same one-page HTML report `crypttrace report` writes;
|
|
208
|
+
**GraphML** and **CSV** download the graph for Gephi or Maltego. The page's
|
|
209
|
+
address is a link to the investigation
|
|
210
|
+
(`/?address=…&chain=…&direction=…&depth=…&tab=check`), ready to bookmark or
|
|
211
|
+
send. Everything runs on your machine — nothing is uploaded anywhere.
|
|
197
212
|
|
|
198
213
|
This exists so non-technical victims can use the tool at all: a form and a
|
|
199
214
|
picture, instead of command-line flags.
|
|
@@ -454,6 +469,11 @@ explorers list newest first, so there it is the earliest of the latest 200
|
|
|
454
469
|
transfers. On EVM chains a first funding sent by a contract (a mixer or bridge
|
|
455
470
|
withdrawal, an internal transaction) counts and is flagged.
|
|
456
471
|
|
|
472
|
+

|
|
473
|
+
|
|
474
|
+
*Above: the Ronin exploiter's first gas came from a Binance reserve wallet. Below:
|
|
475
|
+
`verify` re-derives a Dogecoin wallet's totals and matches them with the chain.*
|
|
476
|
+
|
|
457
477
|
### Victim lists and timing analysis
|
|
458
478
|
|
|
459
479
|
Two things a graph shows but can't hand you as evidence.
|
|
@@ -16,12 +16,14 @@ here's the wallet — where did the money go, and where can it still be stopped?
|
|
|
16
16
|
Works as a terminal tool **and** as a local web app with an interactive
|
|
17
17
|
fund-flow graph.
|
|
18
18
|
|
|
19
|
-

|
|
20
20
|
|
|
21
|
-
*Real case: the
|
|
22
|
-
stolen ETH
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
*Real case: the Ronin bridge exploiter (Lazarus, 2022). The graph shows the
|
|
22
|
+
stolen ETH leaving in three transfers of 23,500–33,600 ETH, every one to a
|
|
23
|
+
wallet on the US sanctions list. The side panel shows what is known about the
|
|
24
|
+
address and where it comes from: the OFAC listing behind the label, USDT and
|
|
25
|
+
USDC blacklisted by Tether and Circle, and the first funding of the wallet —
|
|
26
|
+
1.06 ETH from a Binance reserve wallet, an exchange that knows who withdrew it.*
|
|
25
27
|
|
|
26
28
|
---
|
|
27
29
|
|
|
@@ -103,6 +105,8 @@ so scams that start in a Telegram chat often end there. TON addresses are
|
|
|
103
105
|
accepted in any form (`UQ…`, `EQ…` or raw `0:…`) and shown as wallets show
|
|
104
106
|
them (`UQ…`); jetton transfers are reported between the owners' wallets.
|
|
105
107
|
|
|
108
|
+

|
|
109
|
+
|
|
106
110
|
---
|
|
107
111
|
|
|
108
112
|
## Was my wallet drained?
|
|
@@ -127,6 +131,14 @@ history and answers in plain language:
|
|
|
127
131
|
jetton balances and NFTs from trusted collections, not airdropped spam), and
|
|
128
132
|
who to report to.
|
|
129
133
|
|
|
134
|
+
It also names any payment the wallet made to an address on a phishing or
|
|
135
|
+
sanctions list (ScamSniffer's phishing blacklist and OFAC's, downloaded with
|
|
136
|
+
`crypttrace update-labels`). A fake site or a signed token approval takes money
|
|
137
|
+
in one transfer, so there is no burst to find, but the destination gives it
|
|
138
|
+
away:
|
|
139
|
+
|
|
140
|
+

|
|
141
|
+
|
|
130
142
|
The web UI has the same check in its **Was I drained?** tab.
|
|
131
143
|
|
|
132
144
|
### An evidence pack for the exchange and the police
|
|
@@ -158,8 +170,11 @@ explorer. A side panel shows the profile, first-funder chain, off-ramp check
|
|
|
158
170
|
and whether USDT/USDC at the address is frozen. Tabs add the assessment, the
|
|
159
171
|
timeline, the list of who sent funds here, and address poisoning (look-alikes
|
|
160
172
|
planted in the wallet's history, and payments lured by this address). **Case
|
|
161
|
-
file** downloads the same one-page HTML report `crypttrace report` writes
|
|
162
|
-
|
|
173
|
+
file** downloads the same one-page HTML report `crypttrace report` writes;
|
|
174
|
+
**GraphML** and **CSV** download the graph for Gephi or Maltego. The page's
|
|
175
|
+
address is a link to the investigation
|
|
176
|
+
(`/?address=…&chain=…&direction=…&depth=…&tab=check`), ready to bookmark or
|
|
177
|
+
send. Everything runs on your machine — nothing is uploaded anywhere.
|
|
163
178
|
|
|
164
179
|
This exists so non-technical victims can use the tool at all: a form and a
|
|
165
180
|
picture, instead of command-line flags.
|
|
@@ -420,6 +435,11 @@ explorers list newest first, so there it is the earliest of the latest 200
|
|
|
420
435
|
transfers. On EVM chains a first funding sent by a contract (a mixer or bridge
|
|
421
436
|
withdrawal, an internal transaction) counts and is flagged.
|
|
422
437
|
|
|
438
|
+

|
|
439
|
+
|
|
440
|
+
*Above: the Ronin exploiter's first gas came from a Binance reserve wallet. Below:
|
|
441
|
+
`verify` re-derives a Dogecoin wallet's totals and matches them with the chain.*
|
|
442
|
+
|
|
423
443
|
### Victim lists and timing analysis
|
|
424
444
|
|
|
425
445
|
Two things a graph shows but can't hand you as evidence.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""crypttrace — OSINT crypto investigation CLI."""
|
|
2
|
-
__version__ = "0.
|
|
2
|
+
__version__ = "0.34.0"
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"0x2796317b0ff8538f253012862c06787adfb8ceb6": {"name": "Synapse: Bridge", "type": "bridge"},
|
|
98
98
|
"0x5427fefa711eff984124bfbb1ab6fbf5e3da1820": {"name": "Celer: cBridge V2", "type": "bridge"},
|
|
99
99
|
"0x841ce48f9446c8e281d3f1444cb859b4a6d0738c": {"name": "Celer: cBridge (old)", "type": "bridge"},
|
|
100
|
-
"0x098b716b8aaf21512996dc57eb0615e2383e2f96": {"name": "Ronin Bridge Exploiter (Lazarus)", "type": "sanctioned"},
|
|
100
|
+
"0x098b716b8aaf21512996dc57eb0615e2383e2f96": {"name": "Ronin Bridge Exploiter (Lazarus)", "type": "sanctioned", "source": "US Treasury OFAC SDN list, Lazarus Group entry (address added in April 2022); present in the SDN digital-currency address extract, github.com/0xB10C/ofac-sanctioned-digital-currency-addresses, checked 2026-11-07", "source_kind": "official-list", "added": "2026-11-07"},
|
|
101
101
|
"0x2f2974fabc54dba33442261211c06bd20e0feefc": {"name": "AFX Trade Exploiter (Jul 2026, $24M)", "type": "scam", "chain": "eth", "source": "Lookonchain, 23 Jul 2026 - received 24.15M USDC bridged from Arbitrum, swapped to 12,467 ETH", "source_kind": "research", "added": "2026-08-01"},
|
|
102
102
|
|
|
103
103
|
"bc1qq85v2c926eg6pgxhwp6q7lf6cnsz80qs3fcu9r": {"name": "Coldcard Exploiter (Jul 2026) - consolidation", "type": "scam", "chain": "btc", "source": "Galaxy Research flow-of-funds thread, 31 Jul 2026, based on Block (clay_garrett) analysis", "source_kind": "research", "added": "2026-08-09"},
|
|
@@ -285,6 +285,8 @@ const COLORS={exchange:'#3fdf87',mixer:'#c48cff',sanctioned:'#ff6b60',scam:'#ff6
|
|
|
285
285
|
const EXPLORER={eth:'https://etherscan.io',bsc:'https://bscscan.com',polygon:'https://polygonscan.com',
|
|
286
286
|
arbitrum:'https://arbiscan.io',optimism:'https://optimistic.etherscan.io',base:'https://basescan.org'};
|
|
287
287
|
const NON_EVM={btc:a=>`https://mempool.space/address/${a}`,
|
|
288
|
+
ltc:a=>`https://litecoinspace.org/address/${a}`,
|
|
289
|
+
doge:a=>`https://blockchair.com/dogecoin/address/${a}`,
|
|
288
290
|
tron:a=>`https://tronscan.org/#/address/${a}`,
|
|
289
291
|
sol:a=>`https://solscan.io/account/${a}`,
|
|
290
292
|
ton:a=>`https://tonviewer.com/${a}`};
|
|
@@ -486,6 +488,10 @@ async function inspect(addr){
|
|
|
486
488
|
async function run(){
|
|
487
489
|
const a=$('#addr').value.trim();
|
|
488
490
|
if(!a){ setStatus('enter an address',true); return; }
|
|
491
|
+
// the page's own address becomes a link to this investigation
|
|
492
|
+
const link=new URLSearchParams({address:a,chain:chain(),asset:$('#asset').value,
|
|
493
|
+
direction:$('#direction').value,depth:$('#depth').value});
|
|
494
|
+
history.replaceState(null,'',`?${link}`);
|
|
489
495
|
setStatus('tracing the chain…',false,true); loader(35);
|
|
490
496
|
$('#hint').classList.add('hide');
|
|
491
497
|
loaded={}; // new address -> other views must reload
|
|
@@ -514,6 +520,8 @@ async function run(){
|
|
|
514
520
|
async function syncAssets(){
|
|
515
521
|
const sel=$('#asset'), c=chain();
|
|
516
522
|
$('#addr').placeholder = c==='btc' ? 'bc1… / 1… / 3… Bitcoin address'
|
|
523
|
+
: c==='ltc' ? 'L… / M… / ltc1… Litecoin address'
|
|
524
|
+
: c==='doge' ? 'D… Dogecoin address'
|
|
517
525
|
: c==='tron' ? 'T… Tron address'
|
|
518
526
|
: c==='sol' ? 'Solana account address'
|
|
519
527
|
: c==='ton' ? 'UQ… / EQ… TON address'
|
|
@@ -821,6 +829,22 @@ $('#zroot').onclick=()=>{
|
|
|
821
829
|
setTimeout(showScale,520);
|
|
822
830
|
};
|
|
823
831
|
$('#addr').addEventListener('keydown',e=>{ if(e.key==='Enter') run(); });
|
|
832
|
+
|
|
833
|
+
// A link opens an investigation: /?address=…&chain=eth&direction=in&depth=4&asset=usdt&tab=check
|
|
834
|
+
(function(){
|
|
835
|
+
const p=new URLSearchParams(location.search), a=p.get('address');
|
|
836
|
+
if(!a) return;
|
|
837
|
+
const set=(id,v)=>{
|
|
838
|
+
const el=$(id);
|
|
839
|
+
if(v!==null && [...el.options].some(o=>o.value===v)){ el.value=v; el.dispatchEvent(new Event('change')); }
|
|
840
|
+
};
|
|
841
|
+
set('#chain',p.get('chain')); // first: it decides which assets are offered
|
|
842
|
+
set('#asset',p.get('asset')); set('#direction',p.get('direction')); set('#depth',p.get('depth'));
|
|
843
|
+
$('#addr').value=a;
|
|
844
|
+
run();
|
|
845
|
+
const v=p.get('tab');
|
|
846
|
+
if(v && [...document.querySelectorAll('.tab')].some(t=>t.dataset.view===v)) showView(v);
|
|
847
|
+
})();
|
|
824
848
|
</script>
|
|
825
849
|
</body>
|
|
826
850
|
</html>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crypttrace
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.34.0
|
|
4
4
|
Summary: OSINT toolkit for crypto investigations: trace stolen funds across Ethereum, Bitcoin, Tron, Solana and TON
|
|
5
5
|
Author: bobslayerX
|
|
6
6
|
License-Expression: MIT
|
|
@@ -50,12 +50,14 @@ here's the wallet — where did the money go, and where can it still be stopped?
|
|
|
50
50
|
Works as a terminal tool **and** as a local web app with an interactive
|
|
51
51
|
fund-flow graph.
|
|
52
52
|
|
|
53
|
-

|
|
54
54
|
|
|
55
|
-
*Real case: the
|
|
56
|
-
stolen ETH
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
*Real case: the Ronin bridge exploiter (Lazarus, 2022). The graph shows the
|
|
56
|
+
stolen ETH leaving in three transfers of 23,500–33,600 ETH, every one to a
|
|
57
|
+
wallet on the US sanctions list. The side panel shows what is known about the
|
|
58
|
+
address and where it comes from: the OFAC listing behind the label, USDT and
|
|
59
|
+
USDC blacklisted by Tether and Circle, and the first funding of the wallet —
|
|
60
|
+
1.06 ETH from a Binance reserve wallet, an exchange that knows who withdrew it.*
|
|
59
61
|
|
|
60
62
|
---
|
|
61
63
|
|
|
@@ -137,6 +139,8 @@ so scams that start in a Telegram chat often end there. TON addresses are
|
|
|
137
139
|
accepted in any form (`UQ…`, `EQ…` or raw `0:…`) and shown as wallets show
|
|
138
140
|
them (`UQ…`); jetton transfers are reported between the owners' wallets.
|
|
139
141
|
|
|
142
|
+

|
|
143
|
+
|
|
140
144
|
---
|
|
141
145
|
|
|
142
146
|
## Was my wallet drained?
|
|
@@ -161,6 +165,14 @@ history and answers in plain language:
|
|
|
161
165
|
jetton balances and NFTs from trusted collections, not airdropped spam), and
|
|
162
166
|
who to report to.
|
|
163
167
|
|
|
168
|
+
It also names any payment the wallet made to an address on a phishing or
|
|
169
|
+
sanctions list (ScamSniffer's phishing blacklist and OFAC's, downloaded with
|
|
170
|
+
`crypttrace update-labels`). A fake site or a signed token approval takes money
|
|
171
|
+
in one transfer, so there is no burst to find, but the destination gives it
|
|
172
|
+
away:
|
|
173
|
+
|
|
174
|
+

|
|
175
|
+
|
|
164
176
|
The web UI has the same check in its **Was I drained?** tab.
|
|
165
177
|
|
|
166
178
|
### An evidence pack for the exchange and the police
|
|
@@ -192,8 +204,11 @@ explorer. A side panel shows the profile, first-funder chain, off-ramp check
|
|
|
192
204
|
and whether USDT/USDC at the address is frozen. Tabs add the assessment, the
|
|
193
205
|
timeline, the list of who sent funds here, and address poisoning (look-alikes
|
|
194
206
|
planted in the wallet's history, and payments lured by this address). **Case
|
|
195
|
-
file** downloads the same one-page HTML report `crypttrace report` writes
|
|
196
|
-
|
|
207
|
+
file** downloads the same one-page HTML report `crypttrace report` writes;
|
|
208
|
+
**GraphML** and **CSV** download the graph for Gephi or Maltego. The page's
|
|
209
|
+
address is a link to the investigation
|
|
210
|
+
(`/?address=…&chain=…&direction=…&depth=…&tab=check`), ready to bookmark or
|
|
211
|
+
send. Everything runs on your machine — nothing is uploaded anywhere.
|
|
197
212
|
|
|
198
213
|
This exists so non-technical victims can use the tool at all: a form and a
|
|
199
214
|
picture, instead of command-line flags.
|
|
@@ -454,6 +469,11 @@ explorers list newest first, so there it is the earliest of the latest 200
|
|
|
454
469
|
transfers. On EVM chains a first funding sent by a contract (a mixer or bridge
|
|
455
470
|
withdrawal, an internal transaction) counts and is flagged.
|
|
456
471
|
|
|
472
|
+

|
|
473
|
+
|
|
474
|
+
*Above: the Ronin exploiter's first gas came from a Binance reserve wallet. Below:
|
|
475
|
+
`verify` re-derives a Dogecoin wallet's totals and matches them with the chain.*
|
|
476
|
+
|
|
457
477
|
### Victim lists and timing analysis
|
|
458
478
|
|
|
459
479
|
Two things a graph shows but can't hand you as evidence.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|