[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: How to remove some useless nodes

On Jan 29, 2008 6:47 PM, Jackie <g06b08120301@xxxxxxxxxxxxxxxx> wrote:
> To remove these fucking nodes mannually one by one is a boring job!!!
> I wonder where to get a router list which contains information about
> country, or just a exit nodes list is much more better!
> Does Tor keep a copy of router list on my PC?
Yes, it does. The router list and the geolocation data are kept
separately. If you are using Windows, the Tor configuration directory
which keeps the router list is likely to be
"[your-system-drive]\Documents and
Settings\[your-username]\Application Data\Tor". The Vidalia
configuration directory which keeps the geolocation data would be
"[your-system-drive]\Documents and
Settings\[your-username]\Application Data\Vidalia".

My previous script makes use of the file "cached-descriptors" in your
Tor configuration directory, and the file "geoip-cache" in your
Vidalia configuration directory. If you're using Tor 0.2.x, here's a
more efficient Perl script that uses
[Tor-config-directory]\cached-consensus and


# Usage
if (@ARGV != 3) {
  print "Usage: $ENV{'_'} [2-letter-country-code] [consensus-file] [geoip-file] \n";

$ARGV[0] = uc($ARGV[0]);

# Build ip-to-country hash table from geoip cache
while (<GEOIP>) {
  ($ip,undef,undef,$country,undef) = split(/,/);
  $geoip{$ip} = $country;

# Parse descriptor file and extract fingerprints
$switch = false;
while (<CONSENSUS>) {
  @params = split(/ /);
  if ($params[0] eq 'r') {
    $switch = $geoip{$params[6]} eq $ARGV[0];
    $fingerprint = $params[2];
  } elsif ($switch && $params[0] eq 's') {
    $switch = $switch && grep(/Exit/,@params);
  } elsif ($switch && $params[0] eq 'v') {
    $fingerprint =~ tr#A-Za-z0-9+/##cd;
    $fingerprint =~ tr#A-Za-z0-9+/# -_#;
    $len = pack('c', 32 + 0.75*length($fingerprint));
    $fingerprint = uc(unpack('H*',unpack('u', $len . $fingerprint)));
print 'ExcludeNodes ',join(',',@exclude),"\n";