| #!/bin/sh |
| |
| . /etc/utils.sh |
| |
| taxonomize() { |
| sig="$1" |
| mac="$2" |
| python -c "import taxonomy; \ |
| print ';'.join(taxonomy.identify_wifi_device('$sig', '$mac'))" |
| } |
| |
| dhcpname() { |
| mac="$1" |
| while read -r time leasemac ip name junk; do |
| if contains "$leasemac" "$mac"; then |
| echo "$name" |
| fi |
| done </config/dhcp.leases |
| } |
| |
| dhcpsig() { |
| mac="$1" |
| while read -r leasemac sig; do |
| if contains "$leasemac" "$mac"; then |
| echo "$sig" |
| fi |
| done </config/dhcp.fingerprints |
| } |
| |
| stations24="" |
| stations5="" |
| (echo start; watch-dir /tmp/wifi/fingerprints) | while read junk; do |
| sleep 0.25 |
| wifi24=$(wifi show -b 2.4 2>&1) |
| wifi5=$(wifi show -b 5 2>&1) |
| |
| for file in /tmp/wifi/fingerprints/*; do |
| [ -e "$file" ] || continue |
| contains "$file" ".tmp" && continue |
| sig=$(cat "$file") |
| mac=$(basename "$file") |
| name=$(dhcpname "$mac") |
| tax=$(taxonomize "$sig" "$mac") |
| dhcpsig=$(dhcpsig "$mac") |
| stationskey="$mac|$sig" |
| |
| if contains "$wifi24" "$mac"; then |
| contains "$stations24" "$stationskey" && continue |
| date |
| echo 2.4GHz: "$name" "$mac" |
| echo "$tax" |
| echo "$sig" |
| echo "dhcp|$dhcpsig" |
| echo |
| stations24="${stations24},$stationskey" |
| fi |
| |
| if contains "$wifi5" "$mac"; then |
| contains "$stations5" "$stationskey" && continue |
| date |
| echo 5.0GHz: "$name" "$mac" |
| echo "$tax" |
| echo "$sig" |
| echo "dhcp|$dhcpsig" |
| echo |
| stations5="${stations5},$stationskey" |
| fi |
| done |
| done |