바이너리

포스트: 5|조회수: 0|CIVILIZATION
Items

Posts

5 posts

[bash: grep] 파일 안에 섞인 바이너리(binary) 데이터 제거

반달가면|2018년 4월 20일

텍스트 파일에 뭔가 문제가 생겨서 중간에 바이너리(binary) 데이터가 포함된 경우 이를 제거하기 위한 방법이다. 간혹 텍스트 중간에 바이너리 바이트가 일부 삽입되어 있는 희한한 상태로 인하여 다른 부분에서 작업이 안되는 문제가 있어서 고육지책으로 셸 스크립트(shell script)를 만들어서 제거했다. 파일 내용을 한줄씩 읽어서 혹시라도 내용 중간에 바이너리가 있을 경우 이를 제외한 나머지만 모아서 별도의 파일로 다시 저장하도록 했다. 아래와 같이 작업. # 탭을 변수로 할당 tab=`echo -e "\t"` # 대상 파일: ~/my_file.txt target_file=~/my_file.txt # 결과 파일: ~/my_file.txt.result res_file=~/my_file.

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 ... ...

[bash: grep] 바이너리 파일에서 문자열 검색하기

반달가면|2017년 4월 24일

grep 명령을 이용한 문자열 검색을 바이너리 파일에 적용할 경우, 별도의 옵션을 주지 않으면 해당 문자열 존재 여부만 알 수 있다. # my_data.bin 파일에 문자열 ABC가 존재하는지 확인 grep "ABC" my_data.bin Binary file my_data.bin matches 일치하는 문자열이 있을 때 해당 문자열을 화면에 표시하고 싶다면 -a 옵션을 추가해 주면 된다. # my_data.bin 파일에서 문자열 ABC를 검색, 있을 경우 화면에 출력 grep -a "ABCD" my_data.bin ABCDEFG 텍스트 파일에 대해 문자열 검색을 할 때 -a 옵션을 붙여도 별 문제 없이 검색이 잘 되므로, 텍스트 파일인지 바이너리 파일인지 잘 모르겠는 상황에서는