강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

실행파일 또는 바이너리파일에서 문자열 검색하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

실행파일 또는 바이너리파일에서 문자열 검색하기

 

 

 

 

리눅스 시스템관리작업에서 우리가 접하는 파일들은 여러가지 종류가 있지만 대부분 텍스트파일이거나 바이너리파일이다.

 

 

 

 

 

 텍스트파일일 경우는 vi 또는 cat, more등과 같은 명령어로 그 내용을 확인할 수 있지만 바이너리의 경우에는 그 내용을 어떻게 확인할까?  아니 확인하는 것은 가능할까? 답은 간단하다.

 

 

 

 바이너리 파일은 그 내용을 확인하는 것은 불가능하다.

 

 

 

 하지만, 바이너리파일에서도 영문자로 된 파일이 있을 것이므로 부분적이지만 문자 또는 숫자로 저장된 것은 확인이 가능하다.

 

 

 

 , ASCII문자들은 확인이 가능하다는 것이다.

 

 

 

 

 

 

 

정리하면 strings라는 명령어는 지정한 파일내에 존재하는 문자들 가운데 읽을 수 있는 문자들을 출력해주는 명령어이다.

 

 

 

 

 

 , 지정한 파일에 존재하는 모든 숫자 또는 문자들 가운데 ASCII문자들을 표시해준다.

 

 

 

 특히 이 명령어는 BINARY형태로 되어있는 파일의 내용 중 특정 내용의 문자들을 확인하고자 할 때에 주로 사용한다.

 

 

 

 

 

 

 

 

, 그럼 strings가 리눅스에서 가장 흔하게 사용되는 예를 보자. /etc/mail/access.db파일은 바이너리파일이기 때문에 vi cat명령어로 그 내용을 확인할 수 없다.

 

 

 

 이 경우 strings라는 명령어를 사용하면 아래와 같이 이 파일의 내용 중 ASCII문자들을 확인할 수 있다.

 

 

 

 

 

 

 

[root@sulinux ~]#file /etc/mail/access.db

/etc/mail/access.db: Berkeley DB (Hash, version 8, native byte-order)

[root@sulinux ~]#

[root@sulinux ~]#strings /etc/mail/access.db

RELAY

connect:localhost.localdomain

RELAY

connect:127.0.0.1

RELAY

connect:localhost

[root@sulinux ~]#

 

 

 

 

참고로 위의 예에서 file명령어는 지정한 파일의 종류를 확인하는 것이다.

 

 

 

 

 

 , access.db파일은 Hash함수에 의해 Berkeley DB타입으로 저장된 Binary파일임을 알 수 있다.

 

 

 

 

 

 

 

그리고 다음은 /etc/mail/virtusertable.db라는 바이너리 파일의 내용가운데 “.co.kr” 그리고 “.net”이라는 문자가 들어있는 행들만을 확인한 예이다.

 

 

 

 

 

 

 

[root@sulinux mail]#file /etc/mail/virtusertable.db

/etc/mail/virtusertable.db: Berkeley DB (Hash, version 8, native byte-order)

[root@sulinux mail]#

[root@sulinux mail]#strings /etc/mail/virtusertable.db | grep .co.kr

admin@picasso.co.kr

webmaster@linux.co.kr

[root@sulinux mail]#

[root@sulinux mail]#strings /etc/mail/virtusertable.db | grep .net

master@sulinux.net

[root@sulinux mail]#

 

 

 

virtusertable.db파일은 바이너리 파일이기 때문에 vi cat등과 같은 명령어로는 확인할 수 없다.

 

 

 

 따라서 이 파일에 실제로 저장된 내용을 일부라도 확인할 때 사용하는 방법이다.

 

 

 

 

 

 

 

그리고 /var/log/wtmp파일은 다음 예와 같이 바이너리 파일이기 때문에 그 내용을 vi more등으로 확인 불가능하다.

 

 

 

 따라서 strings를 이용하여 /var/log/wtmp 바이너리 파일에 대하여 다음과 같은 방법으로 특정 IP주소만을 확인해 볼 수도 있다.

 

 

 

 

 

 

 

[root@sulinux mail]#file /var/log/wtmp

/var/log/wtmp: data

[root@sulinux mail]#

[root@sulinux mail]#strings /var/log/wtmp | grep 192.168.0.251

192.168.0.251

192.168.0.251

[root@sulinux mail]#

 

 

 

이상과 같이 strings를 활용하는 방법에 대해서 알아보았다.

 

 

 

 

 

 바이너리 파일에서도 뭔가 읽어낼 필요가 있다면 확인해 보시라.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,074 명
  • 현재 강좌수 :  35,995 개
  • 현재 접속자 :  542 명