Showing posts with label DIY. Show all posts
Showing posts with label DIY. Show all posts

Saturday, June 27, 2015

a way to recover data

photorec

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

PhotoRecGNU General Public License로 배포되는 데이터 복구 소프트웨어이다. TestDisk를 깔면 함께 설치되며, TestDisk로도 살리지 못한 데이터를 복구할 수 있다. Debian GNU/Linux, Kubuntu 등의 Linux는 물론, OSX에서도 MacPorts를 통해 사용할 수 있다. Christophe GRENIERCGSecurity에서 더 많은 정보를 찾아볼 수 있다.

내 경우는 메인 OSX보다는 서브컴 Debian 8.1에서 주로 진행했고, 데이터를 날린 초기에는 8GB USB에 설치한 Kubuntu 12.04에서도 10% 정도를 복구했다. (자세한 초기 상황은 지난 Post를 참고하자.) 다 복구 할 수 있다는 기대는 하지도 않았고, 그럴 돈도 없고 특히 시간이 없다. 중요한 데이터는 거의 메인 OSX에 있고 백업도 잘 되어있다. 날린 것은 서브컴의 하드 30% 정도와 외장하드의 70% 가량이었다. 내장하드는 그냥 내가 실수로 지웠다. (직접 다시 적으니 정말 한 숨만 나온다.)

다른 더 좋고 비싼 전문 소프트웨어를 써야 할 정도의 데이터는 아니었기에 진행했다는 점을 반드시 명심해 두자. 여기에 기술한 데로 한다고 해서, 어떠한 것도 보장할 수 없다는 점을 다시 한번 꼭 밝히고 싶다.

PhotoRec

주의 사항

  1. 데이터 복구는 우선 TestDisk를 써보자. 그래도 안되면 PhotoRec를 쓰자.
  2. 복구를 하더라도 파일 이름까지 그대로 되살리지는 못 한다. 즉, f0123456789.dat 같이 무작위로 이름이 부여된다.
  3. 위의 이유로 인해 복구를 하더라도, 정말 쓸 수 있게 만드는데 엄청난 시간이 요구된다.

상상이 되는가? 동영상이나 사진은 직접 보고 그게 뭔지 확인해야 하고, .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 만으로도 확인은 가능하다. 하지만, 결국에는 photorecsudo 에서 사용할 것이므로, 이 Post에서는 앞으로 sudo 와 함께 표현할 것이다.

이 과정이 중요한 이유는 PhotoRec는 fidentify 명령어가 인식할 수 있는 파일만 복구할 수 있기 때문이다.

나머지 과정은 홈페이지에서 설명하는 데로 따라하면 된다. photorec 를 실행해서, 복구할 데이터가 있는 하드를 선택한 후, 복구할 파일 종류를 선택하고, 하드의 File Allocation Type (ext, fat, ntfs, etc)를 선택해서 진행하면 된다.

아래 GIF는 PhotoRec를 통해서 .isoOwn Custom Signitures 를 선택해서 복구하는 과정을 간단히 보여주고 있다.

18593934593_38fdf011f0_o.gif

Figure 1: Workflow of PhotoRec in Debian 7.8

Custom extensions: sami

fidentify 명령어가 모든 파일을 찾을 수 있는 것은 아니다. 아무 결과도 안 보이는 unknown으로 인식해서 복구 못 할 수 있다. 그렇지 않더라도 txt 로 인식하는 여러 파일 중 .srt 만 꼭 집어서 복구하고 싶은 경우도 있다. 지금부터, 인식 못하거나 java 로 인식하는 .smi 파일을 PhotoRec로 복구하고 싶은 경우에 fidentify 명령어가 인식하게 만드는 과정을 기술하려 한다.

  1. 테스트 삼아, fidentify 명령어로 example.smi 을 확인해 보면
    $ sudo fidentify example.smi
    

    아래와 같은 결과를 Bash에서 보거나

    example.smi: java
    

    아니면 아무 결과도 : 오른 편에 안보이거나 할 것이다. 이를 위의 표에서 unknown으로 표현하였다.

  2. 이를 인식하게 하려면, 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 파일이어야 한다.

  3. 이제 .photorec.sig 파일이 필요한데, 이미 있을 수도 있고 없을 수도 있다. 있으면 $ sudo find / -name *.photorec* 명령어로 찾을 수 있다.
    /root/.photorec.cfg
    /home/UserName/.photorec.sig
    
  4. 중요한 것은 /root/ 디렉터리 아래에 이 파일이 있어야 한다는 점인데, 없으면 하나 만들자.
    $ sudo touch /root/.photorec.sig
    
  5. 이제 mousepad나 emacs같은 적당한 에디터로 이 파일을 열어
    $ sudo mousepad /root/.photorec.sig
    

    아래와 같이 적거나

    smi 0 "<SAMI>"
    

    hexadecimal (16진법) 정보 그대로 적자

    smi 0 0x3c53414d493e0d0a3c484541443e0d0a
    

    위에서, smifidentify 명령어가 토해낼 결과이고 0 0x 이후는 hexdump 명령어로 알아낸 hexadecimal (16진법) 정보 중 첫 줄을 띄어쓰기 없이 적은 것이다.

  6. 이제 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

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Created: 2015-06-27 Sat 23:57

