Nmap 6.46をAndroid NDKでクロスコンパイルする
Nmapは定番のセキュリティスキャナです。NcatというNetcatもどきが付属しており、僕はこれが欲しくてビルドしました。
http://nmap.org/download.html#source から nmap-6.46.tar.bz2 をダウンロードします。
例によってconfig.subが古いので、libtoolのファイルをコピーしてからconfigureします。
$ tar xvjf nmap-6.46.tar.bz2 $ cd nmap-6.46 $ for i in `find . -name config.guess` ; do cp /usr/local/share/libtool/config/config.guess $i ; done $ for i in `find . -name config.sub` ; do cp /usr/local/share/libtool/config/config.sub $i ; done $ CFLAGS=-O2 LDFLAGS=-s ./configure --host=arm-linux-androideabi --prefix=$ANDROID_APP_ROOT/nmap-6.46 --with-pcap=linux --without-liblua --without-zenmap --without-nping $ patch < patch-eth-bsd.txt $ make (liblinearに関するエラーが出る、クロスコンパイル環境への対応が中途半端なため) $ cd liblinear $ arm-linux-androideabi-ar rcv liblinear.a linear.o tron.o blas/*.o $ arm-linux-androideabi-ranlib liblinear.a $ cd .. $ make $ make install
コンパイルエラーを回避するためにconfigureで色々とwithoutにしています。
また、そのままではビルドが通らないので、下記パッチを当てる必要があります。この対応が正しいかは疑問ですが…。
*** nmap-6.46-orig/libdnet-stripped/src/eth-bsd.c 2009-11-09 13:49:32.000000000 +0900 --- nmap-6.46/libdnet-stripped/src/eth-bsd.c 2014-05-31 16:08:21.000000000 +0900 *************** *** 18,24 **** --- 18,29 ---- #include <net/route.h> #include <net/if_dl.h> #endif + + #ifdef HAVE_NET_BPF_H #include <net/bpf.h> + #else + #define BIOCSETIF _IOW('B',108, struct ifreq) + #endif #include <net/if.h> #include <assert.h>
installed files
bin/ncat bin/nmap share/man/*/man1/nmap.1 share/man/man1/ncat.1 share/man/man1/ndiff.1 share/man/man1/nmap.1 share/nmap/*