0x00 嵌入式---淺談路由器重要硬件

0x00 Flash

  1. RAM:

    1. 可讀可寫

    2. 內存,一般在電路板上有多個引腳的芯片,就是內存芯片。

      1. 這裏說的內存一般都是運行內存,對應計算機的內存條。

      2. 通常人們說的存儲內存對應計算機中的硬盤(外設)

        1. nand flash(文件系統、系統內核,不能直接運行代碼,需要寫入必須先擦除)

  2. ROM:

    1. 易讀難寫

      1. eeprom

      2. nor flash(bootload、BIOS,可直接運行代碼)

  3. 特性:長期保存數據,掉電也不丟失數據,讀寫速度一般

  4. Flash(閃存)和RAM(內存)的區別:

    1. 判斷方式:

      1. 可以通過引腳的位置判斷,引腳在長方形的長邊上的是RAM,在短邊的是Flash

      2. 如果看不到引腳,也可以查詢表面的型號標識判斷

    2. RAM是斷電後丟失數據的,臨時存儲數據,速度較快

    3. Flash是掉電後不會丟失數據的,擁有長期保存數據的功能,速度一般

 

0x01 Serial

  1. 串口,是採用串行通信方式的擴展接口。串行接口是指數據一位一位的順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信,從而大大降低了成本,特別適用於遠距離通信,但傳送速度較慢。

  2. 路由器中最多的是異步串行,是指UART(Universal Asynchronous Receiver/Transmitter),通用異步接收/發送。UART是一個並行輸入成爲串行輸出的芯片,通常集成在主板上。UART包括TTL電平的串口和RS232電平的串口。

    1. TTL電平一般是3.3/5V供電,它定義0.8V一下是低電平,而2.0V以上是高電平,路由器中以這種爲主。

      1. RS232是負邏輯電平,它定義+5~+12V是低電平,而-12~-5V爲高電平。

  3. 爲了安全,廠商一般將串口閹割了,爲了能調試、固件解析,可以找到路由器中的串口,並將其焊接,再用TTL串口轉接線,獲得一個shell。

 

0x02 TTL

  1. 引腳定義:

    1. VCC:電源正極

    2. GND:電源地

    3. RXD:數據接收

    4. TXD:數據發送

  2. 傳輸邏輯:

    1. 起始位:發送器是通過發送起始位而開始一個字符傳送的,起始位數據線處於邏輯0狀態,提示接收器數據傳輸即將開始。

    2. 數據位(Data Bits):起始位之後就是傳送數據位。數據位一般爲8位一個字節的數據(也有6、7位的情況),低位(LSB)在前,高位(MSB)在後。

    3. 校驗位:可以認爲是一個特殊的數據位。校驗位一般用來判斷接收的數據位有沒有錯誤,一般是奇偶校驗。在使用中,該位常常取消。

    4. 停止位:停止位在最後,用以標誌一個字符傳送的結束,它對應於邏輯1狀態。

    5. 波特率:UART的傳送速率,用於說明數據傳送的快慢。在串行通信中,數據是按位進行傳送的,因此傳送速率用每秒鐘傳送數據位的數目來表示,稱之爲波特率。如波特率9600bps(位/秒)。

    6. TTL轉串口(必備工具)

 

0x03 JTAG

  1. JTAG(Joint Test Action Group 聯合測試工作組):是一個國際標準測試協議,主要用於芯片內部測試。簡單地說,JTAG協議接收用來控制CPU的。

  2. JTAG接口:

    1. TCK:測試時鐘輸入

    2. TMS:測試模式選擇,TMS用來設置JTAG口處於某種特定的測試模式

    3. TDI:測試數據輸入,數據通過TDI輸入JTAG口

    4. TDO:測試數據輸出,數據通過TDO從JTAG口輸出

    5. VCC:電源正極

    6. GND:電源地

  3. 另外作用:JTAG可以讀取nor flash(bootload存放處),當路由器變磚時,可以通過JTAG將做好的bootload重新寫入到nor flash中(救磚方法)。

  4. 生產廠家:

    1. J-Link(常用)

    2. ULINK

    3. ST-Link

    4. 。。。

 

常用的路由器存儲結構

  1. nor flash + nand flash

  2. CFI(eeprom、epcs串行flash)+ nand flash

  3. nand flash(改良,添加了stepstone(4K 啓動引導向區))

  4. 運行的方式:先運行 nor flash 中的bootload或BIOS,bootload或BIOS初始化內存、外設等,再運行nand flash中的系統內核(將代碼片段一點點搬運到bootload已經初始完成的內存裏面再運行,而不是在nand flash中運行)

有些路由器可能系統文件是隻讀,或者可寫,但是當寫入之後,重啓路由器,寫入的讀寫就沒了,因爲路由器啓動是通過重新解壓tgz文件,而我們寫入的文件是解壓之後的文件,所以要想真正寫入文件,可以替換解壓之前的tgz文件中,或者通過類似web中的LFI,因爲配置文件不會被重寫,可以找到什麼讀取了配置文件,然後該程序是否調用了system或者其他系統函數,再想辦法繞過校驗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章