Skip to content

Commit

Permalink
Merge branch 'master' into 'master'
Browse files Browse the repository at this point in the history
Added armhf and aarch64 recipes, binaries and prepackaged archives

See merge request !6
  • Loading branch information
Dominik Schneider committed Feb 26, 2018
2 parents 07fb90a + 5a8c19b commit 8d6fa05
Show file tree
Hide file tree
Showing 17 changed files with 324 additions and 2 deletions.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Precompiled versions of Nmap are available for the following operating systems/a

* [Linux x86](bin/linux/x86) (nmap, ncat, nping)
* [Linux x86_64](bin/linux/x86_64) (nmap, ncat, nping)
* [Linux armhf](bin/linux/armhf) (nmap, ncat, nping)
* [Linux aarch64](bin/linux/aarch64) (nmap, ncat, nping)
* [Windows x86](bin/windows/x86) (nmap)

### Packaged Archives
Expand All @@ -22,3 +24,17 @@ Precompiled versions of socat are available for the following operating systems/

* [Linux x86](bin/linux/x86)
* [Linux x86_64](bin/linux/x86_64)

# Building with Vagrant

The recipes are supposed to be built in Docker containers. In case Docker is not available, it is recommended to use Vagrant to built everything in a VM, e.g. Nmap for Linux x86:

```
vagrant up
vagrant ssh
cd /vagrant/recipes/nmap/linux_x86
sudo docker build -t static-toolbox-nmap-x86 .
sudo docker run -v $(pwd)/output:/output static-toolbox-nmap-x86
```

This is also the recommended way to run the build scripts without Docker without creating directories like `/build` and `/output` on your host system.
24 changes: 24 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"

config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end

config.vm.provision "shell", inline: <<-SHELL
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
apt install -y docker-engine
service docker start
apt install -y python3-pip
pip3 install --upgrade pip
pip3 install docker-compose
systemctl daemon-reload
systemctl restart docker
SHELL
end
3 changes: 3 additions & 0 deletions bin/linux/aarch64/ncat-fcac8c6
Git LFS file not shown
3 changes: 3 additions & 0 deletions bin/linux/aarch64/nmap-fcac8c6
Git LFS file not shown
3 changes: 3 additions & 0 deletions bin/linux/aarch64/nping-fcac8c6
Git LFS file not shown
3 changes: 3 additions & 0 deletions bin/linux/armhf/ncat-fcac8c6
Git LFS file not shown
3 changes: 3 additions & 0 deletions bin/linux/armhf/nmap-fcac8c6
Git LFS file not shown
3 changes: 3 additions & 0 deletions bin/linux/armhf/nping-fcac8c6
Git LFS file not shown
Empty file modified bin/linux/x86/socat
100644 → 100755
Empty file.
Empty file modified bin/linux/x86_64/socat
100644 → 100755
Empty file.
3 changes: 3 additions & 0 deletions packaged/nmap-7.60SVN-fcac8c6-aarch64-portable.zip
Git LFS file not shown
3 changes: 3 additions & 0 deletions packaged/nmap-7.60SVN-fcac8c6-armhf-portable.zip
Git LFS file not shown
18 changes: 16 additions & 2 deletions recipes/nmap/README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,33 @@
# Nmap

## Build x86
## Build Linux x86

```
sudo docker build -t static-toolbox-nmap-x86 .
sudo docker run -v $(pwd)/output:/output static-toolbox-nmap-x86
```

## Build x86_64
## Build Linux x86_64

```
sudo docker build -t static-toolbox-nmap-x86-64 .
sudo docker run -v $(pwd)/output:/output static-toolbox-nmap-x86-64
```

## Build Linux armhf

```
sudo docker build -t static-toolbox-nmap-armhf .
sudo docker run -v $(pwd)/output:/output static-toolbox-nmap-armhf
```

## Build Linux aarch64

```
sudo docker build -t static-toolbox-nmap-aarch64 .
sudo docker run -v $(pwd)/output:/output static-toolbox-nmap-aarch64
```

## Using the Nmap data directory

