溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題

發(fā)布時間:2020-07-03 02:30:51 來源:網(wǎng)絡(luò) 閱讀:3639 作者:tankaiha 欄目:安全技術(shù)

   折磨了自己一周多,供遇到同樣問題的朋友們參考。

   一般有兩種方法在kali linux下建立軟AP,一是使用airbase-ng,優(yōu)點是運行方便,適應(yīng)網(wǎng)卡的范圍比較廣,比如常見的rtl8187的網(wǎng)卡,局限是只能建立OPN和WEP加密的,不支持WPA和WPA2加密。二是通過hostapd,支持OPN、WEP、WPA、WPA2等多種加密方式,但支持的網(wǎng)卡有限。

   之前我手上有rtl8187的網(wǎng)卡,一直把它當(dāng)作神器,后來發(fā)現(xiàn)完全是被誤導(dǎo)了,不僅信號一般,且支持的模式相當(dāng)有限,最關(guān)鍵是不支持hostapd建立WPA加密的AP。用iw list命令可以看到rtl8187網(wǎng)卡支持的模式:


iw list
…
Supported interface modes:
     * IBSS
     * managed
     * monitor


   一陣google后,在某電商那淘了一塊rt3070芯片的,價格便宜、童叟無欺,支持b/g/n(rtl8187僅支持b/g),標(biāo)配雙6dBi增益天線,iw list看一下,瞬間發(fā)現(xiàn)這泥馬才是真正的神器?。。◤娏彝扑]!!)


Supported interface modes:
     * IBSS
     * managed
     * AP
     * AP/VLAN
     * WDS
     * monitor
     * mesh point


   關(guān)鍵就是其中顯示的AP,這說明網(wǎng)卡支持軟AP模式。下面進入正題,我在用kali linux自帶的hostapd建立WPA2加密的AP后,終端連接時總是顯示無法正常握手的錯誤:


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   注意紅色標(biāo)的錯誤信息,主要就是:


wlan2: STA xx:xx:xx:xx:xx:xx IEEE 802.11: did not acknowledge authentication response
mgmt::assoc_resp cb
wlan2: STA xx:xx:xx:xx:xx:xx IEEE 802.11: did not acknowledge association response
Data/PS-poll frame from not associated STA xx:xx:xx:xx:xx:xx


  接下來,為了解決這個問題,我在網(wǎng)上搜了無數(shù)中文和鳥語網(wǎng)頁,嘗試了各路方法。比如,刪除系統(tǒng)自帶的hostapd,下載源碼直接編譯。不過git clone下載的源碼在我機器上始終無法編譯通過,直接下載官方網(wǎng)站提供的tar.gz源碼包,雖然可以編譯通過,但運行出錯。

   卡在這里很長時間,不過有個別網(wǎng)站說到也遇到這個問題,并通過修改源代碼后再編譯可以解決。修改方法是,在源代碼src/ap/ieee802_11.c中將兩處return注釋掉,如下:


if (!ok) {  
hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,   
HOSTAPD_LEVEL_NOTICE,   
"did not acknowledge authentication response");   
   //return;
}   
if (!ok) {  
hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,   
HOSTAPD_LEVEL_DEBUG,   
"did not acknowledge association response");   
   //return;
}


   但我的機器上源碼編譯通過不了?。]辦法,只能直接更改系統(tǒng)自帶的hostapd程序了。用ida打開hostapd,在Strings windows窗口中進行排序后,找到兩處連續(xù)的關(guān)鍵字符串:


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   雙擊后可以找到引用字符串的代碼處。第一處是在080D9678處,同時可以看到,sub_80D95E0的子程序調(diào)用了loc_80D9678:


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   繼續(xù)跟蹤到sub_80D95E0,以圖形視圖查看,明顯jz是錯誤信息判斷,出錯了就沿綠線,調(diào)用上面的出錯誤信息,我們只需要將jz跳轉(zhuǎn)nop掉,讓程序沿紅線繼續(xù)下去即可。


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   經(jīng)過查看,這句jz代碼在文件偏移0009160C處,代碼為74 6A,只需要將其改為90 90。在kali中,用十六進制編輯器對hostapd進行修改:


hexeditor /usr/sbin/hostapd


   將對應(yīng)偏移處的數(shù)值修改完畢:


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   同理,再將第二處錯誤信息的調(diào)用跳轉(zhuǎn)nop掉,這次是jz      loc_80DC618,文件偏移00094426,十六進制數(shù)據(jù)為0F 84 EC 01 00 00:



給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   用hexeditor全部改為90:


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   Ctrl+x 保存推出,再次運行hostapd,手機成功連接,顯示connected:


給hostapd打補丁, 解決rt3070網(wǎng)卡建立軟AP時無法握手的問題


   真是一次無比曲折的經(jīng)歷。從最初想用airbase-ng建立WPA加密的AP到無奈使用hostapd,從使用rtl8187網(wǎng)卡無果再到購買合適的網(wǎng)卡,從編譯代碼不通過再到直接修改可執(zhí)行文件,折騰了那么長時間。把經(jīng)歷寫出來,供有需要的朋友參考,少走彎路!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI