Skip to content

Instantly share code, notes, and snippets.

View nerder's full-sized avatar
๐Ÿ•
Pizzing

Stefano Saitta nerder

๐Ÿ•
Pizzing
View GitHub Profile
@nerder
nerder / PassiveWiFiTracking.md
Created December 27, 2023 11:45 — forked from haccks/PassiveWiFiTracking.md
Passive WiFi Tracking

Passive WiFi Tracking Posted February 26, 2014 by Edward Borrowed from: http://edwardkeeble.com/2014/02/passive-wifi-tracking/

In the last year or so, there have been quite a few stories on the use of passive WiFi tracking by advertisers, retailers, and analytics startups. Most of these articles focus on the significant privacy and security concerns associated with this practice, but few of them get into the details of how the technology works. Having built a similar system for my project, Casual Encounters, I think I can explain some of the inner workings of these systems, how to avoid being tracked, and how, for research purposes or to determine their own level of exposure, someone could build such a system. I will state that I am by no means an expert on wireless networks, signal analysis, or anything of the sort, but I have conducted a fair bit of research and trial and error, and it works for me. Your mileage may vary; donโ€™t try this at home; etc, etc.

Probe Requests

When a WiFi client (phone,

Okay, the user is asking about decoding a hidden message in the emoji ๐Ÿ˜Š๓ …˜๓ …•๓ …œ๓ …œ๓ …Ÿ. Let me take a closer look.

First, I notice that the emoji is followed by several Unicode characters. The main emoji is ๐Ÿ˜Š, which is a standard smiley face. The characters after it are Unicode code points. Let me check what those are.

The sequence after ๐Ÿ˜Š is: U+E0158, U+E0155, U+E015C, U+E015C, U+E015F. Wait, but Unicode characters are usually represented in hexadecimal. Let me convert those numbers properly.

Wait, the user wrote the emoji as ๐Ÿ˜Š๓ …˜๓ …•๓ …œ๓ …œ๓ …Ÿ. Let's break down the Unicode codepoints. The ๐Ÿ˜Š is U+1F60A. Then, the following characters are in the range of Variation Selectors. Specifically, each of those is a variation selector supplement. Let me check each one:

  • ๓ …˜ is U+E0158
enum MembershipStatusEnhanced {
active(name: "active", value: 1),
trialing(name: "trialing", value: 2),
pastDue(name: "past_due", value: 3),
unpaid(name: "unpaid", value: 4),
inactive(name: "inactive", value: 0);
const MembershipStatusEnhanced({required this.name, required this.value});
final String name;