2017-10-28 396 views
0

我正在使用Catfish来查找包含特定文本的文件。一些找到的文件而不是纯文本包含看起来像一个十六进制转储的东西:命令将hexdump转换回文本

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 

I.e.总是8列,每行包含16个字节。上面一行应

 
<?php 
function 

是否有UNHEX命令文件和打印的内容?

回答

4

使用xxd使用revert选项-r

xxd -p -r file.txt 

给出

<?php 

function user_exists($un) { 
     return true; 
} 


?> 
012结果
3

使用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; 
} 


?> 
0
echo -e "$(sed -r '[email protected]\s*([a-f0-9][a-f0-9])\s*@\\U\[email protected]' < test.txt | tr -d '\n')" 

从开始,从本场比赛的结束,并将其转换为Unicode字符去掉空格(G是全球sostitution和-r启用扩展的正则表达式的sed的正则表达式捕获夫妇的两个十六进制字符和零个或多个空格)。

TR删除换行出现在文件中

回声-e转换的Unicode到ASCII字符

+0

请添加说明,以提高你的答案的质量,帮助人们了解您的建议解决方案正在工作 –