In order to use features like script scanning, we also need the Nmap data files that are typically installed into `/usr/share/nmap`. They are available in the `data/nmap` directory. Just copy this directory to the target system, e.g. into `/tmp/nmap-data` and run Nmap like this:
Expand Down
19 changes: 19 additions & 0 deletions recipes/nmap/linux_aarch64/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM ubuntu:xenial
RUN apt-get update && \
apt upgrade -yy && \
apt install -yy \
automake \
cmake \
build-essential \
checkinstall \
libgmp-dev \
libmpfr-dev \
libmpc-dev \
wget \
git \
pkg-config \
python
RUN mkdir /build
ADD . /build
RUN chmod +x /build/build_aarch64.sh
CMD /build/build_aarch64.sh
102 changes: 102 additions & 0 deletions recipes/nmap/linux_aarch64/build_aarch64.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#!/bin/bash
#set -e
set -o pipefail
set -x
NMAP_COMMIT=

fetch(){
if [ ! -d "/build/musl" ];then
#git clone https://github.com/GregorR/musl-cross.git /build/musl
git clone https://github.com/takeshixx/musl-cross.git /build/musl
fi
if [ ! -d "/build/openssl" ];then
git clone https://github.com/drwetter/openssl-pm-snapshot.git /build/openssl
fi
if [ ! -d "/build/nmap" ];then
git clone https://github.com/nmap/nmap.git /build/nmap
fi
NMAP_COMMIT=$(cd /build/nmap/ && git rev-parse --short HEAD)
}

build_musl_aarch64() {
cd /build/musl
git clean -fdx
echo "ARCH=arm64" >> config.sh
echo "GCC_BUILTIN_PREREQS=yes" >> config.sh
echo "TRIPLE=aarch64-linux-musleabi" >> config.sh
./build.sh
echo "[+] Finished building musl-cross aarch64"
}

build_openssl_aarch64() {
cd /build/openssl
git clean -fdx
make clean
CC='/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-gcc -static' ./Configure no-shared linux-generic64
make -j4
echo "[+] Finished building OpenSSL aarch64"
}

build_nmap_aarch64() {
cd /build/nmap
git clean -fdx
make clean
cd /build/nmap/libz
CC='/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-gcc -static -fPIC' \
CXX='/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-g++ -static -static-libstdc++ -fPIC' \
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld .
make zlibstatic
cd /build/nmap
CC='/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-gcc -static -fPIC' \
CXX='/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-g++ -static -static-libstdc++ -fPIC' \
CXXFLAGS="-I/build/nmap/libz" \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
LDFLAGS="-L/build/openssl -L/build/nmap/libz" \
./configure \
--host=aarch64-none-linux-gnueabi \
--without-ndiff \
--without-zenmap \
--without-nmap-update \
--without-libssh2 \
--with-pcap=linux \
--with-libz=/build/nmap/libz \
--with-openssl=/build/openssl \
--with-liblua=included
sed -i -e 's/shared\: /shared\: #/' libpcap/Makefile
sed -i 's|LIBS = |& libz/libz.a |' Makefile
make -j4
if [ ! -f "/build/nmap/nmap" -o ! -f "/build/nmap/ncat/ncat" -o ! -f "/build/nmap/nping/nping" ];then
echo "[-] Building Nmap armhf failed!"
exit 1
fi
if [ -f "/build/nmap/nmap" -a -f "/build/nmap/ncat/ncat" -a -f "/build/nmap/nping/nping" ];then
/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-strip nmap ncat/ncat nping/nping
fi
}

build_aarch64(){
OUT_DIR_AARCH64=/output/`uname | tr 'A-Z' 'a-z'`/aarch64
mkdir -p $OUT_DIR_AARCH64
build_musl_aarch64
build_openssl_aarch64
build_nmap_aarch64
if [ ! -f "/build/nmap/nmap" -o ! -f "/build/nmap/ncat/ncat" -o ! -f "/build/nmap/nping/nping" ];then
echo "[-] Building Nmap aarch64 failed!"
exit 1
fi
cp /build/nmap/nmap "${OUT_DIR_AARCH64}/nmap-${NMAP_COMMIT}"
cp /build/nmap/ncat/ncat "${OUT_DIR_AARCH64}/ncat-${NMAP_COMMIT}"
cp /build/nmap/nping/nping "${OUT_DIR_AARCH64}/nping-${NMAP_COMMIT}"
echo "[+] Finished building Nmap aarch64"
}

