Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ヒアドキュメント中で16進数として格納された文字列を10進数にパースし格納する

ヒアドキュメントとtrで長めな文字列を成形 - Bye Bye Moore

bash内の算術置換で16進数の数値をつかう - Bye Bye Moore
の発展的話題。

実際のところ

NetcatでUDPでウケたデータをhexdumpでベタ文字列にし、それをパースする例。

Bashの基数記法を使って、cutコマンドで整えた文字列をバリバリつなぐ。

BASESTR=$(echo -ne $DATACMD | nc -u -w 1 $IPADDR $PORT | hexdump  -v -e '/1 "%02X"')

STR_NUMs=$( tr -d '\n' << EOF
"A":"$((16#$(echo $BASESTR | cut -b 22-23)))",
"B":"$((16#$(echo $BASESTR | cut -b 41)))",
"C":"$((16#$(echo $BASESTR | cut -b 54-55)))"
EOF
)

参考もと

Bash Reference Manual