0x00 Flash
-
RAM:
-
可讀可寫
-
內存,一般在電路板上有多個引腳的芯片,就是內存芯片。
-
這裏說的內存一般都是運行內存,對應計算機的內存條。
-
通常人們說的存儲內存對應計算機中的硬盤(外設)
-
nand flash(文件系統、系統內核,不能直接運行代碼,需要寫入必須先擦除)
-
-
-
-
ROM:
-
易讀難寫
-
eeprom
-
nor flash(bootload、BIOS,可直接運行代碼)
-
-
-
特性:長期保存數據,掉電也不丟失數據,讀寫速度一般
-
Flash(閃存)和RAM(內存)的區別:
-
判斷方式:
-
可以通過引腳的位置判斷,引腳在長方形的長邊上的是RAM,在短邊的是Flash
-
如果看不到引腳,也可以查詢表面的型號標識判斷
-
-
RAM是斷電後丟失數據的,臨時存儲數據,速度較快
-
Flash是掉電後不會丟失數據的,擁有長期保存數據的功能,速度一般
-
0x01 Serial
-
串口,是採用串行通信方式的擴展接口。串行接口是指數據一位一位的順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信,從而大大降低了成本,特別適用於遠距離通信,但傳送速度較慢。
-
路由器中最多的是異步串行,是指UART(Universal Asynchronous Receiver/Transmitter),通用異步接收/發送。UART是一個並行輸入成爲串行輸出的芯片,通常集成在主板上。UART包括TTL電平的串口和RS232電平的串口。
-
TTL電平一般是3.3/5V供電,它定義0.8V一下是低電平,而2.0V以上是高電平,路由器中以這種爲主。
-
RS232是負邏輯電平,它定義+5~+12V是低電平,而-12~-5V爲高電平。
-
-
-
爲了安全,廠商一般將串口閹割了,爲了能調試、固件解析,可以找到路由器中的串口,並將其焊接,再用TTL串口轉接線,獲得一個shell。
0x02 TTL
-
引腳定義:
-
VCC:電源正極
-
GND:電源地
-
RXD:數據接收
-
TXD:數據發送
-
-
傳輸邏輯:
-
起始位:發送器是通過發送起始位而開始一個字符傳送的,起始位數據線處於邏輯0狀態,提示接收器數據傳輸即將開始。
-
數據位(Data Bits):起始位之後就是傳送數據位。數據位一般爲8位一個字節的數據(也有6、7位的情況),低位(LSB)在前,高位(MSB)在後。
-
校驗位:可以認爲是一個特殊的數據位。校驗位一般用來判斷接收的數據位有沒有錯誤,一般是奇偶校驗。在使用中,該位常常取消。
-
停止位:停止位在最後,用以標誌一個字符傳送的結束,它對應於邏輯1狀態。
-
波特率:UART的傳送速率,用於說明數據傳送的快慢。在串行通信中,數據是按位進行傳送的,因此傳送速率用每秒鐘傳送數據位的數目來表示,稱之爲波特率。如波特率9600bps(位/秒)。
-
TTL轉串口(必備工具)
-
0x03 JTAG
-
JTAG(Joint Test Action Group 聯合測試工作組):是一個國際標準測試協議,主要用於芯片內部測試。簡單地說,JTAG協議接收用來控制CPU的。
-
JTAG接口:
-
TCK:測試時鐘輸入
-
TMS:測試模式選擇,TMS用來設置JTAG口處於某種特定的測試模式
-
TDI:測試數據輸入,數據通過TDI輸入JTAG口
-
TDO:測試數據輸出,數據通過TDO從JTAG口輸出
-
VCC:電源正極
-
GND:電源地
-
-
另外作用:JTAG可以讀取nor flash(bootload存放處),當路由器變磚時,可以通過JTAG將做好的bootload重新寫入到nor flash中(救磚方法)。
-
生產廠家:
-
J-Link(常用)
-
ULINK
-
ST-Link
-
。。。
-
常用的路由器存儲結構
-
nor flash + nand flash
-
CFI(eeprom、epcs串行flash)+ nand flash
-
nand flash(改良,添加了stepstone(4K 啓動引導向區))
-
運行的方式:先運行 nor flash 中的bootload或BIOS,bootload或BIOS初始化內存、外設等,再運行nand flash中的系統內核(將代碼片段一點點搬運到bootload已經初始完成的內存裏面再運行,而不是在nand flash中運行)
有些路由器可能系統文件是隻讀,或者可寫,但是當寫入之後,重啓路由器,寫入的讀寫就沒了,因爲路由器啓動是通過重新解壓tgz文件,而我們寫入的文件是解壓之後的文件,所以要想真正寫入文件,可以替換解壓之前的tgz文件中,或者通過類似web中的LFI,因爲配置文件不會被重寫,可以找到什麼讀取了配置文件,然後該程序是否調用了system或者其他系統函數,再想辦法繞過校驗。