Files
使用 dd 提取文件的精確部分?
我有一個 588Ko 文件,我想提取從 0x7E8D6 到 0x8AD5D 的字節。我試過 :
dd if=file of=result bs=50311 count=1 skip=518358
- 50311 代表 0x8AD5D - 0x7E8D6
- 518358 代表 0x7E8D6 (從我要剪切的地方)
dd 告訴我它不能跳到指定的偏移量。我能做些什麼?有沒有其他實用程序可以做到這一點?
skip
並且count
都以塊表示。您要求跳過 518358 × 50311 字節。
dd
可以讓錯誤未被發現,所以無論如何最好避免。對於大多數 Unix 變體(包括 BusyBox 但不包括 OpenSBD),您可以將多個字節傳遞給
head
和tail
。請記住tail
從 1 開始計數。<file tail -c "$((0x7E8D6 + 1))" | head -c "$((0x8AD5D - 0x7E8D6))" >result
使用 dd 提取文件的精確部分?
讓我們稍微調整一下語法。
bs=1
將塊大小設置為 1,因為您希望在單個塊或字節中進行任何計數或跳過。
skip=518358
在流的開頭跳過這麼多塊或字節。
count=50311
從流中複製這麼多塊或字節。
dd if=/path/file of=/path/result bs=1 count=50311 skip=518358