this post was submitted on 11 Aug 2023
581 points (96.5% liked)

Privacy

29869 readers
1332 users here now

A place to discuss privacy and freedom in the digital world.

Privacy has become a very important issue in modern society, with companies and governments constantly abusing their power, more and more people are waking up to the importance of digital privacy.

In this community everyone is welcome to post links and discuss topics related to privacy.

Some Rules

Related communities

Chat rooms

much thanks to @gary_host_laptop for the logo design :)

founded 4 years ago
MODERATORS
 

An external image showing your user-agent and the total "hit count"

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 168 points 11 months ago (19 children)

Made a meme one that took 3 minutes to program, 5 minutes to find a good offline GeoIP location source for, 10 minutes to come up with a design for, and half an hour to make sure nothing got logged by the web server.

An image that tells you where you live based on your GeoIP location

[–] [email protected] 27 points 11 months ago

Finally. Someone noticed πŸ₯Ή

[–] [email protected] 26 points 11 months ago (1 children)

Joke's on you. IP geolocation where I am is an unreliable mess and your image got it wrong by about 1000km!

[–] [email protected] 13 points 11 months ago

I'm sure it would be better if I paid MaxMind money, but that'd go a bit far for a stupid meme picture that I'll probably take down in less than a week.

[–] [email protected] 21 points 11 months ago (2 children)

Location is right, but I highly doubt anyone near me is using Lemmy (dictatorship here).

[–] [email protected] 26 points 11 months ago

If you live in a dictatorship and this thing can get your location right, you should probably be using some kind of VPN. Wouldn't want you to run into trouble with the regime!

[–] [email protected] 8 points 11 months ago

I'm curious about your choice not to VPN but I also really don't want to pressure you into saying anything you shouldn't.

[–] [email protected] 10 points 11 months ago

Great, hot milfs near my location

[–] [email protected] 9 points 11 months ago (1 children)

I’m not using a VPN or anything and it got my location wrong by 700 kilometers πŸ€”

[–] [email protected] 23 points 11 months ago (1 children)

Are you sure you are where you think you are? When's the last time you looked outside?

[–] [email protected] 10 points 11 months ago

Oh no! I've been kidnapped!

[–] [email protected] 7 points 11 months ago (1 children)

Woah this is really cool. Though I was way off for me and I'm not on a VPN right now.

[–] [email protected] 4 points 11 months ago

That's a good thing to be honest, but feel free to send in corrections to the data source if you want internet companies to stalk you.

[–] [email protected] 6 points 11 months ago

Thanks for the heads-up.

Routing my Lemmy mobile app through orbot from now on. Seems to have fixed the issue.

[–] [email protected] 5 points 11 months ago

I wonder why the Baltimore community is so dead, then.

[–] [email protected] 5 points 11 months ago (2 children)

You can run Geolocation with images now? What the heck? How?

[–] [email protected] 25 points 11 months ago* (last edited 11 months ago)

The image is generated on demand by a PHP script. It's not a static image file. Every time the web browser sends a GET /poc.png, a new image is generated based on the information your browser or app sends the server.

It's actually how a lot of tracking code works. The image data returned may be the same, but the data collection through cookies and maybe even some passive fingerprinting all happen every time you send a request.

[–] [email protected] 12 points 11 months ago (1 children)

It's not the image, it's a normal image. The server does the hard work when you make the request, and then it just builds the image accordingly.

[–] [email protected] 4 points 11 months ago

Yeah I saw OPs explanation in the comments. That is fucking cool! And scary! I've never needed to generate images with code before, so Ive never even considered something like this before.

[–] [email protected] 4 points 11 months ago

This is great, because it located me about a full day's drive from where I live, so I'm still pretty anonymous :-)

[–] [email protected] 4 points 11 months ago (1 children)

You have the code for this? Very interested in how you implemented it

[–] [email protected] 17 points 11 months ago* (last edited 11 months ago) (1 children)

