photorec
이 문서는 e[⎋esc]m[⌘meta]a[⌥alt]c[⌃ctrl]s[⇧shift]
org-mode로 작성된 글입니다.
System Environments
Operating Systems
- Main- : OS X Yosemite (10.10.3)
- Sub- : Debian GNU/Linux Jessie (8.1)
- Server: Debian GNU/Linux Wheezy || Squeeze
- Mobile: iOS 7.1.2
Table of Contents
PhotoRec는 GNU General Public License로 배포되는 데이터 복구 소프트웨어이다. TestDisk를 깔면 함께 설치되며, TestDisk로도 살리지 못한 데이터를 복구할 수 있다. Debian GNU/Linux, Kubuntu 등의 Linux는 물론, OSX에서도 MacPorts를 통해 사용할 수 있다. Christophe GRENIER의 CGSecurity에서 더 많은 정보를 찾아볼 수 있다.
내 경우는 메인 OSX보다는 서브컴 Debian 8.1에서 주로 진행했고, 데이터를 날린 초기에는 8GB USB에 설치한 Kubuntu 12.04에서도 10% 정도를 복구했다. (자세한 초기 상황은 지난 Post를 참고하자.) 다 복구 할 수 있다는 기대는 하지도 않았고, 그럴 돈도 없고 특히 시간이 없다. 중요한 데이터는 거의 메인 OSX에 있고 백업도 잘 되어있다. 날린 것은 서브컴의 하드 30% 정도와 외장하드의 70% 가량이었다. 내장하드는 그냥 내가 실수로 지웠다. (직접 다시 적으니 정말 한 숨만 나온다.)
다른 더 좋고 비싼 전문 소프트웨어를 써야 할 정도의 데이터는 아니었기에 진행했다는 점을 반드시 명심해 두자. 여기에 기술한 데로 한다고 해서, 어떠한 것도 보장할 수 없다는 점을 다시 한번 꼭 밝히고 싶다.
PhotoRec
주의 사항
- 데이터 복구는 우선 TestDisk를 써보자. 그래도 안되면 PhotoRec를 쓰자.
- 복구를 하더라도 파일 이름까지 그대로 되살리지는 못 한다. 즉,
f0123456789.dat
같이 무작위로 이름이 부여된다. - 위의 이유로 인해 복구를 하더라도, 정말 쓸 수 있게 만드는데 엄청난 시간이 요구된다.
상상이 되는가? 동영상이나 사진은 직접 보고 그게 뭔지 확인해야 하고, .iso
나 .dmg
등의 이미지 파일은 직접 마운트를 해봐야 한다!!!
동영상이야 그래도 몇 백 개까지(?)는 직접 확인한다고 쳐도, 사진은 단위가 다르니 엄두가 안 난다. 자막 파일이야 복구만 된다면, 어차피 text니깐 EasyFind 같은 OSX 용 소프트웨어를 쓰면 어찌어찌한다 치더라도, .7z
이나 .zip
같은 압축 파일들은 또 언제 다 압축을 푸나. 게다가 .smi
자막 파일은 제대로 잘 찾지도 못 한다.
여기까지 쓰니, 웃음밖에 안 나온다. 첫째도 백업, 둘째도 백업이다. 별로 안 중요해도 복구에 시간이 걸리는 것도 백업하자.
내가 복구한 것들
사진이나 압축 파일들은 깔끔히 포기하고, 동영상과 디스크 이미지 파일에 집중했다. 특히, 자막이 포함될 수 있는 동영상인 .m4v
, .mp4
, .mkv
를 집중적으로 우선 살렸다. 나머지는 위에서 언급한 데로 일일이 확인하는 데 시간이 걸리니, 복구는 해 놓고 짬짬이 할 요량이다. 아니면, 아싸리 다 버릴 수도 있다. 그래도 언제 또 필요할 때가 올지 모르니, 시도해본 것들을 여기에 정리한다.
주로 참고한 곳들은 http://www.cgsecurity.org/wiki/Add_your_own_extension_to_PhotoRec, http://techglimpse.com/photorec-recover-add-specific-file-type/ 이다.
Basic understanding how it works
PhotoRec는 TestDisk를 설치하면 함께 깔린다. Debian GNU/Linux나 Kubuntu 경우는 아래 명령어로 설치할 수 있다.
$ sudo apt-get install testdisk
설치하는 OS마다 PhotoRec 버전에 변화가 좀 있으므로 복구 대상 파일을 인식하는데 조금씩 차이가 있을 수 있다. 아래 표에 간단히 정리해 보았다.
복구 대상 파일 | 인식하는 이름 | |
---|---|---|
m4v/mp4 | : | mov or mp4 |
mkv | : | mkv |
avi | : | riff or avi |
dmg | : | bz2 or unknown |
iso | : | iso |
srt | : | txt or unknown |
smi | : | java or txt or unknown |
일단, TestDisk를 깔아서 PhotoRec를 쓸 수 있게 되면, fidentify
명령어를 쓸 수 있다. 이는 위의 표에서 정리한 것처럼 복구 대상 파일을 PhotoRec가 인식하는 이름을 알 수 있게 해준다. 예를 들어, example.iso
파일을 확인해 보려면, Bash에서 아래를 실행하면
$ sudo fidentify example.iso
다음과 같은 결과를 볼 수 있다.
example.iso: iso
위의 표에서 unknown으로 표현한 것들은 fidentify
명령어로 인식되지 않아서 결과가 아예 없는 경우를 뜻한다. 계속 읽어보면 의미를 알 수 있을 것이다.
FYI) 위에서 sudo
와 함께 사용하였는데, fidentify
명령어 자체에는 필요 없다. 즉, 그냥 fidentify example.iso
만으로도 확인은 가능하다. 하지만, 결국에는 photorec
를 sudo
에서 사용할 것이므로, 이 Post에서는 앞으로 sudo
와 함께 표현할 것이다.
이 과정이 중요한 이유는 PhotoRec는 fidentify
명령어가 인식할 수 있는 파일만 복구할 수 있기 때문이다.
나머지 과정은 홈페이지에서 설명하는 데로 따라하면 된다. photorec
를 실행해서, 복구할 데이터가 있는 하드를 선택한 후, 복구할 파일 종류를 선택하고, 하드의 File Allocation Type (ext, fat, ntfs, etc)를 선택해서 진행하면 된다.
아래 GIF는 PhotoRec를 통해서 .iso
와 Own Custom Signitures
를 선택해서 복구하는 과정을 간단히 보여주고 있다.
Figure 1: Workflow of PhotoRec in Debian 7.8
Custom extensions: sami
fidentify
명령어가 모든 파일을 찾을 수 있는 것은 아니다. 아무 결과도 안 보이는 unknown으로 인식해서 복구 못 할 수 있다. 그렇지 않더라도 txt
로 인식하는 여러 파일 중 .srt
만 꼭 집어서 복구하고 싶은 경우도 있다. 지금부터, 인식 못하거나 java
로 인식하는 .smi
파일을 PhotoRec로 복구하고 싶은 경우에 fidentify
명령어가 인식하게 만드는 과정을 기술하려 한다.
- 테스트 삼아,
fidentify
명령어로example.smi
을 확인해 보면$ sudo fidentify example.smi
아래와 같은 결과를 Bash에서 보거나
example.smi: java
아니면 아무 결과도
:
오른 편에 안보이거나 할 것이다. 이를 위의 표에서 unknown으로 표현하였다. - 이를 인식하게 하려면, sami 파일의 hexadecimal (16진법) 정보를 우선 알아야 한다. Bash에서 아래 명령어를 실행하면
$ hexdump -C example.smi | head
다음과 같은 결과를 볼 수 있다.
00000000 3c 53 41 4d 49 3e 0d 0a 3c 48 45 41 44 3e 0d 0a |<SAMI>..<HEAD>..| 00000010 3c .....
물론, 여기서 계속 예로 사용하는 파일인
example.smi
는 사용자가 임의로 만든 것이 아니라, 실제 자막 정보를 가지고 있는 진짜 sami 파일이어야 한다. - 이제
.photorec.sig
파일이 필요한데, 이미 있을 수도 있고 없을 수도 있다. 있으면$ sudo find / -name *.photorec*
명령어로 찾을 수 있다./root/.photorec.cfg /home/UserName/.photorec.sig
- 중요한 것은
/root/
디렉터리 아래에 이 파일이 있어야 한다는 점인데, 없으면 하나 만들자.$ sudo touch /root/.photorec.sig
- 이제 mousepad나 emacs같은 적당한 에디터로 이 파일을 열어
$ sudo mousepad /root/.photorec.sig
아래와 같이 적거나
smi 0 "<SAMI>"
hexadecimal (16진법) 정보 그대로 적자
smi 0 0x3c53414d493e0d0a3c484541443e0d0a
위에서,
smi
는fidentify
명령어가 토해낼 결과이고0 0x
이후는hexdump
명령어로 알아낸 hexadecimal (16진법) 정보 중 첫 줄을 띄어쓰기 없이 적은 것이다. - 이제
photorec
명령어가 sami 파일을 정확히 인식하는 것을 확인할 수 있을 것이다.$ sudo fidentify example.smi example.smi: smi
이제, 위의 GIF에서 보듯이 [File Opt]
안에서 가장 상위에 있는 Own Custom Signitures
를 스페이스바키로 선택하면, .photorec.sig
파일에 직접 써넣은 확장자의 파일을 복구할 수 있다.
Custom extensions: others
같은 방법으로 원하는 파일 확장자(extension)을 지정해서 PhotoRec로 복구할 수 있다. 이를테면, .dmg
나 .sh
경우의 hexadecimal (16진법) 정보는 아래와 같다.
.dmg
00000000 78 da 63 60 18 05 43 18 fc fb ff ff 1d 10 33 02 |x.c`..C.......3.| or 00000000 78 01 63 60 18 05 43 38 04 fe fd ff ff 0e 88 19 |x.c`..C8........| or 00000000 78 da 73 0d 62 62 60 60 a8 f0 62 18 05 23 12 00 |x.s.bb``..b..#..| or 00000000 78 01 73 0d e2 60 60 60 64 4b 67 18 05 23 32 04 |x.s..```dKg..#2.|
.sh
00000000 23 21 20 2f 62 69 6e 2f 73 68 0d 0a 23 0d 0a 23 |#! /bin/sh..#..#| or 00000000 23 21 2f 62 69 6e 2f 62 61 73 68 0a 0a 66 75 6e |#!/bin/bash..fun|
내 경우, 원하는 모든 인식하지 못하는 unknown 파일들을 root/.photorec.sig
에 몽땅 적어 넣었다.
srt 0 0x310a30303a30313a35362c303238202d smi 0 0x3c53414d493e0d0a3c484541443e0d0a dmg 0 0x78da636018054318fcfbffff1d103302 dmg 0 0x780163601805433804fefdffff0e8819 dmg 0 0x78da730d62626060a8f0621805231200 dmg 0 0x7801730de2606060644b671805233204
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
No comments:
Post a Comment