Stack Exchange 커뮤니티에서 유사한 질문을 많이 읽었지만 그 중 "깨끗한" 바이너리 덤프를 다루는 질문은 없습니다. 나는 주어진 파일에서 깨끗한 바이너리 덤프를 얻으려고 : xxd
및 조합을 사용했습니다 .sed
내가 말하는 내용을 설명하겠습니다. "xxd -p"의 출력을 본 적이 있을 것입니다. 이는 다음과 같습니다.
f4d37fd532171a4a3445be1bb03e7d6b75f3871ffee937aebc9eb2c9417f
f4e2fc8516e0a60a2c7e83c6a14c1a5e1b1e3f2ab9e12904cbd18aa2a4b9
f493d317c7a3ce71b7ab99fad4b64431d34866ced4d1f3e3f38136860009
fd08800c90491c8f7230d8b07936c4c0c29d2d12b138cdb2c544be9cc9fa
0e79d66faf375737966b67e7c7bf7efcf1703616a4643193d9aaafd63215
cf09a6e3e152bd01e9696b79f5faa5edd9f9b05628fdd9f77ee0dae1c5e8
dc2351d59693d84abac088cc4cd72916b5499830e4482e214bda0892f38c
60e9856fa111172a529222a7905e20b3c272a5b25c6fec9fbe386bb7f6cf
줄 번호도 없고 해당 ASCII도 없고 아무것도 없습니다. 그냥 오래된 바이트 모음입니다. 이것이 내가 원하는 것입니다. 단지 바이너리가 필요하다는 것입니다.
두 가지 옵션이 있습니다. 먼저 위에 표시된 대로 일반 xxd 16진수 덤프를 얻은 다음 변환할 수 있습니다.저것또는 bash에 내가 모르는 도구나 유틸리티가 있을 수 있습니다.
이것이 내가 원하는 것입니다. 바이너리 덤프는 다음과 같습니다.
001101100011010100110110001100010011100001100001
011000010011000000111001011001000011010100110010
001101000011001101100001011000110110010100110000
001100100110010001100001001100000011010100110011
001110000110011000111001011000100110000100110010
011001010110010000110011001100010110001100001010
어떤 파일에서든 깨끗한 순수 바이너리 덤프를 얻는 한 위의 모든 방법이 제게는 잘 작동합니다. 그래서 제 질문은 개행, 공백, 줄 번호 또는 아무것도 없이 그것을 얻는 방법입니다.
답변1
xxd
및 다음을 사용한 cut
실용적인 솔루션 tr
:
xxd -b -c1 file | cut -d" " -f2 | tr -d "\n"
답변2
펄 솔루션:
perl -ne 'use bytes; while ($a=substr $_,0,1,"") {printf "%08b\n", ord $a}'
\n
긴 인쇄물에서 모든 내용을 제거합니다 .