Microsoft 공식 파일 해시 체크 도구 – Fciv

이 툴의 다운로드 경로는 다음과 같다.

http://www.microsoft.com/download/en/details.aspx?id=11533

C:\Users\juhan>fciv.exe /?

//

// File Checksum Integrity Verifier version 2.05.

//

Entry to Add: Path is too long or missing. Exiting…

Usage: fciv.exe [Commands] <Options>

Commands: ( Default -add )

-add <file | dir> : Compute hash and send to output (default screen).

dir options:

-r : recursive.

-type : ex: -type *.exe.

-exc file: list of directories that should not be computed.

-wp : Without full path name. ( Default store full path)

-bp : specify base path to remove from full path name

-list : List entries in the database.

-v : Verify hashes.

: Option: -bp basepath.

-? -h -help : Extended Help.

Options:

-md5 | -sha1 | -both : Specify hashtype, default md5.

-xml db : Specify database format and name.

To display the MD5 hash of a file, type fciv.exe filename

[내용] 파일 무결성 검사에 유용한 Fciv

그럼 각 옵션에 대해 알아보도록 하자.(유용한 명령은 굵게 표시하였다.)

-add    : 옵션을 사용하지 않면 기본적으로 사용되는 옵션으로 파일 혹은 해당 디렉토리를 MD5로 표시한다.

-r: 재귀 처리를 진행한다.(하위 디렉토리 처리)

   -type: 특정 확장자 타입을 지정할 수 있다. *.dll 등 공백을 통해 여러 확장자를 등록할 수 있다.

   -exc: 해당 파일에 지정한 디렉토리는 해쉬 계산을 하지 않는다.

-wp: 저장시 파일의 전체 경로를 입력하지 않음

-bp: 디렉토리 이름을 기본적으로 따로 표시하는데 해당 표시를 제거함

   -v: 기존 결과 파일을 토대로 지정한 디렉토리를 비교 한다.

 

결과값 출력과 관련되어 사용할 수 있는 옵션은 다음과 같다.

-md5: MD5 해쉬 알고리즘을 이용하여 결과를 출력한다.

-sha1: SHA-1 해쉬 알고리즘을 이용하여, 결과를 출력한다.

-xml: 결과를 XML 형식으로 저장한다.

이 Fciv를 이용해서, 파일 해쉬 알고리즘을 만들어, 이 데이터를 비교해 보도록 하자.

그럼 먼저 비교를 위한 해쉬데이터를 생성하여야 한다.

다음 명령과 같이 생성해 보자.

C:\>fciv c:\windows\ -type *.exe -xml windows.xml

//

// File Checksum Integrity Verifier version 2.05.

//

Error loading XML document.

Create New XML database

[내용] Exe형식의 파일만 XML로 생성

생성한 해쉬 데이터를 이용해 차후 해당 디렉토리의 Exe 파일이 변경되었는지 확인할 수 있다.

C:\>fciv –v c:\windows –xml windows.xml

//

// File Checksum Integrity Verifier version 2.05.

//

Could not set the event message file.

Starting checksums verification : 04/20/2012 at 11h52’20

//확인 결과 무결성이 유지되고 있음을 알 수 있다.

All files verified successfully

End Verification : 04/20/2012 at 11h52’20

//실행 파일을 백업한후 해당 파일의 헥사값을 Hxd를 이용해 변경후 다시 실행해보자. (비스타 이상이라면 쓰기보호로 인해 시스템 실행 파일은 변경이 않될수 있다. 1부에서 SFC를 설명하면서 진행했었다. 따라서 다른 Exe 파일을 Windows 디렉토리에 복사해서 진행하기 바란다. 필자는 조금전 작성한 Md5hash를 이용하였다.)

파일 마지막의 4바이트를 아래와 같이 “ABCD” 를 입력한 후 저장해 보자.

[그림] 임의로 파일을 수정한다

//그리고 다시한번 Fciv를 이용해 확인해 보자.

F:\>fciv -v c:\windows -xml windows.xml

//

// File Checksum Integrity Verifier version 2.05.

//

Could not set the event message file.

Starting checksums verification : 04/20/2012 at 13h19’04

//기존 해쉬 데이터와 다른 파일을 알려준다.

//이를 통해 해당 파일이 변경되었다는 것을 알 수 있고, 원본과 같지 않다는 것을 증명할 수 있다.

List of modified files:

———————–

c:\windows\MD5hash.exe

Hash is : 0e02a755d017647248729853c826d7f3

It should be : 33b7a08eb71dec3cccda602b1c45134c

End Verification : 04/20/2012 at 13h19’04

[내용] 생성된 해쉬 데이터를 통해 현재 파일들의 무결성을 검사한다

단 여기서 놓치지 말아야 할 부분은, 해쉬 데이터 생성한 이후 추가된 파일에 대해서는 확인이 되지 않는다. 해쉬 데이터에 대한 무결성 검사를 진행하는 것이라는 점을 명심하자.

따라서 중요한 파일들을 사전에 해쉬를 한 이후 사고 발생시 해당 파일이 변경되었는지 확인하는 용도로 사용하자.

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.