編譯路由器
Ⅰ 能幫我編譯一個路由器tp wr720 v3的openwrt固件么
推薦去路由器官網直接下載。或者去論壇看一下
Ⅱ 怎麼反編譯D-Link路由器固件程序並發現它的後門
基於上面的字元信息可以看出,這個/bin/webs二進製程序是一個修改版的thttpd,提供路由器管理員界面操作功能。看起來是經過了台灣明泰科技(D-Link的一個子公司)的修改。他們甚至很有心計的將他們很多自定義的函數名都輔以「alpha」前綴:
明泰科技的自定義函數
這個alpha_auth_check函數看起來很有意思!
這個函數被很多地方調用,最明顯的一個是來自alpha_httpd_parse_request函數:
調用alpha_auth_check函數
我們可以看到alpha_auth_check函數接收一個參數(是存放在寄存器$s2里);如果alpha_auth_check返回-1(0xFFFFFFFF),程序將會跳到alpha_httpd_parse_request的結尾處,否則,它將繼續處理請求。
寄存器$s2在被alpha_auth_check函數使用前的一些操作代碼顯示,它是一個指向一個數據結構體的指針,裡面有一個char*指針,會指向從HTTP請求里接收到的各種數據;比如HTTP頭信息和請求地址URL:
$s2是一個指向一個數據結構體的指針
我們現在可以模擬出alpha_auth_check函數和數據結構體的大概樣子:
struct http_request_t
{
char unknown[0xB8];
char *url; // At offset 0xB8 into the data structure
};
int alpha_auth_check(struct http_request_t *request);
alpha_auth_check本身是一個非常簡單的函數。它會針對http_request_t結構體里的一些指針進行字元串strcmp比較操作,然後調用check_login函數,實際上就是身份驗證檢查。如果一旦有字元串比較成功或check_login成功,它會返回1;否者,它會重定向瀏覽器到登錄頁,返回-1;
alpha_auth_check函數代碼片段
這些字元串比較過程看起來非常有趣。它們提取請求的URL地址(在http_request_t數據結構體的偏移量0xB8處),檢查它們是否含有字元串「graphic/」 或 「public/」。這些都是位於路由器的Web目錄下的公開子目錄,如果請求地址包含這樣的字元串,這些請求就可以不經身份認證就能執行。
然而,這最後一個strcmp卻是相當的吸引眼球:
alpha_auth_check函數中一個非常有趣的字元串比較
這個操作是將http_request_t結構體中偏移量0xD0的字元串指針和字元串「xmlset_roodkcableoj28840ybtide」比較,如果字元匹配,就會跳過check_login函數,alpha_auth_check操作返回1(認證通過)。
我在谷歌上搜索了一下「xmlset_roodkcableoj28840ybtide」字元串,只發現在一個俄羅斯論壇里提到過它,說這是一個在/bin/webs里一個「非常有趣」的一行。我非常同意。
那麼,這個神秘的字元串究竟是和什麼東西進行比較?如果回顧一下調用路徑,我們會發現http_request_t結構體被傳進了好幾個函數:
事實證明,http_request_t結構體中處在偏移量 0xD0處的指針是由httpd_parse_request函數賦值的:
檢查HTTP頭信息中的User-Agent值
將http_request_t + 0xD0指針指向頭信息User-Agent字元串
這代碼實際上就是:
if(strstr(header, "User-Agent:") != NULL)
{
http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");
}
知道了http_request_t偏移量0xD0處的指針指向User-Agent頭信息,我們可以推測出alpha_auth_check函數的結構:
#define AUTH_OK 1
#define AUTH_FAIL -1
int alpha_auth_check(struct http_request_t *request)
{
if(strstr(request->url, "graphic/") ||
strstr(request->url, "public/") ||
strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0)
{
return AUTH_OK;
}
else
{
// These arguments are probably user/pass or session info
if(check_login(request->0xC, request->0xE0) != 0)
{
return AUTH_OK;
}
}
return AUTH_FAIL;
}
換句話說,如果瀏覽器的User-Agent值是 「xmlset_roodkcableoj28840ybtide」(不帶引號),你就可以不經任何認證而能訪問web控制界面,能夠查看/修改路由器的 設置(下面是D-Link路由器(DI-524UP)的截圖,我沒有 DIR-100型號的,但DI-524UP型號使用的是相同的固件):
訪問型號DI-524UP路由器的主界面
基於HTML頁上的源代碼信息和Shodan搜索結果,差不多可以得出這樣的結論:下面的這些型號的D-Link路由器將會受到影響:
DIR-100
DI-524
DI-524UP
DI-604S
DI-604UP
DI-604+
TM-G5240
除此之外,幾款Planex路由器顯然也是用的同樣的固件程序:
BRL-04UR
BRL-04CW
Ⅲ ubuntu下編譯openwrt路由器需要配置多大
我這段時間在學習openwrt的編譯,教程看了幾十遍,設備是hg255d,我想自己為其編譯一個固件,我的編譯過程如下圖所示(用的trunk版):
其他的選項都按默認,編譯成功後,在trunk/bin/ramips/有如下文件
我通過TTL線把openwrt-ramips-rt305x-uImage.bin刷入成功後,啟動如下所示
Ⅳ 路由器內核 用什麼編寫
tp-link 402具體用什麼編寫不清楚,但很多路由內核是用C++寫的.
Ⅳ 路由器的固件能反編譯嗎
可以進行反編譯。
路由器的固件通常存儲在FLASH中,通常都是以xxx.bin格式的文件形式保存的。bin格式是一種二進制文件,存儲的是路由器的機器碼,通過反編譯,可以將其還原為匯編碼,以便進行分析。獲取、反編譯及分析固件通常按下列步驟:
獲取路由器固件需要的環境
常見路由器的SPI FLASH編程器;
最好是用Winows 筆記本來登陸到ubuntu系統的台式機上的方式 ;
Windows 下的Putty、winhex、WinSCP軟體工具;
TTL線、網線、萬用表及烙鐵,熱風槍等工具和線材;
分析步驟
拆開對應的路由器設備的外殼;
查看路由器內部的的介面標識;
用萬用表找到對應的地線GND標號;
通常為了調試或升級的方便,都會保留TTL引腳;
查看是否存在有TTL線的引腳或觸點;
用准備好的TTL線連接路由器的TTL引腳或觸點;
windows下用putty中的串口項打開對應的TTL線連接的串口;
查看是否有路由器啟動的日誌信息,如果有,請仔細分析;
等路由信息啟動完畢後,看看是否有終端跳出來,是否有登陸窗口跳出;
如果有登陸窗口,但是無法輸入,或者無法猜測出對應的用戶名密碼;
用熱風槍或烙鐵取下路由器上的存儲FLASH晶元;
在Windows下用編程器提前存儲在FLASH晶元的全部固件;
用WinSCP工具將提取出的固件上傳到ubuntu系統中;
在ubuntu系統中安裝對應的固件分析工具(firmware-mod-kit、binwalk、lzma、squashfs-tools等);
用這些分析工具進行分析,分析出來後,解壓對應的數據包,提前對應的關鍵性數據進行分析。
按以上步驟可以實現對路由器的分析。
Ⅵ lede 編譯 路由器固件 包沒有
可以進行反編譯。
路由器的固件通常存儲在FLASH中,通常都是以 xxx.bin格式的文件形式保存的。bin格式是一種二進制文件,存儲的是路由器的機器碼,通過反編譯,可以將其還原為匯編碼,以便進行分析。獲取、反編譯及分析固件通常按下列步驟:
獲取路由器固件需要的環境
常見路由器的SPI FLASH編程器;
最好是用Winows 筆記本來登陸到ubuntu系統的台式機上的方式 ;
Windows 下的Putty、winhex、WinSCP軟體工具;
TTL線、網線、萬用表及烙鐵,熱風槍等工具和線材;
分析步驟
拆開對應的路由器設備的外殼;
查看路由器內部的的介面標識;
用萬用表找到對應的地線GND標號;
通常為了調試或升級的方便,都會保留TTL引腳;
查看是否存在有TTL線的引腳或觸點;
用准備好的TTL線連接路由器的TTL引腳或觸點;
windows下用putty中的串口項打開對應的TTL線連接的串口;
查看是否有路由器啟動的日誌信息,如果有,請仔細分析;
等路由信息啟動完畢後,看看是否有終端跳出來,是否有登陸窗口跳出;
如果有登陸窗口,但是無法輸入,或者無法猜測出對應的用戶名密碼;
用熱風槍或烙鐵取下路由器上的存儲FLASH晶元;
在Windows下用編程器提前存儲在FLASH晶元的全部固件;
用WinSCP工具將提取出的固件上傳到ubuntu系統中;
在ubuntu系統中安裝對應的固件分析工具(firmware-mod-kit、binwalk、lzma、squashfs-tools等);
用這些分析工具進行分析,分析出來後,解壓對應的數據包,提前對應的關鍵性數據進行分析。
按以上步驟可以實現對路由器的分析。
Ⅶ 怎麼對路由器的固件進行修改類似破解一樣! 涉及程序編譯嗎
改WIFI密碼的步驟是:
1.打開瀏覽器,在地址欄輸入路由器地址:192.168.1.1。(以你個人路由器地址為准,一般說明書上會有,無限路由器上面也會標識)這樣就可以進入路由器設置頁面。
2.進去後會彈出對話框,要輸入用戶名和密碼,無線路由器上面會標識,一般用戶名和密碼都是:admin
3.輸入用戶名和密碼後會進入路由器的設置頁面,然後點擊,無線設置 下的 無線安全設置 。
4.進入無線網路安全設置之後,選擇WPA-PSK/WPA2-PSK這一選項,在PSK密碼裡面輸入自己想好的密碼,就是給自己家WIFI設置的密碼就可以了。
5.輸入密碼之後點擊下面的保存鍵進行保存,之後就大功告成了。
6.保存之後,需要重啟一下路由器就可以了!
Ⅷ 請問841nv8編譯OP固件,用哪個路由器型號
選擇TP-LINK TL-WR841N/ND,會編譯所有的841,然後選擇自己想要的即可。v8用的是這個文件mach-tl-wr841n-v8.c
Ⅸ 如何編譯符合自己路由器的的OpenWrt固件
懂的不需要問;如不懂的,建議找對應路由器主晶元的open固件,自己研究一下;歡迎追問~!
Ⅹ 如何為一個新路由器編譯openwrt
Openwrt 官方正式的發行版是已編譯好了的映像文件(後綴名bin或trx、trx2),此映像文件可從Openwrt官方網站的下載頁面中輕松獲取到,連接地址為 OpenWrt官方網站。這些編譯好的映像文件是基於默認的配置設置,且只針對受支持的平台或設備的。因此,為什麼要打造一個自己的映像文件,理由有以下四點:
您想擁有一個個性化的配置OpenWrt(彰顯個性,在朋友圈子裡顯擺顯擺,開個玩笑);
您想在實驗性的平台上測試OpenWrt;
您參與測試或參與開發OpenWrt的工作;
或者,最簡單的目的就是為了保持自己的Openwrt為最新版本;
若想實現上述目的,其實很簡單,按下述文字即可成功編譯出一個您的Openwrt來。
准備工作
在開始編譯Openwrt之前需要您做些准備工作;與其他編譯過程一樣,類似的編譯工具和編譯環境是必不可少的:
一個構建OpenWrt映像的系統平台,簡單說就是准備一個操作系統(比如Ubuntu、Debian等);
確保安裝了所需的依賴關系庫, (在debian系統中就是安裝各種需要的軟體包)
OpenWrt源代碼副本
首先, 開機登陸到支持編譯Openwrt的操作系統(廢話了)。實體機或者虛擬機(Vmware 或者 Qemu)里的操作系統都行,這里推薦使用Linux系統。 bsd和mac osx系統也可以編,但不推薦,且未驗證是否可編譯成功。下文假定您使用的是Debian操作系統,使用 apt-get 來管理包. 替代的選擇是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安裝所需要的各種軟體包, 包括編譯器,解壓工具,特定的庫等. 這些工作可以簡單的通過鍵入以下命令 (通常需要root 或者是 sudo 許可權),以root許可權安裝下列軟體包(可能並不完整,會有提示,提示缺少即裝就可以了):