본문 바로가기

파이썬

파이썬으로 파일시스템 깊이 있게 분석하기 -2- - 파이썬으로 파일시스템 깊이 있게 분석하기 -1-(http://maj3sty.tistory.com/1115) 이전 글에서는 이미지(Raw 포맷)에 접근하여 볼륨 정보 등을 얻어내는 작업을 해보았다. 이번에는 실제 파이썬 스크립트가 실행되는 로컬 환경 볼륨에 접근하는 방법을 살펴보자. 이미지 파일은 파일이기 때문에 파일 오픈 핸들을 pytsk3 모듈에 입력해 주면 됐지만 로컬 환경은 장치 핸들을 pytsk3 모듈에 입력을 해주어야 한다. 장치와 파일의 차이는 크지만, 코드는 이전 코드와 많이 다르지 않다. 아래 코드는 글쓴이의 가상환경에서 작성한 파이썬 스크립트와 실행 결과이다. 이번에는 NTFS 파일시스템 2개 존재하는 것을 확인할 수 있다. 로컬 환경과 이미지 파일은 접근하는 대상만 다를 뿐 다루는 .. 더보기
파이썬으로 파일시스템 깊이 있게 분석하기 -1- 디지털 포렌식에서는 기본으로 다뤄야 할 부분이 파일시스템이다. 휘발성 데이터 뿐만 아니라 비휘발성 데이터까지 모두 파일시스템에 저장되기 때문에 실제 업무에서나 챌린지 문제 풀이에서나 파일시스템 분석은 중요하다고 볼 수 있다. 그래서, 시간이 되는대로 파이썬으로 파일시스템을 다뤄보는 글을 쓸 예정이다. 언어는 사람들이 쉽게 가장 많이 쓰는 파이썬(파이썬 언어 자체의 설명은 생략한다.)으로 하여 파일시스템 이미지 포맷인 E01과 Raw 포맷을 대상으로 여러가지 분석을 할 수 있는 코드를 작성해보고 해당 소스코드는 제공할 생각이다. 일단 먼저, 파이썬 모듈이 필요하다. 우리가 주로 사용할 모듈은 파일시스템을 분석해 주는 'pytsk' 모듈이다. 각 모듈에 대한 설명은 다음과 같다. - pytsk : pytsk.. 더보기
level 4 문제 URL : http://www.pythonchallenge.com/pc/def/linkedlist.php 위 주소로 접속하면 아래와 같은 문제가 나온다. 이미지 위에 마우스를 올리면 링크접속을 나타내는 마우스 아이콘으로 바뀐다. 링크에 접속하면 아래와 같이 나온다. 인자값으로 nothing=12345 이렇게 넘어가는데 44827값을 인자값으로 넘겨주면 또 다른 숫자가 출력이 된다. 계속 나오는 숫자를 넘겨주다보면 무언가 나오겠거니 하고 코딩을 하여 보내보았다. 해당 문제풀이코드 알고리즘은 간단하다. 새롭게 나오는 숫자를 얻어와서 다시 보내주면 되는 것이다. 여기서는 통신 프로그래밍을 해야 하므로 urllib(설명 주소 : http://docs.python.org/library/urllib.html).. 더보기
level 3 문제 URL : http://www.pythonchallenge.com/pc/def/equality.html 위 주소로 접속하면 아래와 같은 문제가 나온다. 대충 의역하면 3개의 보디가드가 둘러쌓고 있는 편지?! 뭐 이런식인데.. 소스를 보니 아까와 다르게 엄청난 알파벳들이 있다. 자세히 보면 문제의 의미를 알 수 있다. aGFTlBSFs 이런식으로 되어있는 부분이 있는데 이 구조를 정규식으로 표현하여 이 부분들만을 추출하면 문제는 풀린다. 표현할 구조가 소문자1 대문자3 소문자1 대문자3 소문자1 이런식인데 python 정규식을 보면 {숫자}라는 메타가 있다. [a-z]{2} 라는 정규식을 만들어 함수에 적용하면 a-z를 두번 찾는다. 이걸 이용하여 정규식을 만들면 1. [a-z] --> 소문자 1 2.. 더보기
level 1 문제 URL : http://www.pythonchallenge.com/pc/def/map.html 위 문제로 접속하면 아래와 같은 이미지가 출력된다. 이미지에 있는 노트를 보면 어떠한 문자가 어떠한 문자로 치환되는지 알 수 있다. 메모장으로 치환문자들을 써놓고 보면 일정한 규칙이 보이는데 해당 규칙에 따라 치환된 문자들을 만들어보면 아래와 같다. 해당 규칙을 토대로 코딩을 할 수 있긴 하겠지만 코드가 길어져 파이썬에는 문자 치환 함수가 없을까 하고 검색해봤지만 나오지 않아 고민하던 중 문제에 qrpgle.kyicrpylq() 이런 문구가 보여 규칙을 토대로 치환해 보기로 하였다. 치환한 결과는 아래와 같다. 파이썬 shell에서도 있는걸로 보아 이 문제에 핵심인거 같아 구글링 하여 찾아보니 이 함수가 .. 더보기