В этом примере - это код для создания автоответчика для запросов. В результате точка доступа отображается на устройстве.Ниже мой код.Мне пришлось изменить некоторые вещи, чтобы заставить его работать.
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 не видна на любом устройстве, которое у меня есть.Но вывод связан с моими устройствами, которые ищут мою точку доступа дома.AFAIK мой смартфон (iOS 12.2) не будет использовать свой фактический MAC для Proberequest, и программа должна реагировать только на Proberequest.Но это вывод из запущенного скрипта (фактический MAC-адрес моего iPhone, но измененный для публикации = 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-адреса со смартфонов?