如何在Python中使用Scapy创建假接入点(实现教程)

【如何在Python中使用Scapy创建假接入点(实现教程)】本文通过使用 python 中的 scapy 向空中发送有效的信标帧来创建虚假接入点并欺骗附近的设备,包括Python创建假接入点示例。
Python如何创建假接入点?有没有想过你的笔记本电脑或手机如何知道附近有哪些无线网络?其实很简单,无线接入点不断地向附近的所有无线设备发送信标帧,这些帧包括接入点的信息,如SSID(名称)、加密类型、MAC地址等。
如何使用Scapy创建假接入点?在本教程中,你将学习如何使用Python 中的Scapy库将信标帧发送到空中以成功伪造接入点!
本教程需要安装的软件包:

pip3 install faker scapy

为了确保 Scapy 安装正确,请前往本教程或查看官方 scapy 文档以获取所有环境的完整安装。
强烈建议你遵循Kali Linux环境,因为它提供了我们在本教程中需要的预安装实用程序。
Python创建假接入点示例介绍:在我们深入研究令人兴奋的代码之前,你需要 在网络接口卡中启用 监控模式:
  • 你需要确保你使用的是基于 Unix 的系统。
  • 安装aircrack-ng实用程序:
apt-get install aircrack-ng

注:在  了Aircrack-ng的实用程序自带的Linux卡里预装,所以如果你在卡利,你不应该运行此命令。
  • 使用airmon-ng命令启用监控模式:
root@rockikz:~# airmon-ng check killKilling these processes:PID Name 735 wpa_supplicant

root@rockikz:~# airmon-ng start wlan0PHYInterfaceDriverChipsetphy0wlan0ath9k_htcAtheros Communications, Inc. TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [ Atheros AR7010+AR9287](mac80211 monitor mode vif enabled for [ phy0]wlan0 on [ phy0]wlan0mon) (mac80211 station mode vif disabled for [ phy0]wlan0)

注意:在我的情况下,我的 USB WLAN 棒名为wlan0,你应该运行ifconfig命令并查看正确的网络接口名称。
好了,现在你已经准备好了,让我们先从一个简单的食谱开始:
from scapy.all import *# interface to use to send beacon frames, must be in monitor mode iface = "wlan0mon" # generate a random MAC address (built-in in scapy) sender_mac = RandMAC() # SSID (name of access point) ssid = "Test" # 802.11 frame dot11 = Dot11(type=0, subtype=8, addr1="ff:ff:ff:ff:ff:ff", addr2=sender_mac, addr3=sender_mac) # beacon layer beacon = Dot11Beacon() # putting ssid in the frame essid = Dot11Elt(ID="SSID", info=ssid, len=len(ssid)) # stack all the layers and add a RadioTap frame = RadioTap()/dot11/beacon/essid # send the frame in layer 2 every 100 milliseconds forever # using the `iface` interface sendp(frame, inter=0.1, iface=iface, loop=1)

Python如何创建假接入点?上面的代码执行以下操作:
我们生成一个随机 MAC 地址并设置我们想要创建的接入点的名称,然后我们创建一个802.11 帧,字段是:
  • type=0:  表示是管理帧。
  • subtype=8:  表示该管理帧为信标帧。
  • addr1:  指的是目的MAC地址,也就是接收者的MAC地址,我们这里使用广播地址("ff:ff:ff:ff:ff:ff"),如果你想让这个假接入点只出现在目标设备中,你可以使用目标的 MAC 地址。
  • addr2:源MAC地址,发送方MAC地址。
  • addr3:接入点的 MAC 地址。
所以我们应该使用相同的 MAC 地址addr2和addr3,那是因为发送方是接入点!
我们使用 SSID Infos 创建我们的信标帧,然后将它们全部堆叠在一起并使用 Scapy 的 sendp  ()函数发送它们。
如何使用Scapy创建假接入点?在我们将界面设置为监控模式并执行脚本后,我们应该会在可用的 Wi-Fi 接入点列表中看到类似的内容:
如何在Python中使用Scapy创建假接入点(实现教程)

文章图片
现在让我们花点心思,同时创建许多假接入点:
from scapy.all import * from threading import Thread from faker import Fakerdef send_beacon(ssid, mac, infinite=True): dot11 = Dot11(type=0, subtype=8, addr1="ff:ff:ff:ff:ff:ff", addr2=mac, addr3=mac) # ESS+privacy to appear as secured on some devices beacon = Dot11Beacon(cap="ESS+privacy") essid = Dot11Elt(ID="SSID", info=ssid, len=len(ssid)) frame = RadioTap()/dot11/beacon/essid sendp(frame, inter=0.1, loop=1, iface=iface, verbose=0)if __name__ == "__main__": # number of access points n_ap = 5 iface = "wlan0mon" # generate random SSIDs and MACs faker = Faker() ssids_macs = [ (faker.name(), faker.mac_address()) for i in range(n_ap) ] for ssid, mac in ssids_macs: Thread(target=send_beacon, args=(ssid, mac)).start()

Python如何创建假接入点?我在这里所做的,就是将前面几行代码包裹在一个函数中,并使用faker 包生成随机的 MAC 地址和 SSID ,然后为每个接入点启动一个单独的线程,一旦执行脚本,接口将发送 5信标每 100 毫秒(至少在理论上),这将导致出现五个假接入点,请查看:
如何在Python中使用Scapy创建假接入点(实现教程)

文章图片
Python创建假接入点示例 - 这是它在 Android 操作系统上的外观:
如何在Python中使用Scapy创建假接入点(实现教程)

文章图片
如果你不确定如何使用线程,请查看本教程。
这太神奇了,请注意,尝试连接到这些接入点之一将会失败,因为它们不是真正的接入点,只是一种错觉!

    推荐阅读