본문 바로가기

컴퓨터/프로그래밍

[Python] 파일 시그니처 확인 도구

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 폴더에 복사된다.