Introduction: Human Identifier From Wi-Fi Address
It is quite common in our modern, ever-connected world for individuals to carry around one or more wireless communications devices with them almost all of the time. For example, you probably usually have your mobile phone with you as you move about during the day. Many of these devices are Wi-Fi enabled and transmit various wireless packets that include a Wi-Fi Media Access Control (MAC) address unique to that device.
Just as you can easily identify your friend when she enters the room from her physical appearance or the sound of her voice, a computer can easily identify her from her radio emissions. Specifically, the computer can detect the MAC address on the Wi-Fi packets that her phone transmits. We can identify, tag, and track these identifications using hardware that is so small and inexpensive (less than $10) that it can be placed wherever we might want to see who is coming and going.
Once miniaturized and refined, everything needed for this project will be included in a future monthly subscription box from HackerBoxes.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Gear Up
- Wireless Interface
- Microcontroller Platform
- Flash Card and Software
- Power Supply and Enclosure
Step 2: Wireless Interface
For the wireless interface, we are going to use a Wi-Fi module. We obviously want one that is in a small physical package (like a USB dongle), but more importantly we need a Wi-Fi module that supports monitor mode.
A typical wireless interface only looks for data packets that are addressed to it. However, using an interface operating in monitor mode can give us a look at all of the radio packets bouncing around the room so that we can see what MAC addresses are being used. These MAC addresses uniquely identify each piece of wireless communication equipment, such as a mobile phone.
Currently, a great option for our wireless adapter is a USB Wi-Fi dongle based on the Ralink RT5370 integrated circuit. These adapter can be purchased for well under $10, are readily available, and have the driver software that we need.
Step 3: Embedded Microcontroller Platform
An easy initial choice for our microcontroller platform is the Raspberry Pi. The Pi has the necessary USP port, is relatively inexpensive, and can run rather full-featured UNIX-like operating systems. Such operating systems can easily provide the driver, network stack, and tools necessary to pull MAC addresses out of the thin air. The Pi is basically a small computer.
A Raspberry Pi can be had for around $30 and a lot of hobbyists these days already have one sitting around. For this project, we do not need a wired Ethernet port, so even a Model A+ Raspberry Pi should suffice. These can be purchased for under $20.
For the sake of miniaturization, cost-reduction, further refinement, and just playing with more microcontrollers, we are experimenting with a lower cost, substitute embedded platform using an STM32 microcontroller based on the ARM Cortex-M3. The STM32 can run uClinux although memory requirements can be a challenge. Also, some additional software work is required for a driver to talk to the Wi-Fi interface and a simple MAC address sniffing tool at the application layer.
Lastly, STM32 boards are generally set up in USB Device mode to connect to, and draw power from, a host computer. To use the USB port in USB Host mode (in order to host the Wi-Fi interface dongle) requires some modification. For example, in Host mode, the STM32 must power the USB port, not be powered by it. Accordingly, the power needs to be wired directly to one of the power pins of the STM32 board from a power supply that can support both the STM32 board and the USB Wi-Fi dongle.
Step 4: Flash Card and Software
For the Raspberry Pi, we can use an 8GB SD Card to load the UNIX-like operating system called Raspbian. The Wireshark tools including the program Tshark are also installed. These tools are used for capturing the network addresses from the radio environment.
Alternatively, a one step option is to use Kali Linux, which comes preconfigured with several network security and analysis tools.
Step 5: Power Supply and Enclosure
In general, a 5V USB power supply may be used. These are often called a “phone charger” or a “wall wart.” They feature a USB port that only provides a power and ground (at 5V) signal.
Let’s consider the power budget for this project, a Raspberry Pi can draw 1-2A from a 5V supply. A Wi-Fi dongle draws about 100mA to 500mA. This gives us a peak of about 2.5A. However, many common USB power supplies are only 1A (5W) or 2A (10W). To be safe, it is best to look for a heftier 3A (15W), or greater, power supply.
All of the parts for the MAC Track can be can be integrated into a small enclosure or a “wall wart” to provide a neat installation or a little added stealth. That said, it is not a very good idea to break into an AC (mains) power supply unless you really know what you’re doing. There are some very angry electrons in there.
Step 6: Endless Uses for the “MAC Track”
Making a sound or lighting up an LED when an unknown MAC address is detected can give you the opportunity to tag that MAC address as belonging to a person who just walked into the room. Eventually you will have a library linking MAC addresses with people. This can be done at the command line, but developing a mobile application for notifications and for making associations between people and MAC addresses would be really handy.
In an example use case, an amplified speaker and some speech synthesis code could be added to announce or great people as their MAC addresses are detected in the area. “Hello Dave.”
Placing the MAC Track near your front door can alert you when someone approaches and tell you who they are if they have already been associated with their MAC address. “The mailman is here, Dave.”
Of course announcing unknown MAC addresses may warn of an intruder, or perhaps grandma has just shown up with her new iPad. “I'm sorry Dave, I'm afraid I can't do that.”