Emacs 24.3.1 (Org mode 8.2.10)

Saturday, June 6, 2015

reinstall Debian

Debian 날리다

Debian 날리다


이 문서는 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 Wheezy (7.8)
  • Server: Debian GNU/Linux Wheezy || Squeeze
  • Mobile: iOS 7.1.2

Hardware Systems

  • OSX installed : MacBook Pro(13-inch, Mid 2009) 2.53 GHz Intel Core 2 Duo
  • Debian installed : Zotac ZBOX ID12 Intel Atom D525

잘 쓰던 Debian을 이것저것 해보다가 완전히 날렸다.

처음에 emacs 24.3을 설치하다가 System directory (/)에 용량이 다 차면서, 부팅이 prompt로만 가능하게 되어버렸다. /usr directory를 /home/ 아래로 옮기고 symbolic link를 걸어서 어찌어찌 해결했다. (자세한 사항은 여기 참조)

부팅 시 VirtualBox 관련 error가 무수히 뜨긴 했지만 사용에는 문제가 없어서 그냥 쓰다가, 역시 Debian에 설치한 VirtualBox가 안되더라. 새 버전을 설치해보고 구글링도 해보았으나 실패, 아예 지우고 다시 설치하는 중, 별생각없이 /lib 아래에 뭔가를 지워버렸다. 부팅이 안된다!

애초에 Debian이 깔린 internal HD가 1 TB. 이를 살리려 이 기회에 2 TB external HD를 새로 구입하고 eSata2usb 케이블도 함께 구매해서 MacBook Pro에서 복구하기로 결정. Debian이 깔린 internal HD는 ext2에 LVM(Logical Volume Manager)로 포맷 되어있어서, MacBook Pro에 깐 VirtualBox에서 복구 시도. 4 GB 이상의 파일도 있어서, External HD는 exFAT으로 포맷하고, 이를 위한 package와 LVM 하드를 마운트시킬 package 등들을 VirtualBox의 Debian에서 설치한 후, 시도하였으나 매끄럽지 않았다. VirtualBox가 자꾸 얼었고, 그렇지 않더라도 전송 속도가 2.5 M/s 밖에 안 나올 정도로 너무 느렸다. 이 속도로 1 TB를 전송하려면, 50 시간 이상이 걸린다.

내 MacBook Pro에서 지원하는 usb port는 두 개이고 모두 usb 2.0이다. 여기에 하나는 external HD를 꽂고 다른 하나는 Debian이 깔린 internal HD를 eSata2usb cable로 연결해서 꽂고, VirtualBox에서 한다는 생각 자체가 어리석었다. 내 MacBook Pro이 usb 3.0을 지원한다면 얘기는 조금 달라질 수도 있었겠지만, 녀석은 나이가 많다. 다른 방법을 생각해야 했다.

17910546094_fcaeff2e78_o.png

가지고 있는 모든 저장장치를 동원하기로 했다. 2 GB SDcard에 리눅스 설치 디스크 만들어서, 8 GB usb에 리눅스를 설치했다. 애초에 Debian이 깔린 internal HD는 그대로 eSata로 연결해 놓은 후, 다른 리눅스를 설치한 usb로 부팅시켜서, usb에 꽂은 2 TB 외장하드에 복구 중이다. 내 second machine도 나이가 많아 usb 2.0 port만 여섯 개 있지만, HD 한 녀석은 eSata에 연결되어 있어서 전송 속도가 최소 20 M/s는 나온다. 이 기세라면 내일은 1 TB internal HD를 밀고 다시 Debian GNU/Linux를 설치할 수 있을 것 같다.

