diff --git a/wack b/wack index b2c174a..50354ca 100755 --- a/wack +++ b/wack @@ -19,28 +19,32 @@ my $avg_xtn_size = 0; my $meta = {}; # guess the coin a wallet.dat came from +# NOTE: Zcash wallets start out with no shielded addresses +# and look exactly like BTC wallets, except for address prefixes +sub is_zec_prefix { $_[0] eq 't1' or $_[0] eq 't3' } +sub is_kmd_prefix { $_[0] eq 'R' or $_[0] eq 'b' } sub detect_coin { my ($c,$meta) = @_; - my $coin = ""; + my $coin = "BTC"; print "PREFIX=" . $meta->{prefix} . "\n"; - my $p1 = substr($meta->{prefix}, 0, 1); - # only sapling-enabled coins have these keys + my $prefix = $meta->{prefix}; + my $p1 = substr($prefix, 0, 1); + + if (is_kmd_prefix($p1)) { + $coin = "KMD or asset chain"; + } elsif (is_zec_prefix($prefix)) { + $coin = "ZEC/HUSH"; + } + + # NOTE: Some wallets will have a mix of Sprout + # and Sapling keys in same wallet if ($c->{sapzkey} or $c->{sapzkeymeta}) { - if ($meta->{prefix} eq 't1') { - $coin = "ZEC Sapling"; - } elsif ($p1 eq 'R') { - $coin = "KMD Sapling"; - } + $coin .= " Sapling"; # only zcash forks have these } elsif ($c->{zkey} or $c->{zkeymeta}) { - if ($meta->{prefix} eq 't1') { - $coin = "ZEC/HUSH Sprout"; - } elsif ($p1 eq 'R') { - $coin = "KMD Sprout"; - } - } else { - $coin = "BTC"; + $coin .= " Sprout"; } + return $coin; } while (my ($k,$v) = each %wallet) { @@ -103,7 +107,7 @@ while (my ($k,$v) = each %wallet) { } $avg_xtn_size = $counts->{tx} ? $avg_xtn_size / $counts->{tx} : 0; -printf "\n=====Wallet Key Stats=====\n"; +printf "\n=====Wallet $filename Stats=====\n"; my @keys = sort { $counts->{$b} <=> $counts->{$a} } keys(%$counts); my $numkeys = scalar @keys; for my $k (@keys) {