답변:
내가 사용 -r 및 -p 로 전환 xxd를 :
$ echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181
@Gilles 답변에서 영감을 얻은 펄 버전은 다음과 같습니다.
$ echo '0006303030304e43' | perl -e 'print pack "H*", <STDIN>' | nc -l localhost 8181
md5sum ../it/manifest.json | awk '{print $1}' | xxd -r -p | hd
xxd
또는 없는 솔루션 perl
:
는 IF echo
쉘 지원을의 내장은 ( bash
및 zsh
수행하지만 dash
), 당신은 단지 바로 백 슬래시 이스케이프를 사용해야합니다 :
echo -ne '\x00\x06\x30\x30\x30\x30\x4e\x43' | nc -l localhost 8181
당신이있는 경우 /bin/echo
에서 GNU의로 coreutils (Linux 시스템에 거의 표준) 또는 비지 박스에서 당신도 사용할 수 있습니다.
으로 sed
당신은 탈출 패턴을 생성 할 수 있습니다 :
$ echo '0006303030304e43' | sed -e 's/../\\x&/g'
\x00\x06\x30\x30\x30\x30\x4e\x43
결합 :
echo -ne "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
echo
이 printf
제거됩니다. printf "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
.
당신이 있다면 xxd
, 그것은 쉽습니다 : 그것은 16 진수로 변환 할 수 있습니다.
echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181
POSIX 도구 만 사용하여 16 진수를 2 진수로 변환하는 합리적이고 합리적인 방법은 없다고 생각합니다. Perl에서 상당히 쉽게 할 수 있습니다. 다음 스크립트는 16 진수가 아닌 입력 문자를 무시하고 16 진수를 2 진수로 변환합니다. 입력 라인에 홀수의 16 진 숫자가 포함되어 있으면 불평합니다.
#!/usr/bin/env perl
$^W = 1;
$c = undef;
while (<>) {
tr/0-9A-Fa-f//cd;
if (defined $c) { warn "Consuming $c"; $_ = $c . $_; $c = undef; }
if (length($_) & 1) { s/(.)$//; $c = $1; }
print pack "H*", $_;
}
if (!eof) { die "$!"; }
if (defined $c) { warn "Odd number of hexadecimal digits"; }
POSIX (예 : 임베디드 장치)를 고수해야하는 경우 16 진수 대신 Base64 를 사용하는 것이 좋습니다 . uudecode 를 사용 하여 Base64를 디코딩 할 수 있습니다 . 입력은 uuencode 에 의해 생성 된 헤더 형식과 끝 행을 가져야 하며 원시 Base64 일 수 없습니다.
uudecode <<EOF | nc -l localhost 8181
begin-base64 644 -
AAYwMDAwTkM=
====
EOF
이것과 유사합니다 : https : //.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes/47253233#47253233
stdin에서 다양한 변환을 수행하고 결과를 stdout으로 뱉어내는 도구를 작성했습니다. cryptocli dd
이러한 변형 만 수행하고 다른 작업은 수행하지 않습니다.
echo -n 0006303030304e43 | cryptocli dd -decoders hex | nc -l localhost 8081
당신을 위해 일할 것입니다.
이 도구는 오픈 소스이므로 여기에서 찾을 수 있습니다 : https://github.com/tehmoon/cryptocli
내 도구를 사용하여 16 진수로 직접 인코딩 할 수도 있습니다.
cat my.dat | cryptocli dd -encoders hex | nc -l localhost 8081
616263
이 질문과 어떤 관련 이 있습니까? 질문의 데이터를 사용하십시오. (2) 어떻게 작동하는지 설명 할 수 있습니까? 의견에 응답하지 말고 명확하고 완전하게 답변을 수정 하십시오.