While troubleshooting some issues with pwntcha which is installed by default on Backtrack Linux version 5 R3 I received some errors compiling pwntcha from source. The Imlib2 development files need to be installed before compiling pwntcha from source on Backtrack Linux 5 R3 or Ubuntu 10.04. Below I provide the output from the pwntcha compile errors as well as show the install command for the package that needs to be installed before pwntcha will compile without errors.
pwntcha Compile Errors On Backtrack Linux:
- root@bt:/pentest/misc/pwntcha/test/pwntcha# make
- make all-recursive
- make[1]: Entering directory `/pentest/misc/pwntcha/test/pwntcha'
- Making all in src
- make[2]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src'
- Making all in authimage
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/authimage'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"authimage\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/authimage'
- Making all in clubic
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/clubic'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"clubic\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/clubic'
- Making all in java
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/java'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"java\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/java'
- Making all in linuxfr
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/linuxfr'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"linuxfr\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/linuxfr'
- Making all in livejournal
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/livejournal'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"livejournal\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- decoder.c: In function ‘find_glyphs’:
- decoder.c:88: warning: incompatible implicit declaration of built-in function ‘sqrt’
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/livejournal'
- Making all in lmt
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/lmt'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"lmt\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/lmt'
- Making all in paypal
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/paypal'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"paypal\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/paypal'
- Making all in phpbb
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/phpbb'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"phpbb\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/phpbb'
- Making all in scode
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/scode'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"scode\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/scode'
- Making all in slashdot
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/slashdot'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"slashdot\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/slashdot'
- Making all in ticketmaster
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/ticketmaster'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"ticketmaster\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/ticketmaster'
- Making all in tickets
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/tickets'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"tickets\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/tickets'
- Making all in vbulletin
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/vbulletin'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"vbulletin\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/vbulletin'
- Making all in xanga
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src/xanga'
- gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -DDECODER=\"xanga\" -g -O2 -MT libdecoder_a-decoder.o -MD -MP -MF .deps/libdecoder_a-decoder.Tpo -c -o libdecoder_a-decoder.o `test -f 'decoder.c' || echo './'`decoder.c
- mv -f .deps/libdecoder_a-decoder.Tpo .deps/libdecoder_a-decoder.Po
- rm -f libdecoder.a
- ar cru libdecoder.a libdecoder_a-decoder.o
- ranlib libdecoder.a
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src/xanga'
- make[3]: Entering directory `/pentest/misc/pwntcha/test/pwntcha/src'
- gcc -DHAVE_CONFIG_H -I. -I.. -Wall -O6 -g -O2 -MT pwntcha-main.o -MD -MP -MF .deps/pwntcha-main.Tpo -c -o pwntcha-main.o `test -f 'main.c' || echo './'`main.c
- main.c: In function ‘main’:
- main.c:44: warning: unused variable ‘this_option_optind’
- main.c:141: warning: implicit declaration of function ‘decode_java’
- main.c:141: warning: assignment makes pointer from integer without a cast
- main.c:147: warning: implicit declaration of function ‘decode_lmt’
- main.c:147: warning: assignment makes pointer from integer without a cast
- main.c:180: warning: assignment makes pointer from integer without a cast
- main.c:215: warning: assignment makes pointer from integer without a cast
- main.c:235: warning: implicit declaration of function ‘decode_easter_eggs’
- main.c:235: warning: assignment makes pointer from integer without a cast
- main.c:37: warning: unused variable ‘digit_optind’
- mv -f .deps/pwntcha-main.Tpo .deps/pwntcha-main.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -Wall -O6 -g -O2 -MT pwntcha-filter.o -MD -MP -MF .deps/pwntcha-filter.Tpo -c -o pwntcha-filter.o `test -f 'filter.c' || echo './'`filter.c
- filter.c: In function ‘filter_contrast’:
- filter.c:382: warning: unused variable ‘b’
- filter.c:382: warning: unused variable ‘g’
- filter.c: In function ‘filter_count’:
- filter.c:446: warning: unused variable ‘b’
- filter.c:446: warning: unused variable ‘g’
- mv -f .deps/pwntcha-filter.Tpo .deps/pwntcha-filter.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -Wall -O6 -g -O2 -MT pwntcha-font.o -MD -MP -MF .deps/pwntcha-font.Tpo -c -o pwntcha-font.o `test -f 'font.c' || echo './'`font.c
- mv -f .deps/pwntcha-font.Tpo .deps/pwntcha-font.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -Wall -O6 -g -O2 -MT pwntcha-image.o -MD -MP -MF .deps/pwntcha-image.Tpo -c -o pwntcha-image.o `test -f 'image.c' || echo './'`image.c
- image.c:28:5: error: #error "No imaging library"
- image.c: In function ‘image_load’:
- image.c:42: error: ‘priv’ undeclared (first use in this function)
- image.c:42: error: (Each undeclared identifier is reported only once
- image.c:42: error: for each function it appears in.)
- image.c: In function ‘image_new’:
- image.c:106: error: ‘priv’ undeclared (first use in this function)
- make[3]: *** [pwntcha-image.o] Error 1
- make[3]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src'
- make[2]: *** [all-recursive] Error 1
- make[2]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha/src'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/pentest/misc/pwntcha/test/pwntcha'
- make: *** [all] Error 2
- root@bt:/pentest/misc/pwntcha/test/pwntcha#
To resolve the errors compiling pwntcha on Backtrack install the libimlib2-dev package as shown in the example below.
Install libimlib2-dev On Backtrack Linux To Compile pwntcha:
- root@bt:/pentest/misc/pwntcha/test/pwntcha# apt-get install libimlib2-dev
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- The following NEW packages will be installed:
- libimlib2-dev
- 0 upgraded, 1 newly installed, 0 to remove and 167 not upgraded.
- Need to get 378kB of archives.
- After this operation, 1,348kB of additional disk space will be used.
- Get:1 http://64.npp-repos.lou.accuvantlabs.com/ revolution/main libimlib2-dev 1.4.2-5build1 [378kB]
- Fetched 378kB in 0s (14.9MB/s)
- Selecting previously deselected package libimlib2-dev.
- (Reading database ... 264493 files and directories currently installed.)
- Unpacking libimlib2-dev (from .../libimlib2-dev_1.4.2-5build1_amd64.deb) ...
- Processing triggers for man-db ...
- Setting up libimlib2-dev (1.4.2-5build1) ...
- root@bt:/pentest/misc/pwntcha/test/pwntcha#
Once the libimlib2-dev package has been installed you should be able to compile pwntcha without any further issues.