In this example是用于为Proberequest创建应答机的代码。 The result is AP正在显示在设备上。以下是我的代码。为了使它正常工作,我不得不进行一些更改。
import sys
import os
import time
from scapy.all import *
os.sys.path.append('/usr/lib/python2.7/dist-packages')
conf.iface = "wlan0mon"
class ProbeRequest_am(AnsweringMachine):
function_name = "pram"
mac = "00:11:22:33:44:55"
def is_request(self, pkt):
return Dot11ProbeReq in pkt
def make_reply(self, req):
rep = RadioTap()
rep /= Dot11(addr1=req.addr2, addr2=self.mac, addr3=self.mac, ID = RandShort(), SC= RandShort())
rep /= Dot11ProbeResp(cap="ESS", timestamp=int(time.time()))
rep /= Dot11Elt(ID="SSID",info ="Scapy !")
rep /= Dot11Elt(ID="Rates", info=b'\x82\x84\x0b\x16\x96')
rep /= Dot11Elt(ID="DSset", info=chr(10))
return rep
ProbeRequest_am()()
首先,AP在我拥有的任何设备上都不可见。但是输出与我的设备在家里寻找我的AP有关。 AFAIK我的智能手机(iOS 12.2)不会将其实际的MAC用于Proberequest,并且该程序仅应对Proberequest作出反应。但这是正在运行的脚本的输出(我iPhone的实际MAC,但已更改为发布= d0:c5:f3:00:00:00):
RadioTap / 802.11 Management 4 d0:c5:f3:00:00:00 > ff:ff:ff:ff:ff:ff / Dot11ProbeReq / SSID='My_AP_at_Home' / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt ==> RadioTap / 802.11 Management 5 00:11:22:33:44:55 > d0:c5:f3:00:00:00 / Dot11ProbeResp / SSID='Scapy !' / Dot11Elt / Dot11Elt
RadioTap / 802.11 Management 4 d0:c5:f3:00:00:00 > ff:ff:ff:ff:ff:ff / Dot11ProbeReq / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / SSID='+g' ==> RadioTap / 802.11 Management 5 00:11:22:33:44:55 > d0:c5:f3:00:00:00 / Dot11ProbeResp / SSID='Scapy !' / Dot11Elt / Dot11Elt
此脚本是否已经足够不足以对来自智能手机的MAC地址进行匿名处理?