2014-11-06 99 views
0

我有一個奇怪的問題,我正在用貓讀取一個二進制文件。管道輸出是添加額外的字符,特別是0D0D。因此,我可以在一個二進制編輯器讀取文件,它看起來像這樣cat命令添加額外字符

...82 FF B3 C9 0A 97.... 

然而,當我的貓輸出到一個文本文件,它神祕地補充說0D0D這樣

...82 FF B3 C9 0D 0D 0A 97... 

我正在讀由android手機生成的btsnoop_hci.log文件。這些是有問題的實際字符。我知道事實上,這發生在組成藍牙鏈接鍵的字符串中間,所以這些額外的字符肯定不會被添加。有誰知道發生了什麼事,爲什麼貓會添加額外的字符?

+0

如果比較'od -t x1 file'和'cat file |貓| od -t x1',我相信你會發現沒有'cat'在任何地方添加任何字符。包括重現步驟。 – 2014-11-06 23:28:16

回答

0

您將在換行字節前插入兩個回車字節。對於各種操作系統,這些字符以不同的組合顯示爲行終止符。 (Windows使用兩字節終結器0D 0A,Unix和OS X僅使用0A,而原來的MacOS只使用0D)。

看起來,因此,如果你得到了一些種類的二進制數據的文本模式處理的,但爲什麼你得到具體的處理我也說不清楚。您對cat正在執行此類攻擊的說法令我有些驚訝,但如果它確實是cat而不是管道中的其他東西,那麼您可能需要使用其他工具。

+0

你是對的。如下所述,這是adb問題,所以我需要使用另一種方法 – TwinPrimesAreEz 2014-11-07 00:01:03

0

cat不加入任何字符。請嘗試以下操作:

$ adb shell 
android$ md5 yourfile 
android$ cat yourfile > newfile 
android$ md5 newfile 

下面是我的設備爲例:

[email protected]:/mnt/sdcard $ md5 /system/bin/sh 
cf3301e2cf56e5edc88ee20e3899a31e /system/bin/sh 
[email protected]:/mnt/sdcard $ cat /system/bin/sh > newfile 
[email protected]:/mnt/sdcard $ md5 newfile 
cf3301e2cf56e5edc88ee20e3899a31e newfile 
[email protected]:/mnt/sdcard $ 

你會發現,校驗和是相同的。 cat沒有以任何方式修改該文件。

現在讓我們嘗試adb

$ adb shell cat /system/bin/sh | md5sum 
23c023cc5eaca953d4b1733afcdd1097 - 

校驗和是不同的。

的問題不在於cat。刪除該問題並詢問關於adb的後續內容。