寫在前面的話shell
下面將會介紹逆向一個路由器的過程,準確的說是一臺華爲 HG533路由器。緩存
本文僅表明原文做者意圖,同時文章中介紹的工具、技術帶有必定的攻擊性,請合理合法使用。異步
正文工具
前面的思路也比較簡單就是尋找串口,而這個串口也是預留性質的一個串口,主要是爲了後期調試以及升級設備時使用。而對於路由器你能夠看作是一個小型的嵌入式設備,從打印機到智能相機均可以這麼看待,而串口有時候是隱藏起來的,咱們的目的就是找到這個串口而後調試設備。利用串口能夠訪問路由器的CFE、觀察boot和調試信息、經過一個Shell與系統進行交互異步串行通訊。下文須要注意的是關於路由器串口的描述,在沒有特殊說明的狀況下,都是指UART。oop
探測串口ui
這裏須要注意一下,在路由器中,咱們要尋找的串口不是指一般所見的RS232,而是指UART(通用異步收發器),它是路由器設備中比較常見的一種接口。在尋找UART過程當中必定要注意在路由器主板上那些單行具備4~6個引腳的位置,大多數狀況仍是有用的,但少數狀況例外。這個不是爲用戶準備的,因此有些時候是閒置的,同時也沒有用到其引腳。在看到拆解以後的電路板後,有兩處地方引發了個人注意。(見下圖)spa
目測這個設備有兩個不一樣的串口以及兩處不一樣的電路構成,同時利用這兩部分完成設備的通訊任務。如今就有一個思路了,咱們能夠根據電路板接線狀況,來找到主電路,而最後也能夠獲得咱們須要的信息。命令行
引腳識別3d
咱們在這裏發現兩排引腳(見圖),根據前面的判斷這就應該是UART。如今找到了目標,第一件事情就應該是看看哪些是有用的,哪些是沒有用的,我使用一個簡單的技巧來判斷,這是從電路板正面拍的照片,咱們來一塊兒看一下。調試
在這裏咱們須要注意PCB電路板上面的焊錫點之間的鏈接。
1.好像鏈接到了什麼東西(注意兩點鐘方向的位置)
2.沒有鏈接
3.若是焊點鏈接了不少地方,那麼頗有多是GND或VCC引腳,但這不是萬能的方法。須要補充一點的是,VCC引腳一般被作成方形,路由器主板上能夠看到較寬的走線,那麼該引腳極有可能也是VCC引腳。
4.GND引腳一般存在多條走線鏈接到周圍的地線,因此看到周圍的地線就須要注意了。而在這裏就看到了這種狀況,因此就能夠判斷出這個是GND引腳了。
5.鏈接到什麼東西
焊接引腳
在上面的圖片咱們看到了兩個串口。那麼如今就開始在上面進行焊接,雖然比較困難,我嘗試從焊點正面突破,而後穿透焊點到背面去,但很明顯這是很是困難的。而第二個串口,我打算利用 Dremel電動打磨機來達到前面的目的,這樣就能夠在PCB電路板的背面將其焊接好,這個工做量仍是比較大的。
引腳說明
前面已經獲得了三個有用的引腳,但咱們尚未具體利用UART。這裏須要強調的是UART做爲異步串口通訊協議的一種,工做原理是將傳輸數據的每一個字符一位接一位地傳輸。讓咱們來回顧一下UART:
TX【發送引腳,Tx 上發送的數據將被Rx 輸入端接收】
Rx【接收引腳,Rx 輸入端接收】
GND 【接地,該引腳電壓一般爲0】
Vcc【電源電壓。該引腳電壓較穩定,一般3.3V ~5V,不要嘗試鏈接】
CTS【容許發送,同時CTS 是對RTS 的應答,一般狀況下使用】
DTR【一般狀況下使用】
CTS和RTS是串行通信中流控制的兩個引腳,簡單介紹一下,就是當接收方(UART2)認爲能夠接受UART數據時,將RTS置爲有效位。發送方(UART1)的 CTS引腳接收到此信號後,纔將數據進行發送。通常來講,當UART數據接收緩存大於兩個字節空餘時,就能夠將RTS置爲有效接收。用舉例的方法解釋就是,A向B發送RTS信號,代表A要向B發送若干數據,B收到RTS後,向全部基站發出CTS信號,代表已準備就緒,A能夠發送。而UART 能夠進入一個內部迴環(Loopback)模式,用於診斷或調試。在迴環模式下,從Tx 上發送的數據將被Rx 輸入端接收。而Tx以及Rx設置值時(默認值1),這時候電壓也會出現浮動。
所以咱們來總結一下,都獲得了什麼結論:
1.此前的三個引腳看來就是,TX、RX和GND。
2.一個看起來很像GND(正對着的第4個位置處)
3.Tx-被用於數據傳輸
4.Rx-與另一處有關聯
固然爲了驗證的話,我就須要嘗試不一樣的排列組合方式,那麼就須要USB-UART ,即下位機將USB的數據轉換爲UART的數據。下面能夠利用示波器和萬用表來了解每一個引腳是什麼狀況了。
如今使用了示波器來驗證每一個引腳的具體狀況:
1.GND-固定在0V因此確定是接地
2.Tx -你能夠在圖片中看到發送的信息
3.在0v之間波動,那麼必定是 Rx,那是由於尚未出現更大的浮動。
如今咱們已經瞭解了引腳的狀況,下面就須要分析串口狀況了,那麼就須要知道串口通訊時的速率(波特率),就須要用到邏輯分析儀。若是沒有,那麼就須要嘗試以前的排列組合方式了,
我已經開始利用分析儀分析了波特率的狀況,如今就能夠看到這些數據(\n\r\n\rU-Boot 1.1.3 (Aug…)。
一旦瞭解到串口以及波特率的狀況,下面就開始與設備鏈接
鏈接串口
如今已經獲得了設備的硬件信息,下面就須要與設備創建通訊關係。下面就開始USB-UART,而後利用兩個串口進行通訊,並用示波器查看其狀況
當開始使用串口以後,計算機與設備之間也開始發送信息,這是當時的信息,下面是發送的第一行信息
Please choose operation:
3: Boot system code via Flash (default).
4: Entr boot command line interface.
0
命令行界面??當我按下4以後,就獲得了這個。此外當咱們按下3以後,等待Flash校驗完成以後,再按下回車,就會看到「Welcome to ATP Cli 」信息以及一個登錄提示。通過嘗試以後就能夠利用默認密碼 admin:admin成功登錄。
——————————- —–Welcome to ATP Cli—— ——————————- Login: admin Password: #Password is ‘admin’ ATP>shell BusyBox vv1.9.1 (2013-08-29 11:15:00 CST) built-in shell (ash) Enter ‘help’ for a list of built-in commands. # ls var usr tmp sbin proc mnt lib init etc dev bin
在命令行頁面利用shell 命令就能夠獲取root權限了。而該路由器還運行了BusyBox,這些會在之後介紹。
接下來會介紹什麼呢?
如今都已經獲得BusyBox了,在下面將會着重於軟件,例如密碼、一些應用程序等問題來介紹。固然還會介紹一些比較有意思的事情,敬請期待。。。。。。。
*參考來源:jcjc-dev