R's Hacking Daily Log

file signature 본문

Daily-Note

file signature

hanhxx 2023. 3. 1. 15:42

오늘 note에서는 thm challenge 문제를 풀다가 알게 된 file signature에 대해 간단히 정리해볼까 한다. 

 

 

1. file signature 의미 

file signature의 정의를 찾아보면 다음과 같이 나온다.

"A file signature is a unique sequence of identifying bytes written to a file's header."

 

 

말 그대로 파일 제일 첫 부분에 나오는 고유 시퀀스를 말하는데, 시퀀스란 간단히 문자열이라고 생각하면 편하다.

결론적으로 file signature의 의미는 파일 첫 부분에 열거된 고유한 byte sequence라는 것.

 

 

2. file signature 역할 

그렇다면 file signature은 어떤 용도로 사용되는 걸까??

정의에서 엿볼 수 있겠지만, "unique"한 값이기 때문에 file signature을 확인하면

"이 파일이 어떤 파일 종류"인지를 알 수 있다.

 

"파일 종류를 안다!"라는 건 computer이 파일 내용을 읽거나 파일을 열 때 어떤 application을 사용해야 할지 결정하기 위한 정보로 사용될 수 있다.

 

여기서 말하는 파일 종류는 파일 확장자를 의미한다.

예를 들면 png, jpg, pdf, exe, sys 등 파일 뒤에 " . " 하고 붙는 단어를 파일 확장자라고 부른다.

 

 

3. file signature 확인해 보기

file signature은 앞에서 말했듯이 파일 종류마다 다 다르다. 검색 창에 file signature을 치고 이런저런 글을 찾아보면 상당히 많은 다양한 signature을 확인해 볼 수 있다.

 

 

kali linux 기준으로 다른 방법을 보자면, hexadecimal viewer or editor를 사용해서 file을 열어보면 16진수로 쓰인 내용을 볼 수 있기 때문에 hexadecimal 부분의 맨 첫 부분을 확인해 보면 file signature를 볼 수 있다. 

 

(hexeditor + file_name => 해당 파일을 hexadecimal 내용으로 출력시켜 읽거나 수정할 수 있다.)

 

 

4. hexadecimal 이해하기 

hexadecimal은 16진수를 의미하는 데 여기서 말하는 16은 16가지의 서로 다른 문자라고 생각하면 된다. 따라서, 총 16가지의 문자로 수를 표현하는 방식을 16진수라고 볼 수 있다.

 

{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }로 0~15까지의 수를 표현할 수 있고 A ~ F까지는 10 ~ 15까지의 NUMBER를 나타낸다고 이해하면 된다.

 

16진수는 2진수로 표현할 때는 4비트를 사용하기 때문에 총 8비트에는 2개의 16진수가 들어갈 수 있으므로 결론적으로 1 byte에는 2개의 16진수가 있는 셈이다. 

 

example] png filefile signature : 89 50 4E 47 0D 0A 1A 0A 총 8개의 바이트(byte)로, 하나의 바이트 당 두 문자가 작성된 것.

 

binary로 몇 개만 나타내보면

89 :: 10001001 :: 1000(8) + 1001(9)

50 :: 01010000 :: 0101(5) + 0000(0)

4E :: 01001110 :: 0100(4) + 1110(E) 인 8비트로 표현된다. 

 

'Daily-Note' 카테고리의 다른 글

CLI & GUI  (0) 2023.03.08
prefix & postfix  (0) 2023.03.07
/tmp  (0) 2023.02.27
/etc/shadow & /etc/passwd  (0) 2023.02.24
/dev/null  (0) 2023.02.22
Comments