BusyBear
Contents
Project Proposal
Overview
It always seems like an impossible task to find an open table to work or a quick line for food across the WashU campus. BusyBear's goal is to create a database that is accessible to WashU students that will show the population and busyness trends of popular locations on campus, beginning with Bear's Den. By using a network adapter connected to the Raspberry Pi, we will receive an approximate measurement of busyness based on the number of found MAC addresses for a specific region. By looking at pictures taken simultaneously with the MAC address collection, a historic trend between the number of found MAC addresses and relative busyness can be determined. We hope to be able to store this information in a database hosted by AWS and display this data on a website. Our end goal is to gather information to allow the WashU community to create more educated decisions regarding where to go and when to go there.
Team Members
Thomas Emerson
Tom Goon
Allison Todd
David Tekien, TA
Jim Feher, Instructor
Links
[Project Log]
[Project Presentation]
[GitHub Repository]
[Network Adapter Monitoring Mode Tutorial]
Objectives
- Learn and be able to code in Python as related to the Pi
- Use sniffing/MAC tracking method in the analysis of busyness
- Investigate the use of the camera in the analysis of busyness
- Be able to monitor busyness fairly accurately by filtering detected devices
- Compare busyness at different times of day and between buildings
- Design a GUI for an aesthetically pleasing and useful website
- Host a website displaying useful and relevant data through Amazon Web Services (AWS)
Challenges
- Limited experience with working with WiFi receivers or anything to do with MAC Addresses
- Limited knowledge of Python and Raspberry Pi
- Connecting our data with a database, AWS, and a website
- Privacy Concerns
Gantt Chart
Budget
Item | Description | Cost | Link |
---|---|---|---|
AWS | Website Hosting | $5 / month | https://aws.amazon.com/pricing/?nc2=h_ql_pr |
2 x TL-WN722N | Network Adapter | returned: $7.21 | https://www.amazon.com/TP-Link-TL-WN722N-Wireless-network-Adapter/dp/B002SZEOLG |
1 x 5dBi Long Range WiFi for Raspberry Pi | Network Adapter | returned: $5.00 | https://www.amazon.com/5dBi-Long-Range-WiFi-Raspberry/dp/B00YI0AIRS/ref=lp_9026119011_1_1?srs=9026119011&ie=UTF8&qid=1550447401&sr=8-1 |
1 x Alfa AWUSO36NH High Gain USB Wireless G/N Long-Range WiFi Network Adapter | Network Adapter | $31.99 | https://www.amazon.com/Alfa-AWUSO36NH-Wireless-Long-Rang-Network/dp/B0035APGP6/ref=sr_1_1_sspa?keywords=alfa+network+adapter&qid=1553045771&s=gateway&sr=8-1-spons&psc=1 |
mybusybear.com | Domain Name | $12.00 | DomainPrice.jpg |
Total Cost | $71.20 |
Design and Solutions
Build the Device
We began by constructing a device to collect MAC addresses. Initially, we hoped that with the RaspberryPi's WiFi capabilities, we could simply use the base hardware for detection. We quickly determined that the RaspberryPi was not capable of entering a monitoring mode[1]; we would need external hardware to serve this purpose. We went through a variety of external network adapters, and ultimately found one with both monitoring mode capabilities and compatibility with the RaspberryPi [2]. Using the Network Adapter's functionality will be explored further in the Collect Information section and in the Network Adapter in Monitoring Mode tutorial[3].
We decided that a RaspberryPi camera should be added to the device to strengthen the validity of the data gathered from the network adapter. The Pi Camera is fairly simple to connect and the functionality is implemented through Pi commands[4]. By analyzing a combination of the number of addresses collected and the visual busyness found in the picture, more accurate trends over time can be determined.
Collect Information
In the before mentioned tutorial [Network Adapter Monitoring Mode Tutorial] we established how setup the network adapter in monitoring mode and install kismet, the software we used to utilize monitoring mode. Once properly configured, simply calling kismet spews out text into the console as so:
pi@raspberrypi:~ $ kismet
INFO: Including sub-config file: /usr/local/etc/kismet_httpd.conf
INFO: Including sub-config file: /usr/local/etc/kismet_memory.conf
INFO: Including sub-config file: /usr/local/etc/kismet_alerts.conf
INFO: Including sub-config file: /usr/local/etc/kismet_80211.conf
INFO: Including sub-config file: /usr/local/etc/kismet_storage.conf
INFO: Including sub-config file: /usr/local/etc/kismet_logging.conf
INFO: Including sub-config file: /usr/local/etc/kismet_uav.conf
INFO: Loading config override file '/usr/local/etc/kismet_site.conf'
INFO: Optional sub-config file not present: /usr/local/etc/kismet_site.conf
KISMET - Point your browser to http://localhost:2501 for the Kismet UI
control.
INFO: Setting default channel hop rate to 1/sec
INFO: Enabling channel list splitting on sources which share the same list
of channels
INFO: Enabling channel list shuffling to optimize overlaps
INFO: Sources will be re-opened if they encounter an error
INFO: Saving datasources to the Kismet database log every 30 seconds.
INFO: Launching remote capture server on 127.0.0.1:3501
ALERT: LOGDISABLED Logging has been disabled via the Kismet config files
or the command line. Pcap, database, and related logs will not be
saved.
INFO: Probing interface 'mon1' to find datasource type
INFO: Logging disabled, not enabling any log drivers.
INFO: Starting Kismet web server...
INFO: Started http server on port 2501
INFO: Found type 'linuxwifi' for 'mon1'
INFO: Interface 'mon1' is already in monitor mode
INFO: System-wide wireless regulatory domain is set to '00'; this can
cause problems setting channels. If you encounter problems, set the
regdom with a command like 'sudo iw reg set US' or whatever country
is appropriate for your location.
INFO: Data source 'mon1' launched successfully
INFO: Detected new 802.11 Wi-Fi access point 28:AC:9E:80:86:E4
INFO: Detected new 802.11 Wi-Fi access point 00:A7:42:FC:6E:04
INFO: 802.11 Wi-Fi device 28:AC:9E:80:86:E4 advertising SSID 'WUSM-secure'
INFO: 802.11 Wi-Fi device 00:A7:42:FC:6E:04 advertising SSID 'wustl-2.0'
INFO: Detected new 802.11 Wi-Fi access point 00:78:88:30:4E:C1
INFO: Detected new 802.11 Wi-Fi access point 28:AC:9E:80:86:E2
INFO: 802.11 Wi-Fi device 00:78:88:30:4E:C1 advertising SSID 'WUSM-secure'
INFO: Detected new 802.11 Wi-Fi access point 00:A7:42:FC:6E:02
INFO: 802.11 Wi-Fi device 28:AC:9E:80:86:E2 advertising SSID
'wustl-encrypted-2.0'
INFO: Detected new 802.11 Wi-Fi access point 00:78:88:30:4E:C3
INFO: 802.11 Wi-Fi device 00:A7:42:FC:6E:02 advertising SSID
'wustl-encrypted-2.0'
INFO: Detected new 802.11 Wi-Fi access point 28:AC:9E:80:86:E1
INFO: Detected new 802.11 Wi-Fi access point 00:A7:42:FC:6E:01
INFO: 802.11 Wi-Fi device 00:78:88:30:4E:C3 advertising SSID
'wustl-guest-2.0'
INFO: 802.11 Wi-Fi device 28:AC:9E:80:86:E1 advertising SSID
'wustl-guest-2.0'
INFO: Detected new 802.11 Wi-Fi access point 28:AC:9E:80:86:E3
INFO: 802.11 Wi-Fi device 00:A7:42:FC:6E:01 advertising SSID 'WUSM-secure'
INFO: Detected new 802.11 Wi-Fi access point 00:A7:42:FC:6E:03
INFO: 802.11 Wi-Fi device 28:AC:9E:80:86:E3 advertising SSID 'eduroam'
INFO: Detected new 802.11 Wi-Fi access point 00:A7:42:FC:6E:05
INFO: 802.11 Wi-Fi device 00:A7:42:FC:6E:03 advertising SSID
'wustl-guest-2.0'
INFO: Detected new 802.11 Wi-Fi access point 00:A7:42:FC:6E:00
INFO: 802.11 Wi-Fi device 00:A7:42:FC:6E:00 advertising SSID 'eduroam'
INFO: 802.11 Wi-Fi device 00:A7:42:FC:6E:05 advertising SSID 'testing'
INFO: Detected new 802.11 Wi-Fi access point 00:78:88:30:4E:C5
INFO: Detected new 802.11 Wi-Fi access point 00:78:88:30:4E:C0
INFO: 802.11 Wi-Fi device 00:78:88:30:4E:C5 advertising SSID 'testing'
INFO: Detected new 802.11 Wi-Fi access point 28:AC:9E:80:86:E0
INFO: 802.11 Wi-Fi device 00:78:88:30:4E:C0 advertising SSID 'eduroam'
INFO: Detected new 802.11 Wi-Fi access point 00:78:88:30:4E:C4
INFO: 802.11 Wi-Fi device 28:AC:9E:80:86:E0 advertising SSID 'wustl-2.0'
INFO: Detected new 802.11 Wi-Fi access point 00:78:88:30:4E:C2
INFO: 802.11 Wi-Fi device 00:78:88:30:4E:C4 advertising SSID 'wustl-2.0'
INFO: Detected new 802.11 Wi-Fi device 02:78:88:30:4E:C0
INFO: 802.11 Wi-Fi device 00:78:88:30:4E:C2 advertising SSID
'wustl-encrypted-2.0'
INFO: Detected new 802.11 Wi-Fi device 74:B5:87:C6:90:1E
INFO: Detected new 802.11 Wi-Fi device 00:08:E3:FF:FD:EC
INFO: Detected new 802.11 Wi-Fi device 02:A7:42:FC:6E:00
INFO: Detected new 802.11 Wi-Fi device 2A:AC:9E:80:86:E0
INFO: Detected new 802.11 Wi-Fi device 8C:45:00:04:DA:8F
INFO: Detected new 802.11 Wi-Fi device F4:4E:05:04:C1:44
INFO: Detected new 802.11 Wi-Fi device B8:27:EB:8A:40:23
INFO: Detected new 802.11 Wi-Fi access point F4:4E:05:04:C1:40
INFO: 802.11 Wi-Fi device F4:4E:05:04:C1:40 advertising SSID 'eduroam'
INFO: 802.11 Wi-Fi device F4:4E:05:04:C1:44 advertising SSID 'wustl-2.0'
INFO: Detected new 802.11 Wi-Fi access point F4:4E:05:04:C1:42
INFO: 802.11 Wi-Fi device F4:4E:05:04:C1:42 advertising SSID
'wustl-encrypted-2.0'
INFO: Detected new 802.11 Wi-Fi device 00:78:88:63:58:44
INFO: Detected new 802.11 Wi-Fi device 78:28:CA:BA:BA:52
INFO: Detected new 802.11 Wi-Fi access point F4:4E:05:04:C1:41
INFO: Detected new 802.11 Wi-Fi access point F4:4E:05:04:C1:43
INFO: 802.11 Wi-Fi device F4:4E:05:04:C1:41 advertising SSID 'WUSM-secure'
INFO: 802.11 Wi-Fi device F4:4E:05:04:C1:43 advertising SSID
'wustl-guest-2.0'
INFO: Detected new 802.11 Wi-Fi access point F4:4E:05:04:C1:45
INFO: 802.11 Wi-Fi device F4:4E:05:04:C1:45 advertising SSID 'testing'
INFO: Detected new 802.11 Wi-Fi access point B4:B6:86:60:CF:05
INFO: 802.11 Wi-Fi device B4:B6:86:60:CF:05 advertising SSID 'DIRECT-04-HP
DeskJet 2600 series'
INFO: Detected new 802.11 Wi-Fi device 78:28:CA:BA:BA:53
INFO: Detected new 802.11 Wi-Fi device 7C:01:91:96:18:CA
INFO: Detected new 802.11 Wi-Fi device 5C:AA:FD:F9:B1:02
INFO: Detected new 802.11 Wi-Fi device F4:F5:D8:A4:B0:4C
INFO: Detected new 802.11 Wi-Fi device 5A:C5:5D:87:73:59
INFO: Detected new 802.11 Wi-Fi device 38:53:9C:0C:5D:4F
INFO: Detected new 802.11 Wi-Fi device C0:33:5E:3C:44:5D
We could collect data, but we needed a way to be able to consolidate the MAC Addresses, find out what device it belonged to, and upload that information to the database all periodically throughout a gap of time. Over a couple of months, we finalized our data collection design to utilize crontab [5] , a program used the schedule execution of programs at certain times.
Create a Website
Tentative Website Layout
Put It All Together
While the RaspberryPi gives us data and the website gives us a way to communicate data, we next need to combine these pieces in an understandable and usable manner. We need to fully understand the relationship between the number of MAC addresses found and the actual level of busyness as it relates to real-world environments. Because we have yet to collect data over time and relate this number to the people in a specific area, we cannot expand on our complete thought process yet. At the moment, we imagine there will be a linear relationship between the number of MAC addresses and the relative busyness. As the number of MAC addresses increase, the level of busyness will directly increase. At the moment we are attempting to determine at exactly what rate this change occurs. This relationship will be determined by looking at the number of MAC addresses and comparing that number to the number of people visible in our captured image. By looking at this relationship over time, a general understanding can be determined for our specific location on campus, Bear's Den.
Results
Next Steps
References
Not Quoted
Past Projects
- [Tracking People/MAC]
- [Pi Wifi/Bluetooth]
- [Pi Network] (is quoted)
- [Pi WiFi Monitor]
Pi Camera
- [Pi Camera] (is quoted)
Pi Blinking LED
nmap
- [Commands]
fping
- [Example]
openCV
kismet & monitoring mode
Regex/Dictionary/API
- [MAC Address Vendor Lookup API]
- [Python Dictionary]
- [More Python Dictionary Documentation]
- [CSE330 Regular Expressions Wiki]
- [Lookahead/Lookbehind Regular Expression Help]
- [Regular Expression Online tester]
- [Wireshark OUI lookup]