0. 사용법
FileSigChecker.py [시그니처 확인할 파일들이 있는 폴더]
sigToCheck 변수와 sigSize 변수를 각각 원하는 파일 시그니처와 그 크기(바이트)로 설정
1. 소스코드
import sys, os, shutil
if len(sys.argv) !=2:
print("usage : FileSigChecker.py [directory]")
exit()
sigToCheck = 'MZ'
#sigToCheck = '\x4d\x5a'
sigSize = 2
inputDir = sys.argv[1]
sigMatchedDir = inputDir+"_sigMatched"
sigNotMatchedDir = inputDir+"_sigNotMatched"
files = os.listdir(inputDir)
for idx,file in enumerate(files):
filePath = os.path.join(inputDir,file)
f = open(filePath, mode='rb')
sig = f.read(sigSize)
if(sig==sigToCheck):
if(os.path.isdir(sigMatchedDir)==False):
os.mkdir(sigMatchedDir)
shutil.copy(filePath, sigMatchedDir)
else:
if(os.path.isdir(sigNotMatchedDir)==False):
os.mkdir(sigNotMatchedDir)
shutil.copy(filePath, sigNotMatchedDir)
print("[ {} / {} ] {}".format(idx+1,len(files), file))
f.close()
2. 테스트 파일
3. 실행
4. 결과
시그니처가 'MZ'인 실행파일들은 C:\Test_sigMatched 폴더에,
그외의 파일들은 C:\Test_SigNotMatched 폴더에 복사된다.
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
[파일 파싱] 파일에서 읽은 바이트에 해당하는 유니코드 출력하기 (0) | 2014.04.13 |
---|---|
Perl 기본적인 내장변수, 함수 (0) | 2014.04.13 |