Passive TCP/IP Geo-Location
geoloc.foremski.pl
geoloc.foremski.pl
Really there should be a max function that shades the entire earth (or ignores it since that result really can't tell you anything).
Theoretical minimum RTT's based on the speed of light for systems on the opposite side of the world is nice and all but doesn't take into account the realities of packet processing on the internet.
This only ever gets as close as your ISP, or perhaps a local routing center if your ISP has multiple (mine has only one in Amsterdam, I live on the other side of the country). This means it's less accurate than your typical GeoIP database.
Edit: I'm no longer sure this is the same. The title mentions "passive", and from another comment I understand that the author meant that you can find someone's location if you are the man in the middle, observing traffic to various places around the world. This is definitely something I had not considered yet!
If you check the HTML source, it's src'ing scripts from machines around the world (I assume whatever host is being used, the author has spun up a VPN in each of their data centers). Here's an example of one [2]. Each of these sends you a constant value over and over again, and the server side measures the latency, before finally reporting the average round-trip time to you.
I don't get how that could be called passive. This is making your browser issue requests or am I missing something?
That being said, I highly doubt there are many requests being made to Bangalore, India and this appears to require requests to a wide array of locations all over the world.
Additionally I once made a map of destinations from our school's "security lab" network. This is 30 minutes of traffic: https://snag.gy/aJqrg2.jpg
The map is a modified version of the one generated by Wireshark (circles are proportional to the amount of data going from/to that IP address). It seems to use Maxmind's GeoIP database.
You visit a website that uses one or more CDNs for its big resources, and uses Cedexis to choose CDN node. When you first visit, Cedexis instructs your browser to retrieve small resources from some/all CDN nodes. Based on timings and throughput, it then chooses a CDN node to use for big resources.
If Cedexis does its job well and obtains the right data for Cedexis' purposes, then the passive observer also gets optimally usable data.
Another comment mentioned someone monitoring your traffic and noting your RTT (roundtrip time) for various IP addresses around the world. That seems much more likely.
This is like measuring intensity of the Sun with the naked eye.
Look at the color-tint to find out what is inside and what is outside a circle.
Which is the same problem with using it to determine if the user is "too far" from the server. You can get extra latency (and thus false positives) whenever there is bufferbloat or a lame corporate network that routes traffic from New York to New York via a network appliance in California or similar.
A congested network link can easily add more than 100ms of latency due to buffering. At the speed of light that's thousands of miles.
You can't even say that if the latency between the proxy and the browser is only 10ms then the user is physically close to the proxy, because you don't know if the user is running the browser on a VPS with something like X forwarding.
But I also assumed an investigative organization that took the idea further would use the latency information with a map of latencies between major internet exchanges. This would increase accuracy and usefulness, though still the entire idea only works to provide indefinite clues
For me, the most specific fix is provided by New York and San Francisco. Together, they can tell that I'm somewhere in the US, Canada, or Mexico. (But, of course, you could have figured that out from GeoIP.)
The first thing that comes to mind would be combining this with peer-to-peer pinging - which if the swarm is big enough could potentially provide a fairly decent geolocation mechanism.
If he added a few more servers and set a max ping rt it would become a lot more accurate.
And it doesn't really replace geoip, but implemented correctly can be used very affectively for latency based routing (similar to what AWS has).
If you want city-level accuracy, at least in US, just use geo IP lookup: https://geoiptool.com/ This finds my city perfectly, unlike the link above (which says I'm somewhere on US West coast).
I'm actually using a VPN (euro214.vpnbook.com), which, based on the name, should be somewhere in Europe. But who knows? If I disconnect the VPN, Google and Geoiptool both get my town right, and Maxmind is one town over. I'm using Verizon FiOS.
As for the geolocator, the ping times range from 172 ms (Frankfurt, Germany) to 524 ms (Singapore). Too large to be of use. With the VPN disconnected, it lucks out with a 12 ms ping to New York, resulting in a yellow circle accurately indicating that I am in the northeast US.
Looking at the no-VPN map[2], there are small circles corresponding the antipodes[3] of Singapore (purple) and Bangalore (blue). Without the New York ping, the map would be completely useless.
[1]https://dev.maxmind.com/geoip/geoip2/geolite2/
+1 for Little Snitch.
It only took me a few days to work out whitelists/blacklists for the sites I use often, i.e. most citicards.com subdomains get an "allow" but cardoffer.citicards.com gets a "deny". On other sites I come across it's usually trivial to whitelist the domains that provide their functionality, and most adservers and tracking servers I've already blocked.
Given browsers are the main place I get tracked, putting an allow all for my browser seems to defeat the purpose.
That said, it was pretty annoying the first few days.
For browser I usually use Noscript... Not the same because it only blocks JS files though.
Was wondering perhaps HN big heads can explain it to me:) I suspect it is somehow related to how Google operates its SDN and that IP is assigned to massive AS block.
Nevertheless, I think there is a decent performance risk when CDNs serve from US based cache rather than local.
But with servers in more locations, and possibly accounting for network topology (could be mined with traceroute?), accuracy could go quite up.
You could get a more precise location by simply reverse-DNSsing my IP address.
It's confusing, some of the circles are shaded inside and some outside. I think the idea is if the ping is high it covers the whole globe except a circle around the antipodes (shaded outside), and if the ping is low it only covers around the server (shaded inside).
now it shows me in Ecuador?
i am actually on west coast canada
Green: Not in the Indian Ocean.
Blue: Not in the Pacific near Ecuador.
Yellow: Not in the Southern hemisphere.
Red: Somewhere in Europe, Greenland, North Africa, or Svalbard.
In your case, the red circle is the only one that really matters. Yellow took a tiny slice out of it near Iraq.