如何反转二进制文件的内容?

Prv*_*dav 12 binary

我正在解决一个挑战,我发现了一个没有文件扩展名的数据文件。该file命令显示它是一个data file (application/octet-stream). 该hd命令显示GNP。在最后一行。因此,如果我反转此文件,那么我将获得.PNG格式的文件,我到处搜索,但没有找到解释如何反转二进制文件内容的解决方案。

Sté*_*las 14

使用xxd(from vim) 和tac(来自 GNU coreutils,也在tail -r某些系统上):

< file.gnp xxd -p -c1 | tac | xxd -p -r > file.png
Run Code Online (Sandbox Code Playgroud)


Sté*_*las 5

zsh(唯一可以内部处理二进制数据的shell(除非你想考虑ksh93的base64编码方式)):

zmodload zsh/mapfile
(LC_ALL=C; printf %s ${(s::Oa)mapfile[file.gnp]} > file.png)
Run Code Online (Sandbox Code Playgroud)
  • LC_ALL=C: 字符是字节
  • $mapfile[file.gnp]:file.gnp文件内容
  • s::: 将字符串拆分为其字节组成部分
  • Oa:Oarray 下标该数组上反向rder