我下载了一个shell脚本,用于将OpenVPN文件和证书转换为.apc文件,以便与Sophos UTM 9一起使用。脚本可以找到here并且看起来效果很好。
问题是输出似乎没有编码(我相信这是正确的术语)。
当我将脚本的输出与从Notepad ++中的UTM下载的.apc文件进行比较时,脚本输出以
开头\x04\x06\x04
而正确编码的文件看起来像
EOT BEL EOT
当我尝试导入脚本的输出时,它失败了,我相信这是因为ASCII字符没有被正确编码。
无论如何我可以编码所有的\ x ??到正确的人物?或者有什么方法可以让.sh输出已编码的字符?
作为参考,shell脚本具有诸如
之类的功能write_header() {
printf "\x04\x06\x041234\x04\x04\x04\x08\x03\x0c\x00\x00\x00\x0a" > ${ApcFile}
}
答案 0 :(得分:0)
您不应在结果文件中直接看到任何字符\x04
。
该脚本只对控制字符使用十六进制表示。
如果你在shell上执行printf "\x04\x06test"
,你应该看到“test”,如果你将它传递给像xxd
这样的hexdumper你应该得到以下
# printf "\x04\x06test" | xxd
0000000: 0406 7465 7374 ..test
标题序列
printf "\x04\x06\x041234\x04\x04\x04\x08\x03\x0c\x00\x00\x00\x0a"
转换为(控制包含在[]括号中的字符以便澄清)
[EOT] [ACK] [EOT] 1234 [EOT] [EOT] [EOT] [BS] [ETX] [FF] [NUL] [NUL] [LF]
有趣的是:你说工作文件以EOT BEL EOT (\x04 \x07 \x08)
开头,脚本生成的输出文件以EOT ACK EOT
开头(这很有意义)
反的问题:
.- .-. . / -.-- --- ..- / .-. . .-.. .- - . -.. / - --- / ... .- -- ..- . .-.. / -- --- .-. ... . / ... - --- .--.