2012-04-19 4 views

답변

1

이것은 내가 무엇을 now..It를하고있는 중이 야하는 것은 완벽하게 작동하지만 단지 추가 절름발이 방법의 종류입니다 오프셋 : 당신이 AWK 살 수 있다면

xxd file.bin | xxd -r -s 0x2e00000 | xxd -s 0x2e00000 > file.hex 
0

은 아래에 코멘트를 읽기 얻어야한다 :

내가 이진 파일의 첫 번째 바이트 오프셋 존재가되고 싶어요. 즉 탐색하지 않고 오프셋을 추가하십시오.

이렇게하면 출력을 구문 분석하고 원하는 오프셋을 추가하기 위해 수정할 수있는 유일한 방법이라고 생각합니다.

이 작업을 쉽게 처리 할 수있는 문서를 찾지 못했습니다. :(

+0

바이너리 입력 파일을 검색하고 입력 파일에서 오프셋 바이트를 건너 뜁니다. 바이너리 파일의 첫 번째 바이트가 오프셋에 있어야합니다. 즉 탐색하지 않고 오프셋을 추가하십시오. – Jean

+0

확인을 클릭하십시오. 내가 아는 한, 불가능합니다. – karlphillip

0

여기 개념의 증거 :

$ xxd random.bin | gawk --non-decimal-data ' # <-- treat 0x123 like numbers 
> { 
>  offset = 0x1000    # <-- your offset, may be hex of dec 
> 
>  colon = index($0, ":") - 1 
>  x = "0x" substr($0, 1, colon) # <-- add 0x prefix to original offset ... 
>  sub(/^[^:]*/, "")    # <-- ... and remove it from line 
> 
>  new = x + offset    # <-- possible thanks to --non-decimal-data 
>  printf("%0"colon"x", new)  # <-- print updated offset ... 
>  print       # <-- ... and the rest of line 
> }' 
0001000: ac48 df8c 2dbe a80c cd03 06c9 7c9d fe06 .H..-.......|... 
0001010: bd9b 02a1 cf00 a5ae ba0c 8942 0c9e 580d ...........B..X. 
0001020: 6f4b 25a6 6c72 1010 8d5e ffe0 17b5 8f39 oK%.lr...^.....9 
0001030: 34a3 6aef b5c9 5be0 ef44 aa41 ae98 44b1 4.j...[..D.A..D. 
    ^^^^ 
    updated offsets (+0x1000) 

내가 그것을 펄이나 파이썬에서 짧은 것 내기하지만, AWK 그냥 더 "스크립트 틱"을 느낀다 :-)

1

xxd 지금를 사용하여, 오프셋 지원을 제공하기 위해 나타납니다 예를 들면

: xxd -o 0x07d20000 file.bin

젠투 리눅스에 xxd의 내 버전을 가지고,하지만 난 다른 배포판에 사람들을 도울 깊이를 파고 :

xxd V1.10 27oct98 by Juergen Weigert - xxd 버전을 사용하지 마십시오 - I 오프셋 지원없이이 소스 코드를 발견했습니다 !! 따라서 내 바이너리가 어디서 왔는지 추적했습니다 :

app-editors/vim-core-7.4.769 - 현대 VIM이 설치되어있는 한 추가 오프셋 지원의 이점을 얻을 수 있습니다. 적어도 Gentoo에서,하지만 나는 올바른 방향으로 여러분을 안내 할 것입니다.

배포판에 오래된 xxd가 계속 제공되는 경우 확인한 최신 VIM을 수동으로 컴파일하는 것을 고려하면 오프셋이 지원됩니다.

+0

fwiw, 믿을만한 Ubuntu에서 xxd (vim 7.4.052)는 xenial (vim 7.4.1689)에서 -o를 지원하지 않습니다. 당신이 그것을 믿을만한 원한다면 https://launchpad.net/~pkg-vim/+archive/ubuntu/vim-daily의 PPA는 충분히 새로운 vim 7.4.826을 설치합니다. –