TestDisk Compilation

From CGSecurity
Jump to navigation Jump to search

En.png English De.png Deutsch Es.png Español Fr.png Français Ru.png Русский


This document explains how to compile TestDisk and PhotoRec.

System specific notes

DOS

TestDisk & PhotoRec can compiled for DOS/Win9x using DJGPP. Read DOS for more information.

Mac OS X

To compile TestDisk & PhotoRec, install Apple Development Kit from Mac OS X installation DVD. See Mac OS X for additional notes.

Linux

  • Debian, Ubuntu:
    • 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
    • apt install autoconf automake git-core
  • Fedora, RedHat Enterprise, CentOS

yum install libtool autoconf automake desktop-file-utils e2fsprogs-devel libewf-devel libjpeg-devel ncurses-devel ntfs-3g-devel zlib-devel libuuid-devel qt5-linguist qt5-qtbase-devel openssl-devel pkgconfig Additional packages are needed for a static version (version that doesn't use local library): yum install ncurses-static libjpeg-static zlib-static openssl-static glibc-static.

  • Mandriva: urpmi ncurses-devel e2fsprogs-devel jpeg-devel libntfs-devel zlib-devel openssl-devel libewf-devel
  • OpenSuse: install ncurses-devel e2fsprogs-devel libjpeg-devel ntfsprogs-devel zlib-devel openssl-devel libreiserfs-devel libuuid-devel

Read Compile Linux for more information.

Windows

Use the free C/C++ Cygwin compiler to produce Windows version (Windows NT 4/Windows 2000/XP/2003/Vista...).
It's also possible to use MinGW compiler but some functionalities/libraries may be missing. Read Compile Win for additional details.

Libraries

  • libncurses - Required, TestDisk and PhotoRec use a text user interface, Ncurses library and development files must be available.
  • Ext2fs library - Optional, used by TestDisk to list files from ext2/ext3/ext4 partition and by PhotoRec to be able to carve the free space from an ext2/ext3/ext4 partition instead of the whole partition
  • EWF library - Optional, TestDisk and PhotoRec use it to access Expert Witness Compression Format files (ie Encase files)
  • Iconv - Optional, used to handle unicode filenames
  • Jpeg library - Optional, used by PhotoRec to improved JPEG recovery rate
  • NTFS library - Optional, used by TestDisk to list files from NTFS partition
  • Reiserfs library - Optional, used by TestDisk to list files from reiserfs partition
  • zlib library - Optional, used by PhotoRec to decompress gzipped content
  • Qt5 library - Optional, required for QPhotoRec and to update the configure script.

ncurses Library

Ncurses library is usually installed with your OS, so you don't need to compile it yourself. If ncursesw is available, TestDisk and PhotoRec will use it to display unicode chars.

Ext2fs Library

Ext2fs library is usually installed with your OS, so you don't need to compile it yourself. Otherwise get latest version of e2fsprogs at e2fsprogs.sf.net

tar xzf e2fsprogs-1.38.tgz
cd e2fsprogs-1.38
./configure --with-cc=gcc
make libs
make install

EWF library

EWF library source code can be downloaded from https://github.com/libyal/libewf. Note that it requires openssl and zlib to compile and run sucessfully.

tar xzf libewf-beta-20070408.tar.gz
cd libewf-20070408
./configure
make lib
make install

Iconv library

On most plateform, iconv functions are integrated in libc, so no additional library is needed. Under Windows, a libiconv package is available on cygwin website, cygwin 1.7 and later handles unicode. A libiconv package is available for DOS/djgpp but it's useless as the OS doesn't support unicode filename.

Jpeg library

Libjpeg library is usually installed with your OS, so you don't need to compile it yourself. Otherwise download libjpeg source from http://www.ijg.org/files/jpegsrc.v6b.tar.gz

tar xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --enable-shared --enable-static
make
sudo make install

Mac OS X 10.3 ships with GNU libtool, albeit under a slightly different name, glibtool. You may have to run

ln -s `which glibtool` ./libtool

How to compile ntfsprogs

Get the latest version of ntfsprogs from https://www.tuxera.com/

tar xzf ntfsprogs-1.13.0.tar.gz
cd ntfsprogs-1.13.0
./configure
make libs
make install

To get a working version under NT 4, use configure --disable-default-device-io-ops because SetFilePointerEx used by win32_io.c is not exported by NT 4 DLL.

ReiserFS Library

This library is not needed to recover a ReiserFS partition. As this library is deprecated, use it only if you really need to list the content of reiserfs partition or copy files using testdisk.

Get progsreiserfs-0.3.1-rc8.tar.gz at https://git.kernel.org/pub/scm/linux/kernel/git/jeffm/reiserfsprogs.git

tar xzf progsreiserfs-*.tar.gz
cd progreiserfs-0.3.1-rc8
./configure --disable-nls --disable-Werror
make
make install

Qt

QPhotoRec is a graphical version of PhotoRec. Qt5 is require to compile qphotorec and to update the configure script. If Qt5 is missing, QPhotoRec is not compiled but it remains possible to compile testdisk, photorec and fidentify.

How to compile TestDisk

Standard method

To compile TestDisk and PhotoRec, run

./configure
make

You may need to specify parameters to configure, see configure --help.
Example:

./configure
--with-reiserfs-lib=/home/kmaster/perso/testdisk-5.2/progsreiserfs-0.3.1-rc8/libreiserfs/.libs/
--with-reiserfs-includes=/home/kmaster/perso/testdisk-5.2/progsreiserfs-0.3.1-rc8/include/
--with-ntfs-lib=/home/kmaster/perso/testdisk-5.2/ntfsprogs-1.8.5/libntfs/.libs/
--with-ntfs-includes=/home/kmaster/perso/testdisk-5.2/ntfsprogs-1.8.5/include/
--with-ext2fs-lib=/home/kmaster/perso/testdisk-5.2/e2fsprogs-1.34/lib/
--with-ext2fs-includes=/home/kmaster/perso/testdisk-5.2/e2fsprogs-1.34/include/

Static version

If you need to run the binary on systems that lack one of the previous libraries, create a static binary with

make static

Static compressed binary

If you need a small binary for binary distribution, get the UPX packer at https://upx.github.io/ and run

strip src/testdisk src/photorec
upx src/testdisk src/photorec

Note that Linux UPX needs to decompress program files before running, and it will request some space on /tmp to do this. The running executable must be allowed in this directory (mount -o remount,exec /tmp).

Cross-compilation

Return to TestDisk page