main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_aarch64
}

main
19 changes: 19 additions & 0 deletions recipes/nmap/linux_armhf/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM ubuntu:xenial
RUN apt-get update && \
apt upgrade -yy && \
apt install -yy \
automake \
cmake \
build-essential \
checkinstall \
libgmp-dev \
libmpfr-dev \
libmpc-dev \
wget \
git \
pkg-config \
python
RUN mkdir /build
ADD . /build
RUN chmod +x /build/build_armhf.sh
CMD /build/build_armhf.sh
104 changes: 104 additions & 0 deletions recipes/nmap/linux_armhf/build_armhf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#!/bin/bash
#set -e
set -o pipefail
set -x
NMAP_COMMIT=

fetch(){
if [ ! -d "/build/musl" ];then
#git clone https://github.com/GregorR/musl-cross.git /build/musl
git clone https://github.com/takeshixx/musl-cross.git /build/musl
fi
if [ ! -d "/build/openssl" ];then
git clone https://github.com/drwetter/openssl-pm-snapshot.git /build/openssl
fi
if [ ! -d "/build/nmap" ];then
git clone https://github.com/nmap/nmap.git /build/nmap
fi
NMAP_COMMIT=$(cd /build/nmap/ && git rev-parse --short HEAD)
}

build_musl_armhf() {
cd /build/musl
git clean -fdx
echo "ARCH=arm" >> config.sh
echo "GCC_BUILTIN_PREREQS=yes" >> config.sh
echo "TRIPLE=arm-linux-musleabihf" >> config.sh
echo "GCC_BOOTSTRAP_CONFFLAGS='--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16'" >> config.sh
echo "GCC_CONFFLAGS='--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16'" >> config.sh
./build.sh
echo "[+] Finished building musl-cross armhf"
}

build_openssl_armhf() {
cd /build/openssl
git clean -fdx
make clean
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static' ./Configure no-shared linux-generic32
make -j4
echo "[+] Finished building OpenSSL armhf"
}

build_nmap_armhf() {
cd /build/nmap
git clean -fdx
make clean
cd /build/nmap/libz
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld .
make zlibstatic
cd /build/nmap
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
CXXFLAGS="-I/build/nmap/libz" \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
LDFLAGS="-L/build/openssl -L/build/nmap/libz" \
./configure \
--host=arm-none-linux-gnueabi \
--without-ndiff \
--without-zenmap \
--without-nmap-update \
--without-libssh2 \
--with-pcap=linux \
--with-libz=/build/nmap/libz \
--with-openssl=/build/openssl \
--with-liblua=included
sed -i -e 's/shared\: /shared\: #/' libpcap/Makefile
sed -i 's|LIBS = |& libz/libz.a |' Makefile
make -j4
if [ ! -f "/build/nmap/nmap" -o ! -f "/build/nmap/ncat/ncat" -o ! -f "/build/nmap/nping/nping" ];then
echo "[-] Building Nmap armhf failed!"
exit 1
fi
if [ -f "/build/nmap/nmap" -a -f "/build/nmap/ncat/ncat" -a -f "/build/nmap/nping/nping" ];then
/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-strip nmap ncat/ncat nping/nping
fi
}

build_armhf(){
OUT_DIR_ARMHF=/output/`uname | tr 'A-Z' 'a-z'`/armhf
mkdir -p $OUT_DIR_ARMHF
build_musl_armhf
build_openssl_armhf
build_nmap_armhf
if [ ! -f "/build/nmap/nmap" -o ! -f "/build/nmap/ncat/ncat" -o ! -f "/build/nmap/nping/nping" ];then
echo "[-] Building Nmap armhf failed!"
exit 1
fi
cp /build/nmap/nmap "${OUT_DIR_ARMHF}/nmap-${NMAP_COMMIT}"
cp /build/nmap/ncat/ncat "${OUT_DIR_ARMHF}/ncat-${NMAP_COMMIT}"
cp /build/nmap/nping/nping "${OUT_DIR_ARMHF}/nping-${NMAP_COMMIT}"
echo "[+] Finished building Nmap armhf"
}

main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_armhf
}

main

0 comments on commit 8d6fa05

Please sign in to comment.