GeoIP database comparison

Martin Mulazzani e0225055 at student.tuwien.ac.at
Mon May 10 15:44:32 UTC 2010


Zitat von Karsten Loesing <karsten.loesing at gmx.net>:

> On 5/6/10 11:49 AM, Roger Dingledine wrote:
>> On Mon, May 03, 2010 at 06:40:13PM +0200, Martin Mulazzani wrote:
>>> TorStatus is already using the Maxmind GeoLite database.
>>
>> I've been wondering for a while why
>> http://trunk.torstatus.kgprog.com/index.php
>> has so many relays listed as Namibia. They're pretty clearly not in
>> Namibia.
>
> You're right, Torstatus is wrong.
>
> I just resolved the IP addresses from the torstatus output at
> http://trunk.torstatus.kgprog.com/query_export.php/Tor_query_EXPORT.csv
> using Maxmind's free database from May 1. Below you'll find the lines
> where Torstatus and Maxmind disagree.


The GeoIP.dat @ trunk.torstatus... seems to be out of date. On my 
instance  there is currently no relay in Namibia, and my GeoIP.dat is 
from May 1st. http://torstatus.kgprog.com seems to be up2date too.

TorStatus checks for updates of the GeoIP file, and should update 
automatically. Might be a file permission issue at trunk.torstatus...


> Random thought: does Torstatus use "NA" as abbreviation for "not
> available" when resolving IP addresses, but as "Namibia" when choosing a
> flag to display?


Sounds reasonable. If GeoIP returns NA for unknown countries, TorStatus 
should use the nna.gif instead of the na.gif. We will open a ticket for 
that and check it.


