카빙으로 재미보기 : sqlite3 백배강화

SQLite는 소형 모바일(포터블) db다. 엔터프라이즈급의 성능은 안나와도 간편히 활용하기 적절하게 되어있다.
때문에 많은 프로그램에서 이를 이용하고 있다. 인터넷 브라우저들(파이어폭스, 크롬 등)이 대표적이긴한데,
모바일 앱들은 대부분이 이를 활용하고 있다. 물론 SQLite급으로 다른 애들도 많이 있지만, 라이센스 문제 때문일지
아무튼 많이들 쓰고 있다. iOS, 안드로이드 가리지 않는다.
때문에 소위 '증거'가 그 안에서 튀어 나올 가능성이 굉장히 높아진다.

실제로 SQLite 카빙으로 재미를 좀 봐서 신나는 마음으로 공유하지만, 귀찮은 일은 최대한 자제하며
그 내용을 이전에 올렸던 URL 카빙한 포스트 처럼 가볍게 올리려고 대기중이였던 어느날...

어쩐일인지 실무에서 급히 만들었던 코드들이 싹다 지워졌고-_-;;; 찾을수가 없어서 어쩔수 없이 대충 다시
만들고 있던 무렵, 최근 오픈한 국내 포렌식 인력을 위한 전문 포럼 FORENSICINSIGHT에 고수 proneer님이
올리신 글을 보게 되었는데, 이거 나는 독자들을 전혀 고려하지 않는 막되먹은 블로거였구나 하는 반성에 휩싸였다.

결국 임시 일회용 코드를 재사용 가능한 형태로 좀 바꾸고 뻔한 오류도 좀 수정도 하고... 유니코드 문제 같은
일반적인 문제들도 좀 대충 손보고 해서 만들었다. 난 프로니어님 처럼 w32는 안되겠고 역시 파이썬으로...

□ 사전 자료 조사
역시 마찬가지로 원래 아는게 없으니깐 자료 조사가 필요했다. 당장 분석 해야 할때 이 짓을 하니 답답하긴 하더라.
SQLite 파일 구조 정보 : The SQLite Database File Format
소시지 공장 아저씨 SQLite 카빙 포스팅* : Carving SQLite databases from unallocated clusters
고대 임성수님의 발표자료 : SQLite 데이터베이스 파일 카빙 방안 연구
진짜 검색 아무리 해봐야 위에 정보가 딱이다. 이쪽 관심 있으신 분들은 소시지 아저씨랑 임성수님 자료만
잘 보시면 될 듯 싶다. 이런게 먼저 나와서 다행히 좀 시간 절약을 했다.
고대에서 만든 도구가 있긴할꺼 같은데... (자주)구걸하기도 좀 그렇고 해서...

□ Carving
비할당 영역 뽑는거나 카빙 대상 선정은 예전 포스팅을 참고하시면 될 것 같고... 아무튼 짠 코드..짜잔
오해를 하지 말아야 할 부분이... 삭제된 레코드를 카빙하는게 아니고 그냥 삭제 파일을 카빙하는 것이란 것!

sqlite3f_carver.py

원래 소스 파일이랑 결과 폴더는 하드코딩 하는데 어쩔수 없이? 입력으로 받았어요.
테스트 데이터로 몇가지 실무 데이터를 써봤는데 그럭저럭 잘됩니다. 여기선 어디선가? 문제용으로 제출된
아이폰 이미지입니다.

카빙하면서 carved+offset으로 파일명에 저장해요.
카빙이 끝나면 몇개 했는지 알려주죠. 제법 많이 됩니다.

근데 오탐이 많아요. 눈으로 봐도 오탐같은애가 많죠?-_-
하지만 이중에 중요한 증거들이 많이 나온답니다.

□ Report
위에서 본대로 적게는 200개 때론 1,000여개를 웃도는 파일을 카빙했는데, 이걸 일일히 열어보다가
눈도 무진장 아프고, 빡쳐서 하나 더 만들었다.

sqlite3f_report.py

각 파일별로 돌아가면서 테이블 목록을 얻고 테이블마다 샘플 레코드를 뽑아 출력합니다.
sqlite3 연결시나 쿼리 실행 중에 오류나는건 따로 표기하고요. 여기서 오탐 된건 버릴수 있지요.
역시 끝나면 통계를 알려줘요.

결과 파일을 보면 아래 처럼 뽑아주는데, 한글을 위해 유니코드는 UTF-8로 변환해서 출력합니다.
사실 그런 부분까진 원래 코드에 없었는데 이번에 삽질하면서 만듬 ㅠㅠ

□ 후기
이걸 어따 쓰나 하고 보고 계신분도 나중에 SQLite 카빙할 필요 있을때 번뜩 생각나서 다운 받는 날이 오실것임
특히 카빙과 상관없이 sqlite3f_report는 무진장 유용=_=
이런게 아직도 없었다는게 한탄스러울뿐... 앞으로도 필요한건 그때 그때 만들고 모아야겠다.

