dd를 사용하여 파일의 정확한 부분을 추출하시겠습니까?

dd를 사용하여 파일의 정확한 부분을 추출하시겠습니까?

588Ko 파일이 있고 0x7E8D6에서 0x8AD5D까지 바이트를 추출하고 싶습니다. 나는 시도했다:
dd if=file of=result bs=50311 count=1 skip=518358

  • 50311은 0x8AD5D - 0x7E8D6을 나타냅니다.
  • 518358은 0x7E8D6을 나타냅니다(자르고 싶은 곳부터)

dd는 지정된 오프셋으로 이동할 수 없다고 알려줍니다. 어떡해? 이 작업을 수행할 수 있는 다른 유틸리티가 있습니까?

답변1

dd를 사용하여 파일의 정확한 부분을 추출하시겠습니까?

구문을 약간 조정해 보겠습니다.

bs=1

개별 블록이나 바이트에서 계산하거나 건너뛰기를 원하므로 블록 크기를 1로 설정합니다.

skip=518358

스트림 시작 부분에서 이 만큼의 블록 또는 바이트를 건너뜁니다.

count=50311

스트림에서 너무 많은 블록이나 바이트를 복사합니다.

dd if=/path/file of=/path/result bs=1 count=50311 skip=518358

답변2

skip그리고 count블록으로 표현됩니다. 518358 × 50311바이트를 건너뛰도록 요청했습니다.

dd오류가 발견되는 것을 방지할 수 있습니다., 그러니 어쨌든 피하는 것이 가장 좋습니다.

head대부분의 Unix 변형(BusyBox는 포함하지만 OpenSBD는 제외)의 경우 및 에 여러 바이트를 전달할 수 있습니다 tail. tail1부터 세기 시작하는 것을 기억하세요 .

<file tail -c "$((0x7E8D6 + 1))" | head -c "$((0x8AD5D - 0x7E8D6))" >result

관련 정보