16진수

Category
아이템: 16진수(3)
포스트 갯수3

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

By 반달가면 | 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진수를 바이너리 파일로 변환

By 반달가면 | 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진수로 출력하기

By 반달가면 | 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 ... ...