> Also, how recent is the GeoIP database that Torstatus, especially
> trunk.torstatus.kgprog.com, uses?
>
> At the end of this mail, you'll also find the Java code to generate this
> output. Put the geoip file from current Tor master and the .csv as
> stated above in the same directory, compile, run.
>
> Best,
> --Karsten
>
>
> First column = Maxmind
> Second column = Torstatus
> Third column = nickname
>
> US NA 0x41414141
> DE NA 0x42FF
> US NA 107167
> RU NA a1s2ew4wfedjhc6je8
> DE NA agitator
> CA NA andromeda
> CA NA anona
> US NA avarner
> PL NA Azhar
> DE NA b215c035618f047d
> SK NA backslash777
> CA US BarkerJrNet
> SK NA BecherovHomeunix
> DE NA bingsFreeNet
> DE NA bmwanon
> CA NA buttercup
> BY NA ByHomenet
> NL NA canon
> US NA canoworms
> NL NA carpetbagger
> DE NA Cerritus
> CA NA chuckthecanuck
> IE NA cupboard
> US NA customer679498
> US NA dametenshi
> DE NA DerAufbruch2
> GB NA deusexmachina
> GB FR devasdfasdf
> DE NA Diega
> US NA DigitalFreedom
> DE FR Dinosaur
> FR NA djiins
> UA NA DLag
> SE NA DVBT
> GB NA DynoTor
> DE FR Edmontosaurus
> DE NA Enigma
> GB NA F00DD00D
> DE NA ferrot04st
> RU NA FFA
> RU FR Fisto
> DE NA flunkey
> DE NA Freedom
> SE FR frogbeard
> DE NA gartentor
> US NA greyunknown
> RU NA GuyRitchie
> UA NA happiness
> CA NA harman2
> RU NA HazarD
> RU NA HellyMotion
> DE IL herecomesthesun
> RU NA hometoorspbru
> US NA hurrdurr
> DE NA HWR
> RU NA IDDQD
> TH NA igor1977
> US NA ihas5cat
> NL NA ItsHiddenYa
> DE IR jefOlewkia
> US NA jetddna
> US NA jujubee
> DE NA justanothernode
> DE NA kaon
> US NA knegg
> GB NA kuzlatko
> US NA lapiste
> GB NA lego
> CA US Link2VoIP
> DE NA LittleMao
> DE NA ljsilver
> US NA lot49
> GB NA MaoUK2
> FR NA matterhorn
> DE NA megaantisanitary1
> TW AU MgeniUser
> DE NA MicsInTrees
> DE NA Mischmaschine
> DE NA mullbinde3
> DE NA nerdsurf
> US NA networkb289be5
> DE NA netzfrei2
> GB IT nixgeek
> US NA nockodotnet
> GB NA node13
> LK NA NSTHome
> US NA oldthink
> IL NA OnionFox
> DE GB OrionTorNode
> HK NA pangu
> CA US Pasquino
> SE NA PPrivComSweden
> GB NA PPrivComUK4
> CZ NA PwNibulikvps83
> DE NA qeki0i7g3kd8tynseg0
> RU LU QLEnDGKmay
> DE NA raf
> US NA RankaLee
> UA NA ReactorRelay
> US NA revo
> TH NA rsquarersharp
> US NA SamuraiPizzaCat
> DE NA SedanUK
> FR NA servicePublic
> CA US Shaft
> MN NA Shaman0
> DE NA shawnthesheep
> DE NA shiven
> US NA singulicity
> DE NA sork
> ID NA speekfree
> US NA srv1esctoulous
> US NA srv3
> US NA srv4
> US NA srv5
> US NA srv6
> US NA stegosaurus
> DE NA Suga23
> US NA SuperDave
> SE NA SwedishBikiniTeam
> SE NA swetzsupertor
> US NA taoppv
> TR GB TinyTurtle
> FR NA ToileLibre
> DE IR Toni
> DE NA TOR2fm1
> GB DK toroftheworld
> DE NA torschlusspanik2
> RO NA trafficlight
> GB NA triczlinode
> TR GB umbrella
> US NA underdonk01
> US NA underdonk02
> US NA Unnamed
> AL NA Unnamed
> AT SE Unnamed
> DE NA Unnamed
> US NA Unnamed
> IR NA Unnamed
> CA NA Unnamed
> DE NA Unnamed
> IR NA Unnamed
> KR NA Unnamed
> JP AU Unnamed
> JP AU Unnamed
> RU NA uran
> GR NA Vagabond2
> GB NA vee
> CA NA Waldo
> DE NA wg362
> US NA wingedgods
> NL NA worldstr989418
> NL NA worldstre0f571
> US NA ydobonobody
> DE NA zermanes
> DE NA Zwiebelschale3
>
>
>
> import java.io.*;
> import java.util.*;
> public class ResolveRelayCountries {
>  public static void main(String[] args) throws Exception {
>    File geoipFile = new File("geoip");
>    File torstatusOutput = new File("Tor_query_EXPORT.csv");
>    BufferedReader br = new BufferedReader(new FileReader(geoipFile));
>    String line = null;
>    SortedMap<Long, String> geoipLines = new TreeMap<Long, String>();
>    while ((line = br.readLine()) != null) {
>      if (line.startsWith("#")) {
>        continue;
>      }
>      geoipLines.put(Long.parseLong(line.split(",")[0]), line);
>    }
>    br.close();
>    br = new BufferedReader(new FileReader(torstatusOutput));
>    br.readLine();
>    while ((line = br.readLine()) != null) {
>      String nickname = line.split(",")[0];
>      String reportedCountryCode = line.split(",")[1];
>      String ip = line.split(",")[4];
>      String[] octets = ip.split("\\.");
>      long ipNum = Long.parseLong(octets[0]) * 256L * 256L * 256L
>          + Long.parseLong(octets[1]) * 256L * 256L
>          + Long.parseLong(octets[2]) * 256L
>          + Long.parseLong(octets[3]);
>      SortedMap<Long, String> subMap = geoipLines.headMap(ipNum + 1L);
>      if (subMap.isEmpty()) {
>        System.out.println("  ?? " + reportedCountryCode + " "
>            + nickname);
>      } else {
>        long intervalStart = subMap.lastKey();
>        String geoipLine = geoipLines.get(intervalStart);
>        long intervalEnd = Long.parseLong(geoipLine.split(",")[1]);
>        if (intervalStart <= ipNum && intervalEnd >= ipNum) {
>        String countryCode = geoipLine.split(",")[2];
>          System.out.println((countryCode.equals(reportedCountryCode)
>              ? "  " : "* ") + countryCode + " " + reportedCountryCode
>              + " " + nickname);
>        } else {
>          System.out.println("  ?? " + reportedCountryCode + " "
>              + nickname);
>        }
>      }
>    }
>  }
> }
>





More information about the tor-dev mailing list