Unix/Linux/Mac

[Utility] 8진수, 16진수 뷰어

[ CnUnix ] in KIDS
글 쓴 이(By): yamang (*홀로서기*)
날 짜 (Date): 2000년 12월 14일 목요일 오전 07시 13분 53초
제 목(Title): 헥사나 옥탈코드 보는 툴

바이너리 화일의 헥사나 옥탈코드를 보고 싶은데 이거 보는 툴이 머가 있을까요.
strings라는 툴은 바이너리에 텍스트 부분만 보여주는 거 맞나요??

[ CnUnix ] in KIDS
글 쓴 이(By): ahsarang (.아.사.랑.)
날 짜 (Date): 2000년 12월 14일 목요일 오전 08시 19분 33초
제 목(Title): Re: 헥사나 옥탈코드 보는 툴

od

[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2000년 12월 14일 목요일 오전 11시 08분 29초
제 목(Title): Re: 헥사나 옥탈코드 보는 툴

헥사 코드라면 Perl 책에 나오는 xdump 코드를 사용하는 것도 괜찮답니다. 그러면 왼쪽에는 offset, 중앙에는 헥사코드, 우편에는 아스키 문자가 출력되거든요. 이런 포맷이면 어디선가 많이 본 거죠?

00000080 20747265 652e0a23 20c0cc20 bdbac5a9 tree..# .. ….
00000090 b8b3c6ae b4c220c7 f6c0e720 b5f0b7ba …… …. ….
000000a0 c5e4b8ae bacec5cd 20726563 75727369 …….. recursi
000000b0 7665c7cf b0d4206d 7033c6c4 c0cfc0bb ve…. mp3……
000000c0 20c3a3be c6bcad20 0a2320b1 d7b0cdc0 …… .# …..

#!/usr/bin/perl
#
# Usage: xdump [file]
#

# Use the file they specified, if specified
open(STDIN, $ARGV[0]) || die "Can't open $argv[0]: $!\n" if $ARGV[0];

# Do it optimally as long as we can read 16 bytes at a time
while (($len = read(STDIN,$data,16)) == 16) {
# hex code to hexadecimal number, N: a long in "network" order.
@array = unpack('N4', $data);
# invert non-visible char to '.'
$data =~ tr/\0-\37\177-\377/./;
printf "%8.8lx %8.8lx %8.8lx %8.8lx %8.8lx %s\n",
$offset, @array, $data;
$offset += 16;
}

# Now finish up the smaller end than 16 bytes, a byte at a time
if ($len) {
@array = unpack('C*', $data); # C: an unsigned char value;
$data =~ y/\0-\37\177-\377/./; # y is a synonym of tr.
for (@array) {
$_ = sprintf('%2.2x', $_);
}
push(@array, ' ') while $len++ < 16; # fill right margin with ' '
$data =~ s/[^ -~]/./g;
printf "%8.8lx ", $offset;
printf "%s%s%s%s %s%s%s%s %s%s%s%s %s%s%s%s %s\n", @array, $data;
}

답글 남기기