Probably has bugs. Probably no security bugs. Feedback is welcome (but I don't care enough about this to try my hardest).

require_once('/var/www/html/geoip2.phar');
use GeoIp2\Database\Reader;

$ip = $_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'];

$cityReader = new Reader('/var/local/php/GeoLite2-City.mmdb');
$record = $cityReader->city($ip);

header('Content-Type: image/png');

$image = @imagecreatefrompng('lemmybase.png');

$black = imagecolorallocate($image, 0, 0, 0);

// "Some City, SS, Country Name"
$text = $record->city->name . ', ' . $record->mostSpecificSubdivision->isoCode . ', ' . $record->country->name;

/* $font_path = '/tmp/ComicSand.ttf'; */
$font_path = '/usr/share/fonts/ubuntu/Ubuntu-M.ttf';

// Render text
imagettftext($image, 30, 0, 28, 224, $black, $font_path, chunk_split($text, 22));

// Dump image to web server
imagepng($image);

// Free resources
imagedestroy($image);

Edit: damn, Lemmy really hates < ? php. Just imagine that's the first line in the file.

[–] [email protected] 10 points 11 months ago (3 children)

Damn, PHP is such a sleeper of a language, I always forget how useful it can be.Thanks for sharing!

[–] [email protected] 8 points 11 months ago (2 children)

PHP is underappreciated, especially recent PHP. Null coalescing operators! Actually typed variables that produce an error if you pass the wrong type! It's superior to Python despite it's mid-2000s-spaghetti-college-kid-developer reputation.

Hell, I may get downvoted for this, but I honestly believe PHP's Doctrine is superior to Java/Kotlin's Hibernate. Symfony and Spring are almost equally good in terms of functionality, though PHP is quite a lot slower, sadly.

[–] [email protected] 1 points 11 months ago

Nice, sounds like it's getting modernized. I'll have to give it another round, thanks!

[–] [email protected] 0 points 11 months ago* (last edited 11 months ago) (1 children)

Genuinely curious, how is it superior to Python in your opinion?

Edit: Apart from the things you listed πŸ˜…

[–] [email protected] 4 points 11 months ago

It can run natively on an Apache server without any frameworks required to render user website markup and serve pages. That's a pretty awesome advantage.

[–] [email protected] 3 points 11 months ago

PHP is the OG bad-ass for getting shit done. No setup, no compile, no deployment pipelines. Hell, you can create and write the files right there on the server with nothing more than an SSH terminal if you want.

[–] [email protected] 2 points 11 months ago

PHP is pretty damn awesome really... Sad that it's gone out of favor IMHO

[–] [email protected] 4 points 11 months ago (1 children)

My location is accurate, to give some good feedback on your program too lol

[–] [email protected] 1 points 11 months ago

Haha it's just an IP lookup in a free database I've downloaded, I did 0% of the hard work. Thanks for the reply anyway!

[–] [email protected] 4 points 11 months ago* (last edited 11 months ago)

I was wondering for a second why my town of all places was posted lmao. Also made me realize I forgot to turn my vpn back on.

[–] [email protected] 4 points 11 months ago* (last edited 11 months ago)

Thought about adding the user's location, but was worried PythonAnywhere could somehow cache the image between multiple people. A great demo though!

[–] [email protected] 3 points 11 months ago

Hah, not my town, but close. That's where my ISP is located though.

[–] [email protected] 2 points 11 months ago

I'm not using a VPN and the location isn't accurate.

[–] [email protected] 1 points 10 months ago (1 children)

I hate this so much. Its super cool but MAN what the hell. I don't think I'm going to ever turn off my VPN anymore. I'm in a super small town and that image is correct.

It's cached somewhere because I can't get it to update. Maybe time for a new account too. Hmmmm

[–] [email protected] 1 points 10 months ago* (last edited 10 months ago) (1 children)

It's should only be cached in your browser. Try opening the image in a new tab and hitting Ctrl+Shift+R. Opening it in a porn tab or clearing your browser cache should also work.

[–] [email protected] 1 points 10 months ago

Yeah, app cache had to be cleared. We good

[–] [email protected] 1 points 11 months ago (1 children)

Hey. I wanted to do this tomorrow.

Well I have a new idea which is pretty similar

[–] [email protected] 2 points 11 months ago (1 children)

I originally planned to do something based on the Referer header, but the browser doesn't send those for linked images.

In theory you can do a lot with this. Detect VPNs based on MTU, for example, or if you're malicious, turn it into a tracker.

[–] [email protected] 4 points 11 months ago (1 children)

I'm plannig to make one of these "dox'd memes" where someone says something controversial and another one answers with the ip address.

[–] [email protected] 3 points 11 months ago

Ah, I see! I was also thinking of maybe using something like Google Earth to make a GIF that zooms into your local area but that was waaaaaaay to computationally expensive to render on the server.

[–] [email protected] 1 points 11 months ago

It’s got me about an hour from where I actually am