도덕적으로 완벽한 코드라서 허점을 남기면 안되지만 기반 지식 부족과 코딩 실력 부족으로 오류가 반드시
있을텐대 혹시 돌리시다가 문제 있는건 알려주세요.

2012 잡담 용기백배

벌써 2012년 1월말, 오늘은 까치까치의 설날이고요.
(올해가 종말이란 소리도 있던대... 걔네는 왜 달력을 거기까지만 그려서...)
아무튼 작년 연말이 너무 정신 없이 바빠서 제대로된 연말연시을 보내지 못했다.
포스팅도 주제만 모아두고 제대로 쓰지도 못하고 ㅠㅠ
심지어 블로그 1년 결산도 못했다. ㅠㅠ 매년 해오던건대 이제 하려고 하니 못찾겠더라..
바빠서 블로깅을 못했다는 핑계가 있긴하지만, 트위터를 통해 어느정도 뉴스를 공유하다보니 사실
블로그에 글 올릴 이유가 좀 더 적어진 것도 있다.

작년말 경에 눈 건강과 가치 있는 시간을 위해 킨들 터치를 샀다. 아이패드같은 타블렛이랑 고민 좀 했는데
눈을 위해서는 전자 잉크 제품이 더 필요했다. 타블렛은 나중에 더 내맘에 드는 제품이 나오면 사고..
우리나라 제품도 고려 했지만, 역시 아마존의 클라우드 서비스 제공 경험이 더 뛰어날 것 같아서..
역시 써보니 좋더라. 종이책의 장점을 그대로 흡수하면서 약간 전자적인 느낌을 제공...
보통 집에 오면 컴퓨터 키고 뉴스 보다 시간 낭비하고 자는데, 이제는 일단 집에와서 컴퓨터를 안킬때가 많다
아래처럼 '콘푸로스트죠리블루베리바나나' 시리얼을 만들어서 책 좀 보다 잔다.
근데 생각만큼 다독은 어렵더라 사실 이거 사면 완전 대박 다독 해서 그동안 못보고 미뤘던 자료들 보는걸
기대했었는데, 역시 그건 아니더라. 종이책의 느낌을 너무 잘 살려서 책을 보면 졸음이 오는 그 느낌까지
그대로 전달해주더라. 그래서 맨날 좀만 보다 잠ㅋㅋㅋ

작년 마감과 올해 시작을 제대로 못해서 이제야  작년 계획을 좀 뒤져보게 되는데...
딱히 한게 없이 흘러갔다. 진짜 너무 아까운 한해였고 잃은게 많은 한해였던듯 싶다.
그래도 일은 좀 많이 했던거 같다. 가치가 있었는지는 모르지만 scv처럼 열심히 일했다.
하지만 '나를 위해' 한일이 없다고 느껴서인지 올해 초부터 뭔가 프로젝트에 꽂혀서 벗어나기가 어렵다.
머릿속에서 계속 멤도는데 구현의 고민만 하고 있다. 엔진 구현은 쉬울꺼 같은데 UI가 영-_-자신없음
이걸 어느정도 완성해야 다른 활동이 가능할듯-_-

한해가 지나가고 새로 왔는데, 너무 느낌이 없어서 정리도 할겸 잡담 포스팅...

카빙으로 재미보기 : 인터넷 히스토리 백배강화

다들 하나씩 가지고 계신? EnCase에 인터넷 히스토리 분석 기능은 꽤나 막강하다.
comprehensive 옵션을 이용하면 인터넷 히스토리 파일 뿐만 아니라 삭제된 영역에서까지 긁어서 광범위하게 보여준다.

다만 안타까운것은 너무 많이? 찾아줘서 EnCase의 case파일이 맛이 간다는데 있다.
돌려놓고 볼려고 하면 (프로그램이)죽고, 볼려고 하면 (하고 싶은 마음이)죽고...
보통 이런 문제 때문에 다른거 분석하는 case 파일 하나, 히스토리용 case 파일 하나를 따로 저장한다.

최근에 했던 업무는 분석 대상(하드디스크)이 너무 많았고, 접속 여부 확인할 사이트가 특정 되어 있어서
시간을 아끼기 위해 조금 다른 방식으로 분석해봤다.

뭐랄까 '나는 쉬어도 내 컴퓨터는 쉬게 하지 않겠다는 목표' 아래... 비록 나는 퇴근하지만 컴퓨터는 일해야지...
이걸로 날 비인간적이라고 비난해도 어쩔수 없지...

뻘짓 경험하기

1 2 3 4 5 6 7 8 9 10 다음


[위자드팩토리] 트위터 위젯

간단 메모














구글리더공유

내 전자서재


encykei[at]gmail[dot]com