디스크에서 원시 데이터를 읽고 변환

디스크에서 원시 데이터를 읽고 변환

아래와 같이 데이터를 변환하는 방법을 찾는 데 도움을 주십시오. dd 유틸리티를 사용하여 디스크에서 읽습니다.

dd if=/dev/sdb Skip=8388608 count=560 iflag=skip_bytes,count_bytes |hexdump -C

나는 점점

000001a0 00 00 00 00 cf 4c 79 ce 00 00 00 00 00 00 00 00 |.....리..........|

하지만 나는 다음을 얻고 싶다:

000001a0 ce794ccf00000000 0000000000000000 |.....리..........|

나는 hexdump를 사용할 필요가 없었으며 다른 도구가 트릭을 수행할 것입니다. 감사해요.

답변1

16진수 바이트의 역순은 개별 바이트의 리틀 엔디안 처리로 인해 발생합니다.

hexdump는 64비트 값을 허용하지 않는 것 같지만 od(8진수 덤프)는 허용합니다. hexdump에 대한 호출을 다음으로 바꾸십시오.

od -t x8z

64비트 16진수 긴 단어와 ASCII를 출력합니다. ASCII는 >...<로 묶여 있으므로 쉽게 건너뛸 수 있습니다.

답변2

hexdump처음에는 구문이 약간 모호해 보이더라도 의 출력은 완전히 사용자 정의할 수 있습니다.

$ seq 10 | hexdump -C
00000000  31 0a 32 0a 33 0a 34 0a  35 0a 36 0a 37 0a 38 0a  |1.2.3.4.5.6.7.8.|
00000010  39 0a 31 30 0a                                    |9.10.|
00000015
$ seq 10 | hexdump -e '"%08.8_ax " 2/8 " %016x"' -e '"  |" 16 "%_p" "|\n"' -e '"%08.8_Ax\n"'
00000000  0a340a330a320a31 0a380a370a360a35  |1.2.3.4.5.6.7.8.|
00000010  0000000a30310a39                   |9.10.|
00000015

이러한 64비트 정수의 엔디안(위의 리틀 엔디안)은 시스템의 컴퓨터 아키텍처/C 컴파일러에 따라 다릅니다.

위의 마지막 숫자에서 누락된 바이트를 충족하기 위해 0 패딩을 확인하세요.

hexdump의 및 를 사용하는 대신 ddhexdump의 skip및 을 사용할 수 있습니다.count-s-n

관련 정보