Hatena::ブログ(Diary)

天使と奇跡を見守る日記

2016-11-03

Photorec & TestDiskを自分でビルドする(1)

| 13:27

http://www.cgsecurity.org/wiki/Developersに記載されている手順で、Bash On Ubuntu On Windows10の環境でTestDiskをビルドする。

モチベーションは、tsファイル救出のカスタマイズ。

現状、tsファイルに関しては192byteパケットのtsと188byteパケットのtsを区別していないところを、時間短縮のため、特殊用途で188byteパケットのものだけを選んで救出できるようにしたい。他にもあるけれどまずはこれを最優先で。

(ビデオカメラ撮影動画は192byteパケット、PT2/PT3の録画ファイルは188byteパケット)

configureに発生したエラーと回避策は下記の通り。

:

configure: error: At least one of ncursesw/ncurses/pdcurses/curses library must be present

% sudo apt-get install ncurses-dev

%./configure

:

configure: error: No uuid_create or uuid_generate function in library libuuid or uuidgen function present

% sudo apt-get install uuid-dev

%./configure

:

./configure: line 8208: syntax error near unexpected token `QTGUI,'

./configure: line 8208: ` PKG_CHECK_MODULES(QTGUI, Qt5Gui >= 5.0.0,,use_qt=false)'

% ./configure --disable-qt

:

./configure: line 8208: syntax error near unexpected token `QTGUI,'

./configure: line 8208: ` PKG_CHECK_MODULES(QTGUI, Qt5Gui >= 5.0.0,,use_qt=false)'

% ./configure --enable-qt=no

:

./configure: line 8208: syntax error near unexpected token `QTGUI,'

./configure: line 8208: ` PKG_CHECK_MODULES(QTGUI, Qt5Gui >= 5.0.0,,use_qt=false)'

むぅ、なんでだ。

見た目はconfigure構文エラーみたいやけど、9年間メンテナンスなしで放置されてるってありえるんかなぁ。

あらためて、

apt install build-essential e2fslibs-dev libncurses5-dev libncursesw5-dev ntfs-3g-dev libjpeg-dev uuid-dev zlib1g-dev qtbase5-dev qttools5-dev-tools pkg-config dh-autoreconf

をやり直して、再挑戦…したけど、駄目。なんでやろう。cygwinでは通ってbash on ubuntuでは通らないとかってあるんやろうか。

(追記)

http://rcmdnk.github.io/blog/2014/12/30/computer-automake/

を参考に、configフォルダを削除してautoreconfからやり直したらやっとmakeできるようになった。

なったけれど… sudo photorecの結果は、つれなく、"No harddisk found"になってしまう。

bash on ubuntuからはハードディスクが検索できないのか?

/dev/の下にHDDのデバイスファイルが生成されず、dfコマンドでも見えないので駄目らしい。(涙)

Photorec & TestDiskを自分でビルドする(2)

| 18:05

Bash on Ubuntu on Windows10上では動作可能なphotorecをビルドできないことがわかったため、cygwinでビルド。

できあがったphotorec.exeを/usr/local/bin/に置いても起動できないため、/bin直下にある cyg*.dllをphotorec.exeと同じフォルダにコピーする。また、バイナリ配布版に存在する63フォルダもphotorec.exeと同じフォルダにコピーする。

これで私家版photorecを起動することができた。

救出対象フォーマットを「ts」のみに限定しても「m2ts」が救出されてしまう理由はおそらく、file_m2ts.cのregister_header_check_ts関数の実装が

static void register_header_check_ts(file_stat_t *file_stat)

{

register_header_check(0, "G", 1, &header_check_m2t, file_stat);

register_header_check(4, "G", 1, &header_check_m2ts, file_stat);

}

となっているため。header_check_m2tsを含む行をコメントアウトすると自分の欲しい結果(1パケット188バイトのtsフォーマットのみを救出する)が得られると思われる。

トラックバック - http://d.hatena.ne.jp/behappy510/20161103