리눅스에서 파일의 Magic Number 확인하기

양말·2023년 3월 28일
0

시스템프로그래밍

목록 보기
5/7
post-thumbnail

PIL의 save는 PNG를 인식하지 못하는 건가!


결론부터는 아직 이 문제의 정확한 답을 찾지는 못했지만
약간의 진전된 사항을 적는다.

File

  • 바이너리 파일은 고유한 파일 포맷을 가짐
  • Magic Number
    • 바이너리 파일의 종류에 따라 몇 개의 정해진 숫자로 시작하는데 이를 magic number라고 한다.

      File FormatMagic Number
      Bitmap Format42 4d
      GIF format47 49 46 38
      PNG format89 50 4e 47
      gzip format1f 8b 08
      a.out format7f 45 4c 46

https://velog.io/@ywonchae1/Python-이미지-파일-크기-한꺼번에-줄이기-os와-PIL
에 이어지는 내용이다.

요약하자면 포토샵으로 수정한 jpg파일과 그냥 jpg 파일이 뭔가 다른데 뭔지 모르겠어서 찾아가는 중이다.

CMD

껐다가 켰더니 막혔다! 다시 뚫어준다.

Bash
sudo service ssh restart
sudo netstat -ntl <!--잘 됐는지 확인-->

CMD
scp [파일명] [리눅스사용자이름]@[IP주소]:[리눅스 디렉토리 전송위치]

항상 궁금한 것: 리눅스에서 inet 뒤에 나오는 게 그냥 IP주소? 외부 IP 주소?

처음엔 포토샵으로 수정한 run_5.jpg를 보냈다.
근데 포토샵으로 수정하지 않은 run_1.jpg와 포토샵으로 수정한 run_5.jpg의 헤더가 동일해서 뭐지.. 했는데
생각해 보니 내가 run_1.jpg도 포토샵으로 수정을 했었다..
그래서 포토샵으로 (확실히) 수정되지 않은 run_4.jpg를 다시 보냈다.

Bash

넘어온 거 확인

od -x [파일명] | head -5
  1. od는 지정한 파일의 내용을 바이트 단위로 출력한다.
    -x는 16진수로 표현하겠다는 뜻

  2. |는 pipe이다.
    뒤에 나오는 연산을 이어서 해주는 느낌인데,
    od의 결과를 head에 넘겨줘서 head는 그걸 사용해서 일을 한다.

  3. head는 말 그대로 데이터의 머리 부분만 보여준다.
    기본은 10줄인데, 나는 많이 필요 없으니 5줄만 보여달라는 뜻의 -5를 붙였다.

run_1.jpg의 머리 부분 5줄을 프롬프트로 출력한다.

여기서 d8ff elff가 위에서 얘기한 Magic Number다.

엥 왜 똑같지? 했던 순간

다시 알아차리고 비교를 해본다.

(포토샵수정)run_5.jpg의 Magic Number는 d8ff elff
run_4.jpg는 5089 474e

같은 JPG인 줄 알았는데!


아니었다~

magic number를 찾아보았다.

d8ff elff
5089 474e
에 해당하는 것을 찾을 때 주의하자.
컴퓨터 구조에 따라 정보가 거꾸로 저장되기도 한다.
그래서 완전 똑같은 거 말고 비슷한 걸로 찾는다..


(포토샵수정)run_5.jpg (d8ff elff) 는 JPG가 맞는 거 같다.
근데 el이 대체 뭔지 다시 찾아봐야겠다..

run_4.jpg (5089 474e) 는 PNG인 모양이다..!

근데 왜 JPG 파일이라고 나오는지..?

마무리


한 주 한 주 수업을 들으면서 조금씩 찾아 나가고 있다!
시스템프로그래밍 수업이 제일 잘 맞는 거 같다.

사실 굳이 리눅스로 이미지를 보내지 않고 cmd에서 cmd 명령어를 쓰면 되긴 하지만 나는 리눅스 명령어를 배우고 있으니깐~

동북고등학교 수업 준비하면서 cmd 명령어를 조금 공부하고 있다.
리눅스가 더 좋은 거 같다.

profile
코끼리

0개의 댓글