我有一个奇怪的问题,我正在用cat读取二进制文件。管道输出正在添加额外的字符,特别是0D0D。所以我可以在二进制编辑器中读取文件,它看起来像这样
...82 FF B3 C9 0A 97....
但是,当我将输出捕捉到文本文件时,它会像这样神秘地添加0D0D
...82 FF B3 C9 0D 0D 0A 97...
我正在阅读由android手机生成的btsnoop_hci.log文件。这些是有问题的实际角色。我知道这个事实发生在一串构成蓝牙链接密钥的字符中间,因此这些额外的字符应该不会被添加。有谁知道发生了什么,为什么猫正在添加额外的字符??
答案 0 :(得分:0)
在换行字节之前插入两个回车字节。这些字符在不同的组合中是重要的,作为各种操作系统的线路终结器。 (Windows使用双字节终结器0D 0A,Unix和OS X仅使用0A,而原始MacOS仅使用0D。)
因此,看起来好像你正在对二进制数据进行某种文本模式处理,不过为什么你得到那个我不能说的具体处理。我对你cat
正在执行此类修改的说法感到有些惊讶,但如果它真的cat
而不是管道中的其他内容那么你可能需要使用不同的工具
答案 1 :(得分:0)
cat
未添加任何字符。请尝试以下方法:
$ adb shell
android$ md5 yourfile
android$ cat yourfile > newfile
android$ md5 newfile
以下是我的设备示例:
shell@hammerhead:/mnt/sdcard $ md5 /system/bin/sh
cf3301e2cf56e5edc88ee20e3899a31e /system/bin/sh
shell@hammerhead:/mnt/sdcard $ cat /system/bin/sh > newfile
shell@hammerhead:/mnt/sdcard $ md5 newfile
cf3301e2cf56e5edc88ee20e3899a31e newfile
shell@hammerhead:/mnt/sdcard $
您会注意到校验和是相同的。 cat
没有以任何方式修改文件。
现在让我们试试adb
:
$ adb shell cat /system/bin/sh | md5sum
23c023cc5eaca953d4b1733afcdd1097 -
校验和不同。
问题不在于cat
。删除此问题并询问有关adb
的后续信息。