0

Sophos UTM 9 で使用するために OpenVPN ファイルと証明書を.apcファイルに変換するシェル スクリプトをダウンロードしました。

問題は、出力がエンコードされていないように見えることです (これが正しい用語だと思います)。

スクリプトの出力を、Notepad++ で UTM からダウンロードした .apc ファイルと比較すると、スクリプトの出力は次で始まります。

\x04\x06\x04

一方、正しくエンコードされたファイルは次のようになります

EOT BEL EOT

スクリプトの出力をインポートしようとすると失敗します。これは、ASCII 文字が適切にエンコードされていないためだと思います。

とにかくすべての \x をエンコードできるものはありますか?? 適切な文字に?または、.sh 出力を既にエンコードされた文字にする方法はありますか?

参考までに、シェルスクリプトには次のような機能があります。

write_header() {
    printf "\x04\x06\x041234\x04\x04\x04\x08\x03\x0c\x00\x00\x00\x0a" > ${ApcFile}
}
4

1 に答える 1

0

\x04結果のファイルには、文字通りのような文字は表示されません。スクリプトは、制御文字に 16 進表現を使用するだけです。

シェルで実行するprintf "\x04\x06test"と、「test」が表示されます。これを hexdumper にパイプするxxdと、次のようになります。

# 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(これは理にかなっています)

反対質問:

  • vi のようなテキスト エディタで出力ファイルを見たときに、16 進表現で制御文字が文字通り表示されますか?
  • どの種類のオペレーティング システムでこれを実行していますか?
  • 楽しい質問:.- .-. . / -.-- --- ..- / .-. . .-.. .- - . -.. / - --- / ... .- -- ..- . .-.. / -- --- .-. ... . / ... - --- .--.
于 2013-02-14T09:07:48.127 に答える