16진수

포스트: 3|아이템:16진수(3)
Tags

Posts

3 posts

[bash: sed] 16진수값(hex) 대체하기

반달가면|2017년 11월 14일

sed에서 문자열이 아니라 16진수값을 대체할 수도 있다. 따라서 텍스트 파일뿐만 아니라 바이너리 파일에 대해서도 대체 기능을 사용할 수 있다(sed를 이용한 문자열 대체의 기본은 이전 게시물을 참고하자. 여기로). 아래의 예시를 보자. # my_file.dat에서 모든 0xff를 0xf0으로 대체, my_file.mod.dat로 저장 sed 's/\xff/\xf0/g' my_file.dat > my_file.mod.dat 16진수를 나타내기 위해 'x'를 사용하는데, 문자 x를 의미하는 것이 아니므로 역슬래시(\)를 추가해 주어야 한다. 즉 \xff는 0xff를 의미하게 된다. 만약 연속되는 16진수값을 대체할 경우에는 각 값마다 \x를 붙인다. 아래의 예시를 보자. # my_fi

xxd - 리눅스에서 16진수를 바이너리 파일로 변환

반달가면|2017년 6월 27일

바이너리 파일을 16진수로 출력해 주는 도구인 xxd를 이용해서 반대로 16진수를 바이너리 파일로 만들 수도 있구나. 바이너리 파일 내용을 16진수로 출력하는 방법은 이전 게시물을 참고하자. 여기로 16진수에서 바이너리 파일로의 변환은 xxd에서 -r 옵션을 이용하면 된다. 예를 들어 문자열 "abc"에 해당되는 16진수 "0x61 0x62 0x63"을 바이너리 파일로 만들고 싶다면 아래와 같이 할 수 있을 것이다. # 16진수 파일 data.hex 만들기 echo "616263" > data.hex # data.hex 파일을 바이너리 데이터로 변환한 출력을 data.bin으로 저장 xxd -r -p data.hex > data.bin # data.bin 내용 확인

xxd - 리눅스에서 바이너리 파일 내용을 16진수로 출력하기

반달가면|2017년 6월 19일

리눅스에서 바이너리 파일 내용을 16진수로 출력해야 할 경우 xxd라는 요긴한 도구가 있다. 아래의 예시를 보자. # data.bin 파일 내용 출력 xxd data.bin 0000000: 1f8b 0800 ... 0000010: e103 6abb ... ... 위와 같이 입력하면 통상 많이 볼 수 있는 바이너리 파일 편집기와 유사한 형식으로 내용을 출력해 준다. 기본 출력은 2바이트씩 묶어서 공백으로 구분해서 보여주는데, 만약 각 바이트마다 공백으로 구분하려면 -g 옵션을 추가해 주자. # data.bin 파일 내용 출력, 1바이트 단위로 구분 xxd -g 1 data.bin 0000000: 1f 8b 08 00 ... 0000010: e1 03 6a bb ... ...