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]
<< 홈