Skip to content

Commit d3b7942

Browse files
committed
add filter for sta
1 parent 3ba7e71 commit d3b7942

2 files changed

Lines changed: 42 additions & 9 deletions

File tree

WifiScanner/ScanWifi.py

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from threading import Thread
88
from time import sleep
99

10-
from scapy.layers.dot11 import Dot11, Dot11Beacon, Dot11ProbeResp, Dot11Elt, sniff
10+
from scapy.layers.dot11 import Dot11, Dot11Beacon, Dot11ProbeResp, Dot11ProbeReq, Dot11Elt, sniff
1111

1212

1313
def keyboard_interrupt_handler(interrupt_signal, frame):
@@ -19,7 +19,7 @@ def keyboard_interrupt_handler(interrupt_signal, frame):
1919
exit(1)
2020

2121

22-
def evaluate_sniffing_packet(packet):
22+
def evaluate_sniffing_packet_ap(packet):
2323
"""
2424
Evaluate wifi packet's and print to terminal
2525
@@ -53,6 +53,19 @@ def evaluate_sniffing_packet(packet):
5353
print("{:<24} {:<35} {:<5} {:<7} {}".format(bssid, ssid, dbm, channel, enc))
5454

5555

56+
def evaluate_sniffing_packet_sta(packet):
57+
58+
if packet.haslayer(Dot11ProbeReq) and packet.haslayer(Dot11Elt):
59+
if packet.type == 0 and packet.subtype == 4:
60+
mac = packet.addr2
61+
ssid = packet[Dot11Elt].info.decode().strip()
62+
63+
if not ssid:
64+
ssid = "N/A"
65+
66+
print("STA {} looking for {}".format(mac, ssid))
67+
68+
5669
def set_specific_channel(channel_number):
5770
"""
5871
Set specific wifi channel
@@ -86,13 +99,15 @@ def run_app():
8699
Main function to parse arguments and run
87100
"""
88101
global interface
102+
global filter_results
89103

90104
description = 'Simple Wifi scanner for 2.4 GHz range'
91105
epilog = 'The author of this code take no responsibility for your use or misuse'
92106
parser = argparse.ArgumentParser(prog='ScanWifi.py', description=description, epilog=epilog)
93-
parser.add_argument("interface", help="Your interface in monitor mode")
107+
parser.add_argument("interface", help='Your interface in monitor mode')
94108
parser.add_argument('-c', '--channel', help='Channel number for 2.4 GHz range (min 1/max 14)', default=1, type=int)
95109
parser.add_argument('--all', help='Scan on all channels for 2.4 GHz range', default=False, action='store_true')
110+
parser.add_argument('--filter', help='Filter results only for STA (Probe Req)', default=False, action='store_true')
96111
args = parser.parse_args()
97112

98113
if len(args.interface) < 1:
@@ -113,13 +128,17 @@ def run_app():
113128
channel_changer.daemon = True
114129
channel_changer.start()
115130

116-
print("-" * 85)
117-
print("{:<24} {:<35} {:<5} {:<7} {}".format("BSSID", "SSID", "dbm", "CH", "ENC"))
118-
print("-" * 85)
119-
sniff(prn=evaluate_sniffing_packet, iface=interface)
131+
if args.filter:
132+
print("-" * 85)
133+
sniff(prn=evaluate_sniffing_packet_sta, iface=interface)
134+
else:
135+
print("-" * 85)
136+
print("{:<24} {:<35} {:<5} {:<7} {}".format("BSSID", "SSID", "dbm", "CH", "ENC"))
137+
print("-" * 85)
138+
sniff(prn=evaluate_sniffing_packet_ap, iface=interface)
120139

121140

122141
if __name__ == "__main__":
123-
interface = None
142+
interface = filter_results = None
124143
signal.signal(signal.SIGINT, keyboard_interrupt_handler)
125144
run_app()

WifiScanner/readme.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Wi-Fi Scanner
22

3-
Script to scan on 2.4 GHz Wi-Fi's (_if ENC is OPN or WEP the output is colored_).
3+
Script to scan on 2.4 GHz Wi-Fi's (_if ENC is OPN or WEP the output is colored_). Optional you can scan for STA's only.
44

55
## Prepare environment
66

@@ -51,6 +51,9 @@ just run it...
5151

5252
# start scanning on all 2.4 GHz channels
5353
(venv) $ sudo venv/bin/python ./ScanWifi.py wlan1 --all
54+
55+
# filter for STA probe requests
56+
(venv) $ sudo venv/bin/python ./ScanWifi.py wlan1 --all --filter
5457
```
5558

5659
to interrupt press [CTRL + c]
@@ -73,4 +76,15 @@ b8:ce:a3:d6:81:d0 Dosmeethelm -71 6 WPA2/
7376
...
7477
```
7578

79+
... with `--filter` to show only Probe Requests ...
80+
81+
```shell
82+
Change channels for interface wlan1
83+
-------------------------------------------------------------------------------------
84+
STA 5c:aa:fd:b4:41:bb looking for Sonos_StdbhVj1gi78Xag6fMBAxKGPsP
85+
STA 45:03:2c:8b:7c:2d looking for N/A
86+
STA f8:0e:f9:36:d2:1c looking for Salt_2GHz_0EE4AE
87+
STA 44:03:2b:4b:7e:2d looking for WuTangLan
88+
```
89+
7690
[Go back](../README.md)

0 commit comments

Comments
 (0)