2013/05/27

binwalk 진짜 편한듯 ㅋ

요즘 파일하나에 몇십메가에서 몇백메가짜리들이 많아서

import table이나

strings 기준으로 ref를 타다보면

갑자기 ref가 더이상 없고 끊어지는 경우가 있다 ㅋ

특히 strings로 역추적해가면 ㅋ

그래서 open으로 추적해보니 대부분이 해당 영역을 새로 파일을 만들거나 해당 영역만 읽어서 전송하는 기능이 있었다 ㅋ

진정 안티 디버깅 ㅋㅋㅋㅋ

그래서 files로 1바이트 단위로 다 체크하도록 하려고 했으나 사이즈가 너무 큰 관계로 너무 빡셈 ㅠㅠ

그래서 binwalk로 해봤더니

오우~ 그래도 꽤 신뢰성 높은 데이터를 뽑아주다 보니 ㅋ

binwalk로 리스트업 해서 해당 영역들만 따로 뽑아 놓은다음 7zip으로 전체 풀기 했더니

완전 잘 풀린다 ㅋㅋ

짱짱 맨~ㅋ

아래 코드는 binwalk로 나온 결과대로 파일을 짤라주는 스크립트 ㅋ

#!/usr/bin/python
import os
import sys
import commands

if len(sys.argv)>1:
    if os.path.isfile(sys.argv[1])==True:
        lv_rtn, lv_out = commands.getstatusoutput('binwalk '+sys.argv[1])
        #print len(lv_out.splitlines())
        ix=0
        lv_buf = open(sys.argv[1],'rb').read()
        lv_offset = lv_out.splitlines()
        while ix < len(lv_offset):
            if lv_offset[ix].find('\t')>0:
                lv_divide = lv_offset[ix].split('\t')
                if lv_divide[0].startswith('DECIMAL')==False:
                    #print lv_divide[0]
                    if int(lv_divide[0])>0:
                        open(str(int(lv_divide[0])),'wb').write(lv_buf[int(lv_divide[0]):])
                # end if
            # end if
            ix=ix+1
        # end while
    # end if
# end if


0개의 덧글:

댓글 쓰기

에 가입 댓글 [Atom]

<< 홈