use*_*739 6 python awk command-line png
看来,如果我将二进制数据附加到 png 文件的末尾,则该 png 文件仍然可以查看。所以 png 文件仍然是一个有效的文件。有没有办法从未记录原始文件大小的 png 文件中自动提取此类尾随数据?
PNG 以“IEND”块结尾。最后 12 个字节看起来总是一样的。所以你也许可以使用:
dd if=appended.png of=extracted.png bs=1 count=$((($(od -t x1 appended.png | awk '{$1=""}1' | tr -d \\n | sed "s/00 00 00 00 49 45 4e 44 ae 42 60 82/XMATCHX/" | tr X \\n | grep -b MATCH | cut -f1 -d:)-2)/3+12))
Run Code Online (Sandbox Code Playgroud)
上面的内容比在 macos 上工作所需的时间要长一点,它的处理方式grep -b与 GNU grep 不同。
其要点是:
appended.pngMATCH使用 sed/tr替换grep -b使用and获取 MATCH 的偏移量cut注意:即使不是不可能,12 字节 IEND 块也不太可能出现在 PNG 中,但上面没有检查它。
这是一次有趣的冠状病毒练习 - 谢谢!