【问题标题】:Command to convert hexdump back to text将 hexdump 转换回文本的命令
【发布时间】:2017-10-28 13:42:14
【问题描述】:

我正在使用 Catfish 查找包含某些文本的文件。找到的一些文件而不是纯文本包含一些看起来像十六进制转储的东西:

3c3f 7068 700a 0a66 756e 6374 696f 6e20
7573 6572 5f65 7869 7374 7328 2475 6e29
207b 0a09 7265 7475 726e 2074 7275 653b
0a7d 0a0a 0a3f 3e00 0000 0000 0000 0000

即总是 8 列,每行包含 16 个字节。上面的第一行应该是

是否有命令unhex文件并打印内容?

【问题讨论】:

    标签: bash command-line hexdump xxd


    【解决方案1】:

    将xxd 与还原选项-r 一起使用

    xxd -p -r file.txt
    

    给出一个结果

    <?php
    
    function user_exists($un) {
            return true;
    }
    
    
    ?>
    

    【讨论】:

      【解决方案2】:

      使用 bash:

      for block in $(cat file); do 
        [[ $block =~ (..)(..) ]] && echo -en "\x${BASH_REMATCH[1]}\x${BASH_REMATCH[2]}"
      done
      

      输出:

      <?php
      
      function user_exists($un) {
              return true;
      }
      
      
      ?>
      

      【讨论】:

        【解决方案3】:
        echo -e "$(sed -r 's@\s*([a-f0-9][a-f0-9])\s*@\\U\1@g' < test.txt | tr -d '\n')"
        

        sed 正则表达式从匹配的开头和结尾捕获两个十六进制字符和零个或多个空格,并将其转换为 unicode 字符删除空格(g 是全局组合,-r 启用扩展正则表达式) .

        tr 删除文件中存在的换行符

        echo -e 将 unicode 转换为 ascii 字符

        【讨论】:

        • 请添加解释以提高您的回答质量并帮助人们了解您建议的解决方案的工作原理。
        猜你喜欢
        • 2020-09-09
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        相关资源
        最近更新 更多