데이터 전송은 Thunar나 Dolphin같은 file browser에서 하지 않고, gcp 명령을 통해서 하고 있다. File browsers에서는 자꾸 귀찮은 Notifications가 뜨고, cp 명령어는 전송 과정을 percentage로 표현하지 않아서, Bash에서 gcp 를 쓰고 있다. usb에 설치한 Linux distro는 kubuntu 12.04인데, 따로 LVM mount를 위해 packages를 설치할 필요는 없었다. exFAT mount를 위해서 exfat-fuse 를 설치했고, 현재까지 원활하다.

18345473688_0ca1168a86_o.png

혹이라도 나 같은 상황에 처해서 리눅스 안의 데이터를 복구해야 할 상황이라면, 원활한 전송 속도 구현을 위해 다음과 같이 하는 것이 한 방법이다. 총 세 개의 저장 장치가 필요하다.

  1. 우선, 두 개의 저장 장치가 필요하다. 하나는 2 GB 정도도 상관 없지만, 다른 하나는 8 GB 정도는 되어야 한다.
  2. 용량이 적은 녀석에 ubuntu/kubuntu bootable usb 만든다. 저장 장치가 usb던 sd card던 뭐던 상관없다.
  3. 두 저장 장치 모두 꼽고, bias에서 bootable usb로 부팅한다.
  4. 8 GB 정도 되는 다른 저장 장치에 ubuntu/kubuntu를 설치한다.
  5. bias에서 새로 설치한 ubuntu/kubuntu로 부팅한다.
  6. 세 번째 저장 장치를 꽂아, 이곳에 데이터를 복구한다. 4 GB 이상의 파일이 있다면, exFAT, ext2, ntfs 등으로 포맷했어야 한다.
  7. 데이터 전송은 Bash (or Konsole)에서 cp (or gcp)를 이용한다.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Created: 2015-06-06 Sat 21:05

Emacs 24.3.1 (Org mode 8.2.10)

Thursday, May 14, 2015

Bluetooth Dongle

bluetooth dongle

bluetooth dongle


;; =================================================
;; εμαcs is ⎋[esc]⌘[meta]⌥[alt]⌃[ctrl]⇧[shift].
;; =================================================

This post is written with emacs org-mode.


System Environments

Operating Systems

  • Main- : OS X Mavericks (10.9.5)
  • Sub- : Debian GNU/Linux Wheezy (7.8)
  • Server: Debian GNU/Linux Wheezy || Squeeze
  • Mobile: iOS 7.1.2

Hardware Systems

Bluetooth dongle

I'm using Debian GNU/Linux with XFCE under the quite low performance machine(Zotac ZBOX ID12) that doesn't have a bluetooth module inside. My MacBook is also over five-year-old, which means doesn't support the so-called continuity. The easiest way to use it under an old MacBook is to use a bluetooth dongle supporting Broadcom BCM20702 chipset. My main goal is to enable a bluetooth functionality in my linux machine. There are plenty of cheep bluetooth dongles available to a linux. However I wanted to choose a bluetooth dongle having Broadcom BCM20702 chipset, even though I am not gonna upgrade my OSX to Yosemite soon because of unresolved well-known bugs. The reader should be reminded that I'm not gonna describe how to enable the continuity under an old MacBook.

There is no requirement of a pre-setting-up to use it in Debian GNU/Linux Wheezy. The main reference is the Debian wiki1

Way to enable it

  • 1. Install a pile of packages
    $sudo apt-get install pulseaudio pulseaudio-module-bluetooth bluez-audio pavucontrol bluez-firmware bluez-tools
    
  • 2. Run the following commands
    $sudo service bluetooth restart
    $sudo killall pulseaudio
    
  • 3. Install blueman
    $sudo apt-get install blueman
    
  • 4. Start the applet
    $sudo blueman-applet
    

How to pair

Once you run blueman-applet, you can see it the bluetooth icon in the panel. We can set up a new device and pair it via a) the secondary click this icon b) clicking the Devices….

17613393201_caa177644c_o.png

Bluetooth icon in the XFCE panel

Input devices and VLC

Every input device I have tried is working well, but audio devices are tricky. I don't know how to make the bluetooth dongle systemwide as an audio device. VLC seems to be the only option to use the bluetooth dongle.

17587253186_cabdaf7d95_o.png

VLC sending audio to an external device

Other applications such as SMPlayer, Amarok, etc. don't have an option to send audio to an outer device as long as I know. That is critical!!!

Troubleshooting

If you installed a few packages enabling bluetooth in your machine such as bluedevil, bluez, etc., it'd better disable all of them with the exception of the blueman. It is not necessary to uninstall them. Just disabling them is enough simply via the Task Manager in XFCE.

블루투스 동글

나에게는 6년생의 MacBook Pro와 4년생의 Mini-pc(Zotac ZBOX ID12)가 있다. Mini-pc에는 Debian GNU/Linux에 XFCE Desktop environment를 사용하고 있는데, 블루투스 하드웨어(혹은 어뎁터)가 없다. 내 MacBook Pro는 너무 늙어서 설사 Yosemite로 업그레이드한다고 하더라도, 애플이 자랑하는 continuity를 사용할 수는 없다. 오래된 MacBook에서 continuity를 사용할 수 있는 가장 간단한 방법은 Broadcom BCM20702 chipset 이 장착된 블루투스 동글을 쓰고 활성화하는 것이다. 가까운 시일에 Yosemite로 업그레이드할 일은 없겠지만, 시중에 싼 블루투스 동글이 많음에도 혹시나 하는 마음에 Broadcom BCM20702 chipset 이 장착된 블루투스 동글을 구입했다. 이 글은 블루투스 하드웨어(혹은 어뎁터)가 없는 리눅스가 설치된 컴에서 블루투스 동글을 사용해서 블루투스를 사용하는 방법을 기술하려한다. 혹이라도 오래된 MacBook에서 continuity를 활성화하는 방법은 여기를 참조하기 바란다.

  • 내가 사용한 블루투스 동글: Plugable USB 2.0 Bluetooth Adapter
    • 특징: Broadcom BCM20702 chipset, 리눅스 사용 가능
    • 목표: Debian GNU/Linux with XFCE가 설치된 컴에서 동글을 사용해서 블루투스 사용하기

Debian GNU/Linux Wheezy에서 특별히 미리 설치할 것은 없다. 주로 참고한 곳은 Debian wiki다.1

블루투스를 사용하게 위해서

동글을 USB에 꼽는다고 바로 사용할 수는 없다. 다음을 순서대로 실행하자.

  • 1. 필요한 packages 설치한 후
    $sudo apt-get install pulseaudio pulseaudio-module-bluetooth bluez-audio pavucontrol bluez-firmware bluez-tools
    
  • 2. 다음 명령을 실행하자
    $sudo service bluetooth restart
    $sudo killall pulseaudio
    
  • 3. blueman 을 설치한 후
    $sudo apt-get install blueman
    
  • 4. 이를 시작한다
    $sudo blueman-applet
    

블루투스 장비와 연결하기

blueman-applet 를 시작했다면, 블루투스 아이콘을 페널(최상단 우측)에서 볼 수 있다. 이 아이콘을 우클릭한 후 Devices… 를 클릭해서 장비와 연결할 수 있다.

17613393201_caa177644c_o.png

Bluetooth icon in the XFCE panel

주의사항

블루투스 키보드 등의 입력장비는 아무런 문제 없이 사용할 수 있었다. 문제는 블루투스 헤드폰이었다. 시스템 전반에서 오디오를 블루투스 헤드폰으로 뽑아내는 방법은 아직 찾지 못했다. 블루투스 헤드폰을 쓸 수 있는 유일한 해결책은 VLC다. 오직 VLC만이 오디오를 외부 장비로 송출하는 설정이 있었다.

17587253186_cabdaf7d95_o.png

VLC sending audio to an external device

SMPlayer, Amarok, 같은 applications에서는 이런 설정이 없어서 블루투스 헤드폰을 쓸 수 없었다.

문제해결

bluedevilbluez 같은 블루투스와 관련된 packages를 이미 설치했고 활성화되어 있다면 페널에서 아이콘이 보일 것이다. 꼭 필요한 것은 아니지만, blueman 이외의 다른 것들은 XFCE 환경에서 Task Manager 를 사용해서 비활성화하자.


Created: 2015-05-14 Thu 10:20

Emacs 23.4.1 (Org mode 8.0.2)