Compare commits

...

101 commits
1.04 ... master

Author SHA1 Message Date
574763abba
fix 2024-12-17 21:08:26 +01:00
ff74c3de01
Fix 2024-12-17 21:01:36 +01:00
6ea45868db
Migrate CI to forgejo 2024-12-17 20:02:35 +01:00
sven-ernw
ab7a02f0dd
Merge pull request from ttdennis/socat-ppc
Socat powerpc and powerpc64 builds
2023-06-09 17:30:23 +02:00
Dennis Heinze
b322d1b36c Socat ppc and ppc64 build 2023-05-26 09:24:40 +02:00
Dennis Heinze
44979a9703 Start ppc implementation 2023-05-26 09:24:23 +02:00
hnzlmnn-ernw
56b6651677
Merge pull request from ttdennis/set-output
Fix deprecated set-output
2023-05-22 14:57:24 +02:00
hnzlmnn-ernw
d7e003190a
Merge branch 'master' into set-output 2023-05-22 14:57:05 +02:00
hnzlmnn-ernw
43b769f5ae
Merge pull request from ttdennis/strace
Strace
2023-05-22 14:54:34 +02:00
Dennis Heinze
57f6229fe3
Merge branch 'master' into strace 2023-05-22 14:33:35 +02:00
Dennis Heinze
fd09b1375d
Add strace badge to readme 2023-05-22 14:04:57 +02:00
Dennis Heinze
e2515272f8
Fix deprecated set-output 2023-05-22 08:54:34 +02:00
Dennis Heinze
98edf482f8 Fix deprecated set-output 2023-05-19 13:29:47 +02:00
Dennis Heinze
20ee0f7d17 Clean + workflow dispatch 2023-05-19 12:02:34 +02:00
Dennis Heinze
735d28224e Finish strace build 2023-05-19 12:02:12 +02:00
Dennis Heinze
b34b0980ef Start strace 2023-05-16 09:29:08 +02:00
hnzlmnn-ernw
b1c5bf801c
Merge pull request from ernw/takeshixx-master
Merge takeshixx changes into master
2023-03-09 16:05:43 +01:00
hnzlmnn-ernw
9a8f7c9e1a
Update README.md 2023-03-09 15:43:14 +01:00
sven-ernw
add382c563
Merge pull request from takeshixx/master
Merge changes from Niklaus
2023-03-09 15:42:37 +01:00
Niklaus Schiess
bd887fa3fc Updated workflow links 2022-10-05 16:39:04 +02:00
Niklaus Schiess
a1cd885edc Updated workflow links 2022-10-05 16:35:44 +02:00
Niklaus Schiess
676eeb8f45 Updated Nmap release creation 2022-10-05 13:14:00 +02:00
Niklaus Schiess
5d920d97ab Updated Nmap release creation 2022-10-05 12:59:56 +02:00
Niklaus Schiess
04a2277791 Updated install build compiler script 2022-10-05 12:49:27 +02:00
Niklaus Schiess
ecf0f96df9 Updated install build compiler script 2022-10-05 12:43:36 +02:00
Niklaus Schiess
1431466df0 Updated Nmap release creation 2022-10-05 12:42:20 +02:00
Niklaus Schiess
c613b77803 Bumped gdb to gdb-12.1-release 2022-10-05 12:21:05 +02:00
Niklaus Schiess
dc233d4f74 Bumped OpenSSH to V_9_1_P1 2022-10-05 11:22:07 +02:00
takeshix
bfdc8f494a Updated README.md 2021-04-19 18:14:46 +02:00
takeshix
c9effeebc1 Updated tag checks 2021-04-19 16:38:56 +02:00
takeshix
c0f10cbaa1 Updated OpenSSH tag check 2021-04-19 16:26:10 +02:00
takeshix
349f0d7f3e Updated GDB workflow 2021-04-19 16:06:40 +02:00
takeshix
4dd18e112a Added release job for GDB 2021-04-19 16:03:23 +02:00
takeshix
3e9cf83e71 Fixed OpenSSH version tag 2021-04-19 15:53:12 +02:00
takeshix
e2a49be0b7 Updated 02_install_build_compiler.sh 2021-04-19 15:43:19 +02:00
takeshix
d64ea4e08f Added release job for OpenSSH workflow 2021-04-19 15:37:29 +02:00
takeshix
73ddc59fab Updated openssh build script to v8.6p1 2021-04-19 15:28:36 +02:00
takeshix
0dc37eb390 Updated GDB workflow 2021-04-19 15:18:49 +02:00
takeshix
b613a7377c Added tag check to tcpdump workflow 2021-04-19 15:15:15 +02:00
takeshix
75fdf2b4bc Added tag check to Nmap workflow 2021-04-19 15:14:31 +02:00
takeshix
016b681c23 Fixed script in socat workflow 2021-04-19 15:07:04 +02:00
takeshix
56fa020198 Fixed script in socat workflow 2021-04-19 14:58:34 +02:00
takeshix
959c42b354 Added version to tcpdump binaries 2021-04-19 14:51:33 +02:00
takeshix
eef54d6c31 Updated socat workflow 2021-04-19 14:46:42 +02:00
takeshix
30721c6c11 Updated socat workflow 2021-04-19 14:45:44 +02:00
takeshix
62ad95dfa4 Fixed typo in socat workflow 2021-04-19 14:35:05 +02:00
takeshix
5c3ec0f2da Updated tcpdump workflow 2021-04-19 14:25:36 +02:00
takeshix
d5743fc036 Updated tcpdump workflow 2021-04-19 14:22:06 +02:00
takeshix
3c7a3bbb7b Updated tcpdump workflow 2021-04-19 14:20:54 +02:00
takeshix
687716cb1a Updated socat workflow 2021-04-19 14:15:53 +02:00
takeshix
7e3ae1499c Updated socat workflow 2021-04-19 13:57:43 +02:00
takeshix
176cff87c7 Updated Nmap build script 2021-04-19 13:40:47 +02:00
takeshix
782855bf2b Fixed path in GDB build 2021-04-19 13:39:33 +02:00
takeshix
885534ec82 Updated GDB build script 2021-04-19 13:34:06 +02:00
takeshix
7facf8d89e Updated Nmap job 2021-04-19 13:23:30 +02:00
takeshix
5e8c9f2d08 Updated Nmap job 2021-04-19 13:08:49 +02:00
takeshix
c366f39a57 Updated Nmap job 2021-04-19 12:33:30 +02:00
takeshix
02b0d65e61 Updated Nmap job 2021-04-19 12:26:33 +02:00
takeshix
ca570767b7 Updated Nmap job 2021-04-19 12:16:26 +02:00
takeshix
7b20701593 Updated Nmap job 2021-04-19 12:03:48 +02:00
takeshix
5f8293095d Added building helper scripts 2021-04-19 11:55:27 +02:00
takeshix
f8ddcacf73 Updated Nmap job 2021-04-19 11:51:24 +02:00
takeshix
47c0c238dd Updated Nmap job 2021-04-19 11:41:07 +02:00
takeshix
faa9a33e9d Updated Nmap job 2021-04-19 11:25:00 +02:00
takeshix
31fc61d83f Updated Nmap job 2021-04-19 11:14:06 +02:00
takeshix
a94e52ae86 Updated Nmap job 2021-04-19 11:11:48 +02:00
takeshix
d1e18ab8e2 Added release job for Nmap 2021-04-19 11:07:28 +02:00
Niklaus Schiess
17c9e910c8 Updated GDB build 2021-04-16 16:03:16 +02:00
Niklaus Schiess
edcac69d3f Added patch to alpine dependencies 2021-04-16 15:36:18 +02:00
Niklaus Schiess
7098615c1a Updated musl.cc URLs 2021-04-16 15:32:41 +02:00
Niklaus Schiess
127d8a9d75 Updated musl.cc URLs 2021-04-16 15:01:34 +02:00
takeshix
70287760e1 Updated README.md 2020-11-04 12:53:05 +01:00
takeshix
068b92fb11 Updated README.md 2020-11-04 12:44:39 +01:00
takeshix
0835060b5d Updated README.md 2020-11-04 12:43:56 +01:00
takeshix
4a9365f57a Updated building framework 2020-11-04 12:41:52 +01:00
takeshix
8449cf65b5 Merge branch 'master' of github.com:ernw/static-toolbox 2020-11-04 12:40:51 +01:00
takeshix
4c96c26d7d Updated README.md 2020-11-04 12:40:44 +01:00
takeshix
e268031c5e Added new workflows 2020-11-04 12:38:46 +01:00
takeshix
9a2da7f51c
Update build_gdb.sh 2020-10-12 19:09:44 +02:00
takeshix
5400f0350f
Update build_gdb.sh 2020-10-12 18:49:29 +02:00
takeshix
4284ed35a8
Update build_gdb.sh 2020-10-12 18:41:49 +02:00
takeshix
19ae03413e
Update build_gdb.sh 2020-10-12 18:36:19 +02:00
takeshix
440c56b2ef
Update build_gdb.sh 2020-10-12 18:28:58 +02:00
takeshix
9451cae95c
Update build_gdb.sh 2020-10-12 18:08:13 +02:00
takeshix
78f9fd02ec
Update build_gdb.sh 2020-10-12 18:01:35 +02:00
takeshix
5e9e496900
Update README.md 2020-10-09 11:26:28 +02:00
takeshix
92464c069e Minor build script cleanup 2020-09-09 11:57:24 +02:00
takeshix
2ac931cf71 Updated README.md 2020-09-09 11:50:15 +02:00
takeshix
cd1f893b5b Updated README.md 2020-09-09 11:45:59 +02:00
takeshix
083fdd6e71 Updated build_gdb.sh 2020-07-30 09:15:09 +02:00
takeshix
4c5ed84507 Added GDB workflows 2020-07-29 17:51:12 +02:00
takeshix
d5feb6a32b Updated lib.sh 2020-07-24 11:00:17 +02:00
takeshix
ef2d5fa0dd Updated tcpdump workflows 2020-07-24 10:24:19 +02:00
takeshix
235c902c68 Added additional tcpdump workflows 2020-07-24 10:05:58 +02:00
takeshix
98be6d8119 Updated strace x86_64 workflow 2020-07-21 12:04:02 +02:00
takeshix
1c32053ecb Added strace x86_64 workflow 2020-07-21 11:58:43 +02:00
takeshix
33ac2a622a Added tcpdump x86_64 workflow 2020-07-21 09:39:32 +02:00
takeshix
d33b2d21ff Updated README.md 2020-07-15 22:23:12 +02:00
takeshix
a40969a5ba Removed .github/README.md 2020-07-15 22:17:14 +02:00
takeshix
047017e200 Removed old build scripts 2020-07-15 22:15:09 +02:00
takeshix
2e95cb4f0f Added GitHub Actions and updated build framework 2020-07-15 22:13:51 +02:00
44 changed files with 1863 additions and 1506 deletions

View file

@ -0,0 +1,165 @@
name: GDB & gdbserver
on:
workflow_dispatch
jobs:
build-x86:
name: Build GDB & gdbserver x86
runs-on: ubuntu-latest
container: muslcc/x86_64:i686-linux-musl
outputs:
version: ${{ steps.build_gdb.outputs.PACKAGED_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install build compiler
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh x86_64
- name: Install dependencies workaround
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh i686
- name: Build GDB
id: build_gdb
run: |
export PATH="$PATH:/i686-linux-musl-cross/bin"
$GITHUB_WORKSPACE/build/targets/build_gdb.sh x86
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}
build-x86_64:
name: Build GDB & gdbserver x86_64
runs-on: ubuntu-latest
container: muslcc/x86_64:x86_64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install build compiler
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh x86_64
- name: Build GDB
id: build_gdb
run: |
$GITHUB_WORKSPACE/build/targets/build_gdb.sh x86_64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}
build-armhf:
name: Build GDB & gdbserver ARMHF
runs-on: ubuntu-latest
container: muslcc/x86_64:arm-linux-musleabihf
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install build compiler
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh x86_64
- name: Install dependencies workaround
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh arm
- name: Build gdb
id: build_gdb
run: |
export PATH="$PATH:/arm-linux-musleabihf-cross/bin"
$GITHUB_WORKSPACE/build/targets/build_gdb.sh armhf
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}
build-aarch64:
name: Build GDB & gdbserver AARCH64
runs-on: ubuntu-latest
container: muslcc/x86_64:aarch64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install build compiler
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh x86_64
- name: Install dependencies workaround
run: $GITHUB_WORKSPACE/build/02_install_build_compiler.sh aarch64
- name: Patch headers
run: |
patch /aarch64-linux-musl-cross/aarch64-linux-musl/include/asm/sigcontext.h < $GITHUB_WORKSPACE/patches/gdb/gdb-aarch64-header-sigcontext-fix.patch
- name: Build GDB
id: build_gdb
run: |
export PATH="$PATH:/aarch64-linux-musl-cross/bin"
$GITHUB_WORKSPACE/build/targets/build_gdb.sh aarch64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}
create-release:
name: Create GDB & gdbserver Release
runs-on: ubuntu-latest
needs: [build-x86, build-x86_64, build-armhf, build-aarch64]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare Environment
run: mkdir /tmp/releases
- name: Download Artifacts
uses: actions/download-artifact@v2
with:
path: /tmp/releases
- name: List Artifacts
run: ls -laR /tmp/releases
- name: Tag Release
id: tag_release
run: |
set +e
if git rev-list "gdb-v${{ needs.build-x86.outputs.version }}".. >/dev/null;then
echo "Tag for gdb-v${{ needs.build-x86.outputs.version }} already exists. Skipping release creation."
echo ::set-output name=NEW_RELEASE::"false"
else
git tag "gdb-v${{ needs.build-x86.outputs.version }}"
git push origin "gdb-v${{ needs.build-x86.outputs.version }}"
echo ::set-output name=NEW_RELEASE::"true"
fi
- name: Create Release
uses: ncipollo/release-action@v1
if: ${{ steps.tag_release.outputs.NEW_RELEASE == 'true' }}
with:
name: gdb-v${{ needs.build-x86.outputs.version }}
tag: gdb-v${{ needs.build-x86.outputs.version }}
artifacts: "/tmp/releases/*/*"
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,169 @@
name: Nmap
on:
workflow_dispatch
jobs:
build-x86:
name: Build Nmap x86
runs-on: ubuntu-latest
container: muslcc/x86_64:i686-linux-musl
outputs:
version: ${{ steps.package_nmap.outputs.PACKAGED_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build Nmap
run: $GITHUB_WORKSPACE/build/targets/build_nmap.sh x86
- name: Package Nmap
id: package_nmap
run: $GITHUB_WORKSPACE/package/targets/nmap/package.sh /output x86
- name: Upload tarball
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL }}
path: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL_PATH }}
- name: Upload zip
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_ZIP }}
path: ${{ steps.package_nmap.outputs.PACKAGED_ZIP_PATH }}
build-x86_64:
name: Build Nmap x86_64
runs-on: ubuntu-latest
container: muslcc/x86_64:x86_64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build Nmap
run: $GITHUB_WORKSPACE/build/targets/build_nmap.sh x86_64
- name: Package Nmap
id: package_nmap
run: $GITHUB_WORKSPACE/package/targets/nmap/package.sh /output x86_64
- name: Upload tarball
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL }}
path: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL_PATH }}
- name: Upload zip
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_ZIP }}
path: ${{ steps.package_nmap.outputs.PACKAGED_ZIP_PATH }}
build-armhf:
name: Build Nmap ARMHF
runs-on: ubuntu-latest
container: muslcc/x86_64:arm-linux-musleabihf
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build Nmap
run: $GITHUB_WORKSPACE/build/targets/build_nmap.sh armhf
- name: Package Nmap
id: package_nmap
run: $GITHUB_WORKSPACE/package/targets/nmap/package.sh /output armhf
- name: Upload tarball
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL }}
path: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL_PATH }}
- name: Upload zip
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_ZIP }}
path: ${{ steps.package_nmap.outputs.PACKAGED_ZIP_PATH }}
build-aarch64:
name: Build Nmap AARCH64
runs-on: ubuntu-latest
container: muslcc/x86_64:aarch64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build Nmap
run: $GITHUB_WORKSPACE/build/targets/build_nmap.sh aarch64
- name: Package Nmap
id: package_nmap
run: $GITHUB_WORKSPACE/package/targets/nmap/package.sh /output aarch64
- name: Upload tarball
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL }}
path: ${{ steps.package_nmap.outputs.PACKAGED_TARBALL_PATH }}
- name: Upload zip
uses: actions/upload-artifact@v2
with:
name: ${{ steps.package_nmap.outputs.PACKAGED_ZIP }}
path: ${{ steps.package_nmap.outputs.PACKAGED_ZIP_PATH }}
create-release:
name: Create Nmap Release
runs-on: ubuntu-latest
needs: [build-x86, build-x86_64, build-armhf, build-aarch64]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare Environment
run: mkdir /tmp/releases
- name: Download Artifacts
uses: actions/download-artifact@v2
with:
path: /tmp/releases
- name: List Artifacts
run: ls -laR /tmp/releases
- name: Tag Release
id: tag_release
run: |
set +e
git fetch --quiet --prune --tags
if [[ $(git tag -l | grep nmap-v${{ needs.build-x86.outputs.version }} | wc -l) -gt 0 ]]; then
echo "Tag for nmap-v${{ needs.build-x86.outputs.version }} already exists. Skipping release creation."
echo "NEW_RELEASE=false" >> $GITHUB_OUTPUT
else
echo "Tag for nmap-v${{ needs.build-x86.outputs.version }} missing. Starting release creation."
git tag "nmap-v${{ needs.build-x86.outputs.version }}"
git push origin "nmap-v${{ needs.build-x86.outputs.version }}"
echo "NEW_RELEASE=true" >> $GITHUB_OUTPUT
fi
- name: Create Release
uses: ncipollo/release-action@v1
if: ${{ steps.tag_release.outputs.NEW_RELEASE == 'true' }}
with:
name: Nmap v${{ needs.build-x86.outputs.version }}
tag: nmap-v${{ needs.build-x86.outputs.version }}
artifacts: "/tmp/releases/*/*"
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,130 @@
name: OpenSSH
on:
workflow_dispatch
jobs:
build-x86:
name: Build OpenSSH x86
runs-on: ubuntu-latest
container: muslcc/x86_64:i686-linux-musl
outputs:
version: ${{ steps.build_openssh.outputs.PACKAGED_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build OpenSSH
id: build_openssh
run: $GITHUB_WORKSPACE/build/targets/build_openssh.sh x86
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_openssh.outputs.PACKAGED_NAME }}
path: ${{ steps.build_openssh.outputs.PACKAGED_NAME_PATH }}
build-x86_64:
name: Build OpenSSH x86_64
runs-on: ubuntu-latest
container: muslcc/x86_64:x86_64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build OpenSSH
id: build_openssh
run: $GITHUB_WORKSPACE/build/targets/build_openssh.sh x86_64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_openssh.outputs.PACKAGED_NAME }}
path: ${{ steps.build_openssh.outputs.PACKAGED_NAME_PATH }}
build-armhf:
name: Build OpenSSH ARMHF
runs-on: ubuntu-latest
container: muslcc/x86_64:arm-linux-musleabihf
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build OpenSSH
id: build_openssh
run: $GITHUB_WORKSPACE/build/targets/build_openssh.sh armhf
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_openssh.outputs.PACKAGED_NAME }}
path: ${{ steps.build_openssh.outputs.PACKAGED_NAME_PATH }}
build-aarch64:
name: Build OpenSSH AARCH64
runs-on: ubuntu-latest
container: muslcc/x86_64:aarch64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build OpenSSH
id: build_openssh
run: $GITHUB_WORKSPACE/build/targets/build_openssh.sh aarch64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_openssh.outputs.PACKAGED_NAME }}
path: ${{ steps.build_openssh.outputs.PACKAGED_NAME_PATH }}
create-release:
name: Create OpenSSH Release
runs-on: ubuntu-latest
needs: [build-x86, build-x86_64, build-armhf, build-aarch64]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare Environment
run: mkdir /tmp/releases
- name: Download Artifacts
uses: actions/download-artifact@v2
with:
path: /tmp/releases
- name: List Artifacts
run: ls -laR /tmp/releases
- name: Tag Release
id: tag_release
run: |
set +e
if git rev-list "openssh-v${{ needs.build-x86.outputs.version }}".. >/dev/null;then
echo "Tag for openssh-v${{ needs.build-x86.outputs.version }} already exists. Skipping release creation."
echo "NEW_RELEASE=false" >> $GITHUB_OUTPUT
else
git tag "openssh-v${{ needs.build-x86.outputs.version }}"
git push origin "openssh-v${{ needs.build-x86.outputs.version }}"
echo "NEW_RELEASE=true" >> $GITHUB_OUTPUT
fi
- name: Create Release
uses: ncipollo/release-action@v1
if: ${{ steps.tag_release.outputs.NEW_RELEASE == 'true' }}
with:
name: openssh-v${{ needs.build-x86.outputs.version }}
tag: openssh-v${{ needs.build-x86.outputs.version }}
artifacts: "/tmp/releases/*/*"
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,235 @@
name: socat
on:
workflow_dispatch
jobs:
build-x86:
name: Build socat x86
runs-on: docker
container:
image: muslcc/x86_64:i686-linux-musl
outputs:
version: "${{ steps.build_socat.outputs.PACKAGED_VERSION }}"
steps:
- name: Install dependencies
run: sudo apk update && sudo apk add bash nodejs git-lfs
- name: Checkout
uses: actions/checkout@v4
- name: Install build dependencies
run: sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Build socat
id: build_socat
run: $GITHUB_WORKSPACE/build/targets/build_socat.sh x86
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ steps.build_socat.outputs.PACKAGED_NAME }}
path: ${{ steps.build_socat.outputs.PACKAGED_NAME_PATH }}
build-x86_64:
name: Build socat x86_64
runs-on: docker
container: muslcc/x86_64:x86_64-linux-musl
steps:
- name: Install dependencies
run: sudo apk update && sudo apk add bash nodejs git-lfs
- name: Checkout
uses: actions/checkout@v4
- name: Install build dependencies
run: sudo bash build/install_deps_alpine.sh
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Build socat
id: build_socat
run: $GITHUB_WORKSPACE/build/targets/build_socat.sh x86_64
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ steps.build_socat.outputs.PACKAGED_NAME }}
path: ${{ steps.build_socat.outputs.PACKAGED_NAME_PATH }}
build-armhf:
name: Build socat ARMHF
runs-on: docker
container: muslcc/x86_64:arm-linux-musleabihf
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build socat
id: build_socat
run: $GITHUB_WORKSPACE/build/targets/build_socat.sh armhf
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ steps.build_socat.outputs.PACKAGED_NAME }}
path: ${{ steps.build_socat.outputs.PACKAGED_NAME_PATH }}
build-aarch64:
name: Build socat AARCH64
runs-on: docker
container: muslcc/x86_64:aarch64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build socat
id: build_socat
run: $GITHUB_WORKSPACE/build/targets/build_socat.sh aarch64
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ steps.build_socat.outputs.PACKAGED_NAME }}
path: ${{ steps.build_socat.outputs.PACKAGED_NAME_PATH }}
build-ppc32:
name: Build socat powerpc32
runs-on: docker
container: muslcc/x86_64:powerpc-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build socat
id: build_socat
run: $GITHUB_WORKSPACE/build/targets/build_socat.sh ppc32
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ steps.build_socat.outputs.PACKAGED_NAME }}
path: ${{ steps.build_socat.outputs.PACKAGED_NAME_PATH }}
build-ppc64:
name: Build socat powerpc64
runs-on: docker
container: muslcc/x86_64:powerpc64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build socat
id: build_socat
run: $GITHUB_WORKSPACE/build/targets/build_socat.sh ppc64
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ steps.build_socat.outputs.PACKAGED_NAME }}
path: ${{ steps.build_socat.outputs.PACKAGED_NAME_PATH }}
create-release:
name: Create socat Release
runs-on: docker
needs: [build-x86, build-x86_64, build-armhf, build-aarch64, build-ppc32, build-ppc64]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Prepare Environment
run: mkdir /tmp/releases
- name: Download Artifacts
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
path: /tmp/releases
- name: List Artifacts
run: ls -laR /tmp/releases
- name: Tag Release
id: tag_release
run: |
set +e
if git rev-list "socat-v${{ needs.build-x86.outputs.version }}".. >/dev/null;then
echo "Tag for socat-v${{ needs.build-x86.outputs.version }} already exists. Skipping release creation."
echo "NEW_RELEASE=false" >> $GITHUB_OUTPUT
else
git tag "socat-v${{ needs.build-x86.outputs.version }}"
git push origin "socat-v${{ needs.build-x86.outputs.version }}"
echo "NEW_RELEASE=true" >> $GITHUB_OUTPUT
fi
- name: Create Release
uses: ncipollo/release-action@v1
if: ${{ steps.tag_release.outputs.NEW_RELEASE == 'true' }}
with:
name: socat-v${{ needs.build-x86.outputs.version }}
tag: socat-v${{ needs.build-x86.outputs.version }}
artifacts: "/tmp/releases/*/*"
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,166 @@
name: strace
on:
workflow_dispatch
jobs:
build-x86:
name: Build strace x86
runs-on: ubuntu-latest
container: muslcc/x86_64:i686-linux-musl
outputs:
version: ${{ steps.build_strace.outputs.PACKAGED_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build strace
id: build_strace
run: $GITHUB_WORKSPACE/build/targets/build_strace.sh x86
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_strace.outputs.PACKAGED_NAME }}
path: ${{ steps.build_strace.outputs.PACKAGED_NAME_PATH }}
build-x86_64:
name: Build strace x86_64
runs-on: ubuntu-latest
container: muslcc/x86_64:x86_64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Build strace
id: build_strace
run: $GITHUB_WORKSPACE/build/targets/build_strace.sh x86_64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_strace.outputs.PACKAGED_NAME }}
path: ${{ steps.build_strace.outputs.PACKAGED_NAME_PATH }}
build-armhf:
name: Build strace ARMHF
runs-on: ubuntu-latest
container: muslcc/x86_64:arm-linux-musleabihf
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build strace
id: build_strace
run: $GITHUB_WORKSPACE/build/targets/build_strace.sh armhf
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_strace.outputs.PACKAGED_NAME }}
path: ${{ steps.build_strace.outputs.PACKAGED_NAME_PATH }}
build-aarch64:
name: Build strace AARCH64
runs-on: ubuntu-latest
container: muslcc/x86_64:aarch64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Install testing dependencies
run: apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing yodl
- name: Install build compiler
run: /bin/sh -c "apk update && apk upgrade && apk add --no-cache curl rsync sudo util-linux && cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
env:
ARCH: x86_64-linux-musl
HOST: http://musl.cc/
TEMP: /tmp
USER: 0
- name: Build strace
id: build_strace
run: $GITHUB_WORKSPACE/build/targets/build_strace.sh aarch64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_strace.outputs.PACKAGED_NAME }}
path: ${{ steps.build_strace.outputs.PACKAGED_NAME_PATH }}
create-release:
name: Create strace Release
runs-on: ubuntu-latest
needs: [build-x86, build-x86_64, build-armhf, build-aarch64]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare Environment
run: mkdir /tmp/releases
- name: Download Artifacts
uses: actions/download-artifact@v2
with:
path: /tmp/releases
- name: List Artifacts
run: ls -laR /tmp/releases
- name: Tag Release
id: tag_release
run: |
set +e
if git rev-list "strace-v${{ needs.build-x86.outputs.version }}".. >/dev/null;then
echo "Tag for strace-v${{ needs.build-x86.outputs.version }} already exists. Skipping release creation."
echo "NEW_RELEASE=false" >> $GITHUB_OUTPUT
else
git tag "strace-v${{ needs.build-x86.outputs.version }}"
git push origin "strace-v${{ needs.build-x86.outputs.version }}"
echo "NEW_RELEASE=true" >> $GITHUB_OUTPUT
fi
- name: Create Release
uses: ncipollo/release-action@v1
if: ${{ steps.tag_release.outputs.NEW_RELEASE == 'true' }}
with:
name: strace-v${{ needs.build-x86.outputs.version }}
tag: strace-v${{ needs.build-x86.outputs.version }}
artifacts: "/tmp/releases/*/*"
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,129 @@
name: tcpdump
on:
workflow_dispatch
jobs:
build-x86:
name: Build tcpdump x86
runs-on: ubuntu-latest
container: muslcc/x86_64:i686-linux-musl
outputs:
version: ${{ steps.build_tcpdump.outputs.PACKAGED_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build tcpdump
id: build_tcpdump
run: $GITHUB_WORKSPACE/build/targets/build_tcpdump.sh x86
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME }}
path: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME_PATH }}
build-x86_64:
name: Build tcpdump x86_64
runs-on: ubuntu-latest
container: muslcc/x86_64:x86_64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build tcpdump
id: build_tcpdump
run: $GITHUB_WORKSPACE/build/targets/build_tcpdump.sh x86_64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME }}
path: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME_PATH }}
build-armhf:
name: Build tcpdump ARMHF
runs-on: ubuntu-latest
container: muslcc/x86_64:arm-linux-musleabihf
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build tcpdump
id: build_tcpdump
run: $GITHUB_WORKSPACE/build/targets/build_tcpdump.sh armhf
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME }}
path: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME_PATH }}
build-aarch64:
name: Build tcpdump AARCH64
runs-on: ubuntu-latest
container: muslcc/x86_64:aarch64-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh
- name: Build tcpdump
id: build_tcpdump
run: $GITHUB_WORKSPACE/build/targets/build_tcpdump.sh aarch64
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME }}
path: ${{ steps.build_tcpdump.outputs.PACKAGED_NAME_PATH }}
create-release:
name: Create tcpdump Release
runs-on: ubuntu-latest
needs: [build-x86, build-x86_64, build-armhf, build-aarch64]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare Environment
run: mkdir /tmp/releases
- name: Download Artifacts
uses: actions/download-artifact@v2
with:
path: /tmp/releases
- name: List Artifacts
run: ls -laR /tmp/releases
- name: Tag Release
run: |
set +e
if git rev-list "tcpdump-v${{ needs.build-x86.outputs.version }}".. >/dev/null;then
echo "Tag for tcpdump-v${{ needs.build-x86.outputs.version }} already exists. Skipping release creation."
echo "NEW_RELEASE=false" >> $GITHUB_OUTPUT
else
git tag "tcpdump-v${{ needs.build-x86.outputs.version }}"
git push origin "tcpdump-v${{ needs.build-x86.outputs.version }}"
echo "NEW_RELEASE=true" >> $GITHUB_OUTPUT
fi
- name: Create Release
uses: ncipollo/release-action@v1
if: ${{ steps.tag_release.outputs.NEW_RELEASE == 'true' }}
with:
name: tcpdump-v${{ needs.build-x86.outputs.version }}
tag: tcpdump-v${{ needs.build-x86.outputs.version }}
artifacts: "/tmp/releases/*/*"
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,49 +1,31 @@
# static-toolbox
This repository includes prebuild static binaries and build-recipes for various tools like Nmap.
This repository includes prebuild static binaries and build-recipes for various tools like Nmap and OpenSSH.
The Linux versions are compiled with the [musl-cross](https://github.com/takeshixx/musl-cross) toolchain and the [openssl-pm-snapshot](https://github.com/drwetter/openssl-pm-snapshot) fork of OpenSSL in order to support a wide range of SSL/TLS features (Warning: some of them are insecure!).
The Linux versions are compiled with the musl-cross toolchain and the openssl-pm-snapshot fork of OpenSSL in order to support a wide range of SSL/TLS features (Warning: some of them are insecure!).
## Release Packages
Compilation is done automatically with GitHub Actions. The binaries are uploaded to the [release section](https://github.com/ernw/static-toolbox/releases). The artifacts are also available in the artifacts of each GitHub Action. However, there are some limitations:
Precompiled and packaged releases are available in the tags/release section.
* Downloading of build artifacts in GitHub Ations currently requires a GitHub account
* Blobs in build artifacts are zipped by the GitHub frontend by default, even zip files themselves! Build artifact zips may contain other zip files.
* Build artifacts will expire after some time.
## Nmap
Therefore, it is recommended to download the binaries from the release section.
Precompiled versions of Nmap are available for the following operating systems/architectures:
## Building Status
* Linux x86 (nmap, ncat, nping)
* Linux x86_64 (nmap, ncat, nping)
* Linux armhf (nmap, ncat, nping)
* Linux aarch64 (nmap, ncat, nping)
* Windows x86 (nmap)
The following table shows the building status for the current toolset. The following architectures are currently supported:
## Socat
* x86
* x86_64
* ARMHF
* AARCH64
Precompiled versions of socat are available for the following operating systems/architectures:
* Linux x86
* Linux x86_64
## GDB
Precompiled versions of `gdb` and `gdbserver` are available for the following operating systems/architecturs:
* Linux x86
* Linux x86_64
* Linux armhf
* Linux aarch64
# 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.
| Tool | Status |
| ---- | ------ |
|[Nmap](https://github.com/ernw/static-toolbox/actions?query=workflow%3A%22Nmap%22)|![Nmap](https://github.com/ernw/static-toolbox/workflows/Nmap/badge.svg)|
|[OpenSSH](https://github.com/ernw/static-toolbox/actions?query=workflow%3A%22OpenSSH%22)|![OpenSSH](https://github.com/ernw/static-toolbox/workflows/OpenSSH/badge.svg)|
|[socat](https://github.com/ernw/static-toolbox/actions?query=workflow%3A%22socat%22)|![socat](https://github.com/ernw/static-toolbox/workflows/socat/badge.svg)|
|[GDB & gdbserver](https://github.com/ernw/static-toolbox/actions?query=workflow%3AGDB)|![GDB & gdbserver](https://github.com/ernw/static-toolbox/workflows/GDB%20&%20gdbserver/badge.svg)|
|[tcpdump](https://github.com/ernw/static-toolbox/actions?query=workflow%3A%22tcpdump%22)|![tcpdump](https://github.com/ernw/static-toolbox/workflows/tcpdump/badge.svg)|
|[strace](https://github.com/ernw/static-toolbox/actions?query=workflow%3A%22strace%22)|![strace](https://github.com/ernw/static-toolbox/workflows/strace/badge.svg)|

26
Vagrantfile vendored
View file

@ -1,26 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/artful64"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
vb.cpus = 4
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
apt install -y qemu
SHELL
end

4
build/01_init.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/sh
p=$(dirname "$0")
apk update && apk add bash
"$p"/install_deps_alpine.sh

View file

@ -0,0 +1,33 @@
#!/bin/bash
function die(){
echo "$1"
exit 1
}
if [ $# -ne 1 ];then
echo "Missing arch"
exit 1
fi
ARCH="${1}"
case $ARCH in
x86_64|i686|aarch64)
ARCH="${ARCH}-linux-musl"
;;
x86)
ARCH="i686-linux-musl"
;;
arm)
ARCH="arm-linux-musleabihf"
;;
*)
echo "Invalid arch ${ARCH}"
exit 1
;;
esac
HOST=http://musl.cc
echo "Fetching ${HOST}/${ARCH}-cross.tgz"
cd /
curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz || die "Failed to download build compiler package"
tar -xf ${ARCH}-cross.tgz || die "Failed to extract build compiler package"
rm ${ARCH}-cross.tgz || die "Failed to remove build compiler package"

31
build/install_deps_alpine.sh Executable file
View file

@ -0,0 +1,31 @@
#!/bin/sh
apk update
apk add \
bash \
git \
perl \
make \
cmake \
flex \
bison \
automake \
autoconf \
libtool \
qemu-arm \
qemu-aarch64 \
qemu-ppc \
qemu-ppc64 \
file \
texinfo \
zip \
wget \
coreutils \
gawk \
gmp-dev \
libunistring-dev \
libffi-dev \
lttng-ust-dev \
curl \
rsync \
util-linux \
patch

306
build/lib.sh Executable file
View file

@ -0,0 +1,306 @@
#!/bin/bash
GIT_OPENSSL="https://github.com/drwetter/openssl-pm-snapshot.git"
GIT_BINUTILS_GDB="https://github.com/bminor/binutils-gdb.git"
GIT_READLINE="https://git.savannah.gnu.org/git/readline.git"
GIT_NCURSES="https://github.com/ThomasDickey/ncurses-snapshots.git"
GIT_LIBPCAP="https://github.com/the-tcpdump-group/libpcap.git"
BUILD_DIRECTORY="/build"
OUTPUT_DIRECTORY="/output"
GCC_OPTS="-static -fPIC"
GXX_OPTS="-static -static-libstdc++ -fPIC"
TMP_DIR=$(mktemp -dt building_lib.XXXXXX)
trap "rm -rf ${TMP_DIR}" EXIT TERM
# The init function that has to
# be called before running any
# other function. Should be used
# to configure the building env.
init_lib(){
CURRENT_ARCH="$1"
if [ ! -d "$BUILD_DIRECTORY" ];then
mkdir -p $BUILD_DIRECTORY
fi
if [ ! -d "$OUTPUT_DIRECTORY" ];then
mkdir -p $OUTPUT_DIRECTORY
fi
}
# Set a HTTP proxy for fetching
# software via HTTP and Git.
set_http_proxy(){
proxy=$1
export http_proxy="$proxy"
export https_proxy="$proxy"
git config --global http.proxy "$proxy"
}
# Return a host triple for the
# selected architecture.
get_host_triple(){
local host
if [ "$CURRENT_ARCH" == "x86" ];then
host="i686-linux-musl"
elif [ "$CURRENT_ARCH" == "x86_64" ];then
host="x86_64-linux-musl"
elif [ "$CURRENT_ARCH" == "armhf" ];then
host="arm-linux-musleabihf"
elif [ "$CURRENT_ARCH" == "aarch64" ];then
host="aarch64-linux-musl"
elif [ "$CURRENT_ARCH" == "ppc32" ];then
host="powerpc-linux-musl"
elif [ "$CURRENT_ARCH" == "ppc64" ];then
host="powerpc64-linux-musl"
fi
echo $host
}
# Fetch and extract a resource via
# HTTP or clone a Git repository.
fetch(){
if [ "$#" -ne 3 ];then
echo "fetch() requires a source, destination and method."
echo "Example: fetch http://github.com/test.git /build/test git"
exit 1
fi
source=$1
shift
destination=$1
shift
method=$@
# TODO: check if $source is a valid URL
if [ -d "$destination" ] || [ -f "$destination" ];then
echo "Destination ${destination} already exists, skipping."
return
fi
if [ "${method,,}" == "http" ];then
cd /tmp || { echo "Could not cd to /tmp"; exit 1; }
headers=$(mktemp headers.XXXXXX)
curl -L -D "$headers" -sOJ "$source"
filename=$(cat "$headers" | grep -o -E 'filename=.*$' | sed -e 's/filename=//')
filename=$(trim "$filename")
extract "$filename" "$destination"
trap "rm -rf ${headers} /tmp/'${filename}'" EXIT TERM
elif [ "${method,,}" == "git" ];then
git clone "$source" "$destination"
else
echo "Invalid method ${method}"
exit 1
fi
}
# Extract an archive to a
# destination directory.
extract(){
if [ "$#" -ne 2 ];then
echo "extract() requires a source and destination."
exit 1
fi
source=$1
destination=$2
if [ ! -d "$destination" ];then
mkdir -p "$destination"
fi
if [ -f "$source" ] ; then
case $source in
*.tar.bz2) tar xjf "$source" -C "$destination" --strip-components 1 ;;
*.tar.gz) tar xzf "$source" -C "$destination" --strip-components 1 ;;
*.tar.xz) tar xvfJ "$source" -C "$destination" --strip-components 1 ;;
*.tar) tar xf "$source" -C "$destination" --strip-components 1 ;;
*.tbz2) tar xjf "$source" -C "$destination" --strip-components 1 ;;
*.tgz) tar xzf "$source" -C "$destination" --strip-components 1 ;;
*) echo "'${source}' cannot be extracted via extract()" ;;
esac
else
echo "'${source}' is not a valid file"
fi
}
# Remove leading and
# trailing whitespaces.
trim(){
local var="$*"
var="${var#"${var%%[![:space:]]*}"}"
var="${var%"${var##*[![:space:]]}"}"
echo -n "$var"
}
# Determine the version of
# a binary after building.
get_version(){
local cmd="$1"
if [ -z "$cmd" ];then
echo "Please provide a command to determine the version" >&2
echo "Example: /build/test --version | awk '{print \$2}'" >&2
exit 1
fi
local version="-"
if [ "$CURRENT_ARCH" == "armhf" ];then
if which qemu-arm 1>&2 2>/dev/null;then
cmd="qemu-arm ${cmd}"
version+=$(eval "$cmd")
else
echo "qemu-arm not found, skipping ARMHF version checks." >&2
fi
elif [ "$CURRENT_ARCH" == "aarch64" ];then
if which qemu-aarch64 1>&2 2>/dev/null;then
cmd="qemu-aarch64 ${cmd}"
version+=$(eval "$cmd")
else
echo "qemu-aarch64 not found, skipping AARCH64 version checks." >&2
fi
elif [ "$CURRENT_ARCH" == "ppc32" ];then
if which qemu-ppc 1>&2 2>/dev/null;then
cmd="qemu-ppc ${cmd}"
version+=$(eval "$cmd")
else
echo "qemu-ppc not found, skipping ppc32 version checks." >&2
fi
elif [ "$CURRENT_ARCH" == "ppc64" ];then
if which qemu-ppc64 1>&2 2>/dev/null;then
cmd="qemu-ppc64 ${cmd}"
version+=$(eval "$cmd")
else
echo "qemu-ppc64 not found, skipping ppc64 version checks." >&2
fi
else
version+=$(eval "$cmd")
fi
if [ "$version" == "-" ];then
version+="${CURRENT_ARCH}"
else
version+="-${CURRENT_ARCH}"
fi
echo "$version"
}
lib_create_tmp_dir(){
local tmp_dir=$(mktemp -dt -p ${TMP_DIR} tmpdir.XXXXXX)
echo "$tmp_dir"
}
lib_check_lib_arch(){
lib=$1
if [ ! -f "$lib" ];then
echo ""
return
fi
local tmp_dir=$(lib_create_tmp_dir)
cp "$lib" "$tmp_dir"
bash -c "cd ${tmp_dir}; ar x $(basename ${lib})"
local output=$(find "${tmp_dir}" -name "*.o" -exec file {} \;)
if echo "$output" | grep -q "Intel 80386";then
echo "Arch of ${lib} is x86" >&2
echo "x86"
elif echo "$output" | grep -q "x86-64";then
echo "Arch of ${lib} is x86_64" >&2
echo "x86_64"
elif echo "$output" | grep -q "ARM aarch64";then
echo "Arch of ${lib} is armhf" >&2
echo "armhf"
elif echo "$output" | grep -q "ARM,";then
echo "Arch of ${lib} is aarch64" >&2
echo "aarch64"
else
echo "Could not determine arch of library ${lib}" >&2
echo ""
fi
}
lib_build_openssl(){
local version=$1
fetch "$GIT_OPENSSL" "${BUILD_DIRECTORY}/openssl" git
cd "${BUILD_DIRECTORY}/openssl" || { echo "Cannot cd to ${BUILD_DIRECTORY}/openssl"; exit 1; }
if [ -n "$version" ];then
git checkout "$version" || echo "Version ${version} not found, continuing with master."
fi
if [ -f "${BUILD_DIRECTORY}/openssl/libssl.a" ];then
lib_arch=$(lib_check_lib_arch "${BUILD_DIRECTORY}/openssl/libssl.a")
if [ "$lib_arch" != "$CURRENT_ARCH" ];then
echo "Rebuild for current arch"
git clean -fdx || true
else
echo "[+] OpenSSL already available for current arch, skipping building"
return
fi
fi
local openssl_arch
if [ "${CURRENT_ARCH}" == "x86" ] ||
[ "${CURRENT_ARCH}" == "armhf" ];then
openssl_arch="linux-generic32"
elif [ "${CURRENT_ARCH}" == "x86_64" ];then
openssl_arch="linux-x86_64"
elif [ "${CURRENT_ARCH}" == "aarch64" ];then
openssl_arch="linux-generic64"
elif [ "${CURRENT_ARCH}" == "ppc32" ];then
openssl_arch="linux-ppc"
elif [ "${CURRENT_ARCH}" == "ppc64" ];then
openssl_arch="linux-ppc"
fi
CFLAGS="${GCC_OPTS}" \
./Configure \
no-shared \
"$openssl_arch"
make -j4
echo "[+] Finished building OpenSSL ${CURRENT_ARCH}"
}
lib_build_zlib(){
fetch "$GIT_BINUTILS_GDB" "${BUILD_DIRECTORY}/binutils-gdb" git
cd "${BUILD_DIRECTORY}/binutils-gdb/zlib" || { echo "Cannot cd to ${BUILD_DIRECTORY}/binutils-gdb/zlib"; exit 1; }
git clean -fdx
CC="gcc ${GCC_OPTS}" \
CXX="g++ ${GXX_OPTS}" \
/bin/bash ./configure \
--host="$(get_host_triple)" \
--enable-static
make -j4
echo "[+] Finished building zlib ${CURRENT_ARCH}"
}
lib_build_readline(){
fetch "$GIT_READLINE" "${BUILD_DIRECTORY}/readline" git
cd "${BUILD_DIRECTORY}/readline" || { echo "Cannot cd to ${BUILD_DIRECTORY}/readline"; exit 1; }
git clean -fdx
CFLAGS="${GCC_OPTS}" \
CXXFLAGS="${GXX_OPTS}" \
./configure \
--host="$(get_host_triple)" \
--disable-shared \
--enable-static
make -j4
echo "[+] Finished building readline ${CURRENT_ARCH}"
}
lib_build_ncurses(){
fetch "$GIT_NCURSES" "${BUILD_DIRECTORY}/ncurses" git
cd "${BUILD_DIRECTORY}/ncurses" || { echo "Cannot cd to ${BUILD_DIRECTORY}/ncurses"; exit 1; }
git clean -fdx
git checkout v6_2
CMD="CFLAGS=\"${GCC_OPTS}\" "
CMD+="CXXFLAGS=\"${GXX_OPTS}\" "
CMD+="./configure --host=$(get_host_triple) --disable-shared --enable-static"
if [ "$CURRENT_ARCH"!="x86" -a "$CURRENT_ARCH"!="x86_64" ];then
CMD+=" --with-build-cc=/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc"
fi
eval "$CMD"
make -j4
echo "[+] Finished building ncurses ${CURRENT_ARCH}"
}
lib_build_libpcap(){
fetch "$GIT_LIBPCAP" "${BUILD_DIRECTORY}/libpcap" git
cd "${BUILD_DIRECTORY}/libpcap" || { echo "Cannot cd to ${BUILD_DIRECTORY}/libpcap"; exit 1; }
git clean -fdx
git checkout libpcap-1.9.1
CFLAGS="${GCC_OPTS}" \
CXXFLAGS="${GXX_OPTS}" \
./configure \
--host="$(get_host_triple)" \
--with-pcap=linux \
--disable-shared \
--enable-static
make -j4
echo "[+] Finished building libpcap ${CURRENT_ARCH}"
}

59
build/targets/build_gdb.sh Executable file
View file

@ -0,0 +1,59 @@
#!/bin/bash
if [ -z "$GITHUB_WORKSPACE" ];then
echo "GITHUB_WORKSPACE environemnt variable not set!"
exit 1
fi
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
set -e
set -o pipefail
set -x
source $GITHUB_WORKSPACE/build/lib.sh
init_lib $1
build_gdb() {
fetch "$GIT_BINUTILS_GDB" "${BUILD_DIRECTORY}/binutils-gdb" git
cd "${BUILD_DIRECTORY}/binutils-gdb/" || { echo "Cannot cd to ${BUILD_DIRECTORY}/binutils-gdb/"; exit 1; }
git clean -fdx
git checkout gdb-12.1-release
CMD="CFLAGS=\"${GCC_OPTS}\" "
CMD+="CXXFLAGS=\"${GXX_OPTS}\" "
CMD+="LDFLAGS=\"-static\" "
if [ "$CURRENT_ARCH" != "x86_64" ];then
CMD+="CC_FOR_BUILD=\"/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc\" "
CMD+="CPP_FOR_BUILD=\"/x86_64-linux-musl-cross/bin/x86_64-linux-musl-g++\" "
fi
CMD+="${BUILD_DIRECTORY}/binutils-gdb/configure --build=x86_64-linux-musl --host=$(get_host_triple) "
CMD+="--disable-shared --enable-static --enable-gdbserver --disable-nls --disable-inprocess-agent"
mkdir -p "${BUILD_DIRECTORY}/gdb_build"
cd "${BUILD_DIRECTORY}/gdb_build/"
eval "$CMD"
make -j4
strip "${BUILD_DIRECTORY}/gdb_build/gdb/gdb" "${BUILD_DIRECTORY}/gdb_build/gdbserver/gdbserver"
}
main() {
build_gdb
if [ ! -f "${BUILD_DIRECTORY}/gdb_build/gdb/gdb" ] || \
[ ! -f "${BUILD_DIRECTORY}/gdb_build/gdbserver/gdbserver" ];then
echo "[-] Building GDB ${CURRENT_ARCH} failed!"
exit 1
fi
GDB_VERSION=$(get_version "${BUILD_DIRECTORY}/gdb_build/gdb/gdb --version |head -n1 |awk '{print \$4}'")
GDBSERVER_VERSION=$(get_version "${BUILD_DIRECTORY}/gdb_build/gdbserver/gdbserver --version |head -n1 |awk '{print \$4}'")
version_number=$(echo "$GDB_VERSION" | cut -d"-" -f2)
cp "${BUILD_DIRECTORY}/gdb_build/gdb/gdb" "${OUTPUT_DIRECTORY}/gdb${GDB_VERSION}"
cp "${BUILD_DIRECTORY}/gdb_build/gdbserver/gdbserver" "${OUTPUT_DIRECTORY}/gdbserver${GDBSERVER_VERSION}"
echo "[+] Finished building GDB ${CURRENT_ARCH}"
echo "PACKAGED_NAME=gdb${GDB_VERSION}" >> $GITHUB_OUTPUT
echo "PACKAGED_NAME_PATH=/output/*" >> $GITHUB_OUTPUT
echo "PACKAGED_VERSION=${version_number}" >> $GITHUB_OUTPUT
}
main

74
build/targets/build_nmap.sh Executable file
View file

@ -0,0 +1,74 @@
#!/bin/bash
if [ -z "$GITHUB_WORKSPACE" ];then
echo "GITHUB_WORKSPACE environemnt variable not set!"
exit 1
fi
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
set -e
set -o pipefail
set -x
source $GITHUB_WORKSPACE/build/lib.sh
init_lib $1
build_nmap() {
fetch "https://github.com/nmap/nmap.git" "${BUILD_DIRECTORY}/nmap" git
cd "${BUILD_DIRECTORY}/nmap"
git clean -fdx || true
# make sure we only build the static libraries
sed -i '/build-zlib: $(ZLIBDIR)\/Makefile/!b;n;c\\t@echo Compiling zlib; cd $(ZLIBDIR) && $(MAKE) static;' "${BUILD_DIRECTORY}/nmap/Makefile.in"
CC='gcc -static -fPIC' \
CXX='g++ -static -static-libstdc++ -fPIC' \
LD=ld \
LDFLAGS="-L/build/openssl" \
./configure \
--host="$(get_host_triple)" \
--without-ndiff \
--without-zenmap \
--without-nmap-update \
--without-libssh2 \
--with-pcap=linux \
--with-openssl="${BUILD_DIRECTORY}/openssl"
sed -i -e "s/shared\: /shared\: #/" "${BUILD_DIRECTORY}/nmap/libpcap/Makefile"
make
strip nmap ncat/ncat nping/nping
}
main() {
lib_build_openssl
build_nmap
if [ ! -f "${BUILD_DIRECTORY}/nmap/nmap" -o \
! -f "${BUILD_DIRECTORY}/nmap/ncat/ncat" -o \
! -f "${BUILD_DIRECTORY}/nmap/nping/nping" ];then
echo "[-] Building Nmap ${CURRENT_ARCH} failed!"
exit 1
fi
VERSION_CMD=$(get_version "${BUILD_DIRECTORY}/nmap/nmap --version")
NMAP_VERSION=$(echo "$VERSION_CMD" | grep "Nmap version" | awk '{print $3}')
if [ -n "$NMAP_VERSION" ];then
NMAP_VERSION="-${NMAP_VERSION}"
fi
cp "${BUILD_DIRECTORY}/nmap/nmap" "${OUTPUT_DIRECTORY}/nmap${NMAP_VERSION}"
cp "${BUILD_DIRECTORY}/nmap/ncat/ncat" "${OUTPUT_DIRECTORY}/ncat${NMAP_VERSION}"
cp "${BUILD_DIRECTORY}/nmap/nping/nping" "${OUTPUT_DIRECTORY}/nping${NMAP_VERSION}"
echo "[+] Finished building Nmap ${CURRENT_ARCH}"
NMAP_COMMIT=$(cd "${BUILD_DIRECTORY}/nmap/" && git rev-parse --short HEAD)
NMAP_DIR="${OUTPUT_DIRECTORY}/nmap-data${NMAP_VERSION}-${NMAP_COMMIT}"
if [ ! -d "$NMAP_DIR" ];then
echo "[-] ${NMAP_DIR} does not exist, creating it"
mkdir -p "${NMAP_DIR}"
fi
if [ -n "$(ls $NMAP_DIR)" ];then
echo "[+] Data directory is not empty"
exit
fi
cd "${BUILD_DIRECTORY}/nmap"
make install
cp -r /usr/local/share/nmap/* $NMAP_DIR
echo "[+] Copied data to Nmap data dir"
}
main

57
build/targets/build_openssh.sh Executable file
View file

@ -0,0 +1,57 @@
#!/bin/bash
if [ -z "$GITHUB_WORKSPACE" ];then
echo "GITHUB_WORKSPACE environemnt variable not set!"
exit 1
fi
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
set -e
set -o pipefail
set -x
source $GITHUB_WORKSPACE/build/lib.sh
init_lib $1
build_openssh() {
fetch "https://github.com/openssh/openssh-portable.git" "${BUILD_DIRECTORY}/openssh-portable" git
cd "${BUILD_DIRECTORY}/openssh-portable"
git checkout V_9_1_P1
git clean -fdx
autoreconf -i
CC="gcc ${GCC_OPTS}" \
CXX="g++ ${GXX_OPTS}" \
CXXFLAGS="-I${BUILD_DIRECTORY}/openssl -I${BUILD_DIRECTORY}/binutils-gdb/zlib" \
./configure \
--with-ssl-engine \
--with-ssl-dir="${BUILD_DIRECTORY}/openssl" \
--with-zlib="${BUILD_DIRECTORY}/binutils-gdb/zlib" \
--with-ldflags=-static \
--host="$(get_host_triple)"
make -j4
strip ssh sshd
}
main() {
lib_build_openssl
lib_build_zlib
build_openssh
if [ ! -f "${BUILD_DIRECTORY}/openssh-portable/ssh" -o \
! -f "${BUILD_DIRECTORY}/openssh-portable/sshd" ];then
echo "[-] Building OpenSSH ${CURRENT_ARCH} failed!"
exit 1
fi
OPENSSH_VERSION=$(get_version "${BUILD_DIRECTORY}/openssh-portable/ssh -V 2>&1 | awk '{print \$1}' | sed 's/,//g'")
version_number=$(echo "$OPENSSH_VERSION" | cut -d"-" -f2 | cut -d"_" -f2)
cp "${BUILD_DIRECTORY}/openssh-portable/ssh" "${OUTPUT_DIRECTORY}/ssh${OPENSSH_VERSION}"
cp "${BUILD_DIRECTORY}/openssh-portable/sshd" "${OUTPUT_DIRECTORY}/sshd${OPENSSH_VERSION}"
echo "[+] Finished building OpenSSH ${CURRENT_ARCH}"
OPENSSH_VERSION=$(echo $OPENSSH_VERSION | sed 's/-//')
echo "PACKAGED_NAME=${OPENSSH_VERSION} >> $GITHUB_OUTPUT"
echo "PACKAGED_NAME_PATH=/output/* >> $GITHUB_OUTPUT"
echo "PACKAGED_VERSION=${version_number} >> $GITHUB_OUTPUT"
}
main

49
build/targets/build_socat.sh Executable file
View file

@ -0,0 +1,49 @@
#!/bin/bash
if [ -z "$GITHUB_WORKSPACE" ];then
echo "GITHUB_WORKSPACE environemnt variable not set!"
exit 1
fi
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64|ppc32|ppc64]"
echo "Example: ${0} x86_64"
exit 1
fi
set -e
set -o pipefail
set -x
source $GITHUB_WORKSPACE/build/lib.sh
init_lib "$1"
build_socat() {
fetch "http://repo.or.cz/socat.git" "${BUILD_DIRECTORY}/socat" git
cd "${BUILD_DIRECTORY}/socat"
git clean -fdx
autoconf
CFLAGS="${GCC_OPTS}" \
CXXFLAGS="${GXX_OPTS}" \
CPPFLAGS="-I${BUILD_DIRECTORY} -I${BUILD_DIRECTORY}/openssl/include -DNETDB_INTERNAL=-1" \
LDFLAGS="-L${BUILD_DIRECTORY}/readline -L${BUILD_DIRECTORY}/ncurses/lib -L${BUILD_DIRECTORY}/openssl" \
./configure \
--host="$(get_host_triple)"
make -j4
strip socat
}
main() {
#sudo apt install yodl
lib_build_openssl
lib_build_ncurses
lib_build_readline
build_socat
local version
version=$(get_version "${BUILD_DIRECTORY}/socat/socat -V | grep 'socat version' | awk '{print \$3}'")
version_number=$(echo "$version" | cut -d"-" -f2)
cp "${BUILD_DIRECTORY}/socat/socat" "${OUTPUT_DIRECTORY}/socat${version}"
echo "[+] Finished building socat ${CURRENT_ARCH}"
echo "PACKAGED_NAME=socat${version}" >> $GITHUB_OUTPUT
echo "PACKAGED_NAME_PATH=${OUTPUT_DIRECTORY}/*" >> $GITHUB_OUTPUT
echo "PACKAGED_VERSION=${version_number}" >> $GITHUB_OUTPUT
}
main

48
build/targets/build_strace.sh Executable file
View file

@ -0,0 +1,48 @@
#!/bin/bash
set -e
set -x
set -o pipefail
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
source $GITHUB_WORKSPACE/build/lib.sh
init_lib "$1"
VERSION="v6.3"
build_strace() {
fetch "https://github.com/strace/strace" "${BUILD_DIRECTORY}/strace" git
cd "${BUILD_DIRECTORY}/strace"
git clean -fdx
git checkout "$VERSION"
./bootstrap
CMD="CFLAGS=\"${GCC_OPTS}\" "
CMD+="CXXFLAGS=\"${GXX_OPTS}\" "
CMD+="LDFLAGS=\"-static -pthread\" "
if [ "$CURRENT_ARCH" != "x86_64" ];then
CMD+="CC_FOR_BUILD=\"/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc\" "
CMD+="CPP_FOR_BUILD=\"/x86_64-linux-musl-cross/bin/x86_64-linux-musl-g++ -E\" "
CMD+="CXX_FOR_BUILD=\"/x86_64-linux-musl-cross/bin/x86_64-linux-musl-g++\" "
fi
CMD+="./configure --disable-mpers --host=$(get_host_triple)"
eval "$CMD"
make CFLAGS="-w" -j4
strip "${BUILD_DIRECTORY}/strace/src/strace"
}
main() {
build_strace
local version
version=$(get_version "${BUILD_DIRECTORY}/strace/src/strace -V 2>&1 | head -n1 | awk '{print \$4}'")
version_number=$(echo "$version" | cut -d"-" -f2)
cp "${BUILD_DIRECTORY}/strace/src/strace" "${OUTPUT_DIRECTORY}/strace${version}"
echo "[+] Finished building strace ${CURRENT_ARCH}"
echo "PACKAGED_NAME=strace${version}" >> $GITHUB_OUTPUT
echo "PACKAGED_NAME_PATH=${OUTPUT_DIRECTORY}/*" >> $GITHUB_OUTPUT
echo "PACKAGED_VERSION=${version_number}" >> $GITHUB_OUTPUT
}
main

47
build/targets/build_tcpdump.sh Executable file
View file

@ -0,0 +1,47 @@
#!/bin/bash
if [ -z "$GITHUB_WORKSPACE" ];then
echo "GITHUB_WORKSPACE environemnt variable not set!"
exit 1
fi
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
set -e
set -o pipefail
set -x
source $GITHUB_WORKSPACE/build/lib.sh
init_lib "$1"
build_tcpdump() {
fetch "https://github.com/the-tcpdump-group/tcpdump.git" "${BUILD_DIRECTORY}/tcpdump" git
cd "${BUILD_DIRECTORY}/tcpdump"
git clean -fdx
git checkout tcpdump-4.9.3
export LIBPCAP_PATH="${BUILD_DIRECTORY}/libpcap"
CFLAGS="${GCC_OPTS} -I${LIBPCAP_PATH} -L${LIBPCAP_PATH}" \
CXXFLAGS="${GXX_OPTS}" \
CPPFLAGS="-static" \
LDFLAGS="-static" \
./configure \
--host="$(get_host_triple)"
make -j4
strip tcpdump
}
main() {
lib_build_libpcap
build_tcpdump
local version
version=$(get_version "${BUILD_DIRECTORY}/tcpdump/tcpdump --version 2>&1 | head -n1 | awk '{print \$3}'")
version_number=$(echo "$version" | cut -d"-" -f2)
cp "${BUILD_DIRECTORY}/tcpdump/tcpdump" "${OUTPUT_DIRECTORY}/tcpdump${version}"
echo "[+] Finished building tcpdump ${CURRENT_ARCH}"
echo "PACKAGED_NAME=tcpdump${version}" >> $GITHUB_OUTPUT
echo "PACKAGED_NAME_PATH=${OUTPUT_DIRECTORY}/*" >> $GITHUB_OUTPUT
echo "PACKAGED_VERSION=${version_number}" >> $GITHUB_OUTPUT
}
main

View file

@ -0,0 +1,57 @@
#!/bin/bash
set -e
set -x
set -o pipefail
if [ "$#" -ne 1 ];then
echo "Usage: ${0} [x86|x86_64|armhf|aarch64]"
echo "Example: ${0} x86_64"
exit 1
fi
source $GITHUB_WORKSPACE/build/lib.sh
init_lib "$1"
build_autogen(){
fetch "http://ftp.gnu.org/gnu/autogen/rel5.16.2/autogen-5.16.2.tar.gz" "${BUILD_DIRECTORY}/autogen" http
cd "${BUILD_DIRECTORY}/autogen"
automake
CFLAGS="${GCC_OPTS}" \
CXXFLAGS="${GXX_OPTS}" \
CPPFLAGS="-static" \
LDFLAGS="-static" \
./configure \
--host="$(get_host_triple)"
make -j4
make install
}
build_tcpreplay() {
fetch "https://github.com/appneta/tcpreplay.git" "${BUILD_DIRECTORY}/tcpdump" git
cd "${BUILD_DIRECTORY}/tcpreplay"
git clean -fdx
git checkout v4.3.3
export LIBPCAP_PATH="${BUILD_DIRECTORY}/libpcap"
./autogen.sh
CFLAGS="${GCC_OPTS} -I${LIBPCAP_PATH} -L${LIBPCAP_PATH}" \
CXXFLAGS="${GXX_OPTS}" \
CPPFLAGS="-static" \
LDFLAGS="-static" \
./configure \
--host="$(get_host_triple)"
make -j4
strip tcpreplay
}
main() {
lib_build_libpcap
build_autogen
build_tcpreplay
local version
version=$(get_version "${BUILD_DIRECTORY}/tcpreplay/tcpreplay --version 2>&1 | head -n1 | awk '{print \$3}'")
cp "${BUILD_DIRECTORY}/tcpreplay/tcpreplay" "${OUTPUT_DIRECTORY}/tcpreplay"
echo "[+] Finished building tcpreplay ${CURRENT_ARCH}"
echo "PACKAGED_NAME=tcpreplay${version}"
echo "PACKAGED_NAME_PATH=${OUTPUT_DIRECTORY}/*"
}
main

65
package/targets/nmap/package.sh Executable file
View file

@ -0,0 +1,65 @@
#!/bin/bash
set -x
if [ $# -lt 2 ];then
echo "Usage: ${0} <output directory> <arch>" >&2
echo "Example: ${0} /output x86_64" >&2
exit 2
fi
output_dir=$1
arch=$2
tmp_dir=$(mktemp -dt packaging.XXXXXX)
trap exit_script EXIT TERM
if [ ! -d "$output_dir" ];then
echo "Invalid directory ${output_dir}"
exit 1
fi
exit_script(){
rm -rf "$tmp_dir"
}
echo "tmp_dir: ${tmp_dir}"
version=""
for f in $(ls "$output_dir");do
case "$f" in
nmap-data*)
mv "${output_dir}/${f}" "${tmp_dir}/data"
;;
nmap*)
mv "${output_dir}/${f}" "${tmp_dir}/nmap"
version=${f//nmap-/}
;;
nping*)
mv "${output_dir}/${f}" "${tmp_dir}/nping"
;;
ncat*)
mv "${output_dir}/${f}" "${tmp_dir}/ncat"
;;
*)
echo "This file should not be there: ${output_dir}/${f}"
;;
esac
done
if [ ! -d /packaged ];then
mkdir /packaged
fi
cp $GITHUB_WORKSPACE/package/targets/nmap/run-nmap.sh "$tmp_dir"
cd "$tmp_dir"
TARBALL="nmap-${version}-${arch}-portable.tar.gz"
tar czf "${output}/${TARBALL}" -C "$tmp_dir" .
cp "${output}/${TARBALL}" /packaged
echo "PACKAGED_TARBALL=${TARBALL}" >> $GITHUB_OUTPUT
echo "PACKAGED_TARBALL_PATH=/packaged/${TARBALL}" >> $GITHUB_OUTPUT
ZIP="nmap-${version}-${arch}-portable.zip"
zip -r -q "${output}/${ZIP}" .
cp "${output}/${ZIP}" /packaged
echo "PACKAGED_ZIP=${ZIP}" >> $GITHUB_OUTPUT
echo "PACKAGED_ZIP_PATH=/packaged/${ZIP}" >> $GITHUB_OUTPUT
echo "PACKAGED_VERSION=${version}" >> $GITHUB_OUTPUT

View file

@ -1,61 +0,0 @@
#!/bin/bash
if [ $# -lt 2 ];then
echo "Usage: ${0} <commit> <version?" >&2
echo "Example: ${0} b5bd185 7.70SVN" >&2
exit 2
fi
commit=$1
version=$2
architectures=(aarch64 armhf x86 x86_64)
tmp_dir=$(mktemp -dt packaging.XXXXXX)
trap exit_script EXIT TERM
exit_script(){
rm -rf "$tmp_dir"
}
echo "tmp_dir: ${tmp_dir}"
for arch in "${architectures[@]}";do
arch_dir="${tmp_dir}/nmap-${version}-${commit}-${arch}-portable"
mkdir -p "$arch_dir"
find ../bin/linux/${arch}/ -name "*-${commit}" -exec cp {} "${arch_dir}" \;
echo "version: ${version}"
ls -la "$arch_dir"
if [ -s "${arch_dir}/nmap-${version}-${commit}" ];then
mv "${arch_dir}/nmap-${version}-${commit}" "${arch_dir}/nmap"
mv "${arch_dir}/ncat-${version}-${commit}" "${arch_dir}/ncat"
# Note: Nping version starts with "0.".
mv "${arch_dir}/nping-0.${version}-${commit}" "${arch_dir}/nping"
elif [ -s "${arch_dir}/nmap-${commit}" ];then
mv "${arch_dir}/nmap-${commit}" "${arch_dir}/nmap"
mv "${arch_dir}/ncat-${commit}" "${arch_dir}/ncat"
mv "${arch_dir}/nping-${commit}" "${arch_dir}/nping"
else
echo "Nmap binaries for ${arch} not found!"
read
continue
fi
if [ -d "../data/nmap-data-${version}-${commit}" ];then
cp -r "../data/nmap-data-${version}-${commit}" "${arch_dir}/data"
elif [ -d "../data/nmap-data-0.${version}-${commit}" ];then
cp -r "../data/nmap-data-0.${version}-${commit}" "${arch_dir}/data"
else
echo "Nmap data directory not found!"
read
continue
fi
cp run-nmap.sh "$arch_dir"
tar czf "${tmp_dir}/nmap-${version}-${commit}-${arch}-portable.tar.gz" -C "$tmp_dir" "nmap-${version}-${commit}-${arch}-portable"
cd "$tmp_dir"
zip -r -q "${tmp_dir}/nmap-${version}-${commit}-${arch}-portable.zip" "nmap-${version}-${commit}-${arch}-portable"
cd -
rm -rf "$arch_dir"
done
echo "Finished packing. Got the following releases:"
ls -la "$tmp_dir"
echo "Ready to copy them. Press CTRL+C to arbort, RETURN to continue...."
read
cp "${tmp_dir}/"* ../packaged

View file

@ -0,0 +1,18 @@
--- /tmp/aarch64-linux-musl-cross/aarch64-linux-musl/include/asm/sigcontext.h
+++ /aarch64-linux-musl-cross/aarch64-linux-musl/include/asm/sigcontext.h
@@ -25,6 +25,7 @@
* Signal context structure - contains all info to do with the state
* before the signal handler was invoked.
*/
+#if false
struct sigcontext {
__u64 fault_address;
/* AArch64 registers */
@@ -127,6 +128,7 @@
__u16 vl;
__u16 __reserved[3];
};
+#endif
#endif /* !__ASSEMBLY__ */

View file

@ -1,28 +0,0 @@
# GDB
## Build Linux x86
```
sudo docker build -t static-toolbox-gdb-x86 .
sudo docker run -v $(pwd)/output:/output static-toolbox-gdb-x86
```
## Build Linux x86_64
```
sudo docker build -t static-toolbox-gdb-x86-64 .
sudo docker run -v $(pwd)/output:/output static-toolbox-gdb-x86-64
```
## Build Linux armhf
```
sudo docker build -t static-toolbox-gdb-armhf .
sudo docker run -v $(pwd)/output:/output static-toolbox-gdb-armhf
```
## Build Linux aarch64
```
sudo docker build -t static-toolbox-gdb-aarch64 .
sudo docker run -v $(pwd)/output:/output static-toolbox-gdb-aarch64

View file

@ -1,25 +0,0 @@
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 \
binutils-dev \
lib32z1-dev \
byacc \
flex \
texinfo \
qemu
RUN mkdir /build
ADD . /build
RUN chmod +x /build/build_aarch64.sh
CMD /build/build_aarch64.sh

View file

@ -1,146 +0,0 @@
#!/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/binutils-gdb" ];then
git clone https://github.com/bminor/binutils-gdb.git /build/binutils-gdb
fi
cd /build/binutils-gdb
git checkout binutils-2_30
cd -
}
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_gdb_aarch64() {
cd /build/binutils-gdb
git clean -fdx
make clean || true
cd /build/binutils-gdb/bfd
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
./configure \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi
make -j4
cd /build/binutils-gdb/readline
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
./configure \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/opcodes
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
./configure \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libiberty
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
./configure \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libdecnumber
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
./configure \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/zlib
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/binutils-gdb/gdb
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
LDFLAGS='-static' \
./configure \
--enable-static=yes \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi \
--disable-interprocess-agent
make -j4
cd /build/binutils-gdb/gdb/gdbserver/
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' \
LD=/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-ld \
LDFLAGS='-static' \
./configure \
--enable-static=yes \
--host=x86_64-linux-gnu \
--target=aarch64-none-linux-gnueabi \
--disable-interprocess-agent
make -j4
/opt/cross/aarch64-linux-musleabi/bin/aarch64-linux-musleabi-strip /build/binutils-gdb/gdb/gdb /build/binutils-gdb/gdb/gdbserver/gdbserver
}
build_aarch64(){
OUT_DIR=/output/`uname | tr 'A-Z' 'a-z'`/aarch64
mkdir -p $OUT_DIR
build_musl_aarch64
build_gdb_aarch64
GDB_VERSION=
GDBSERVER_VERSION=
if which qemu-aarch64 >/dev/null;then
GDB_VERSION="-$(qemu-aarch64 /build/binutils-gdb/gdb/gdb --version |head -n1 |awk '{print $4}')"
GDBSERVER_VERSION="-$(qemu-aarch64 /build/binutils-gdb/gdb/gdbserver/gdbserver --version |head -n1 |awk '{print $4}')"
fi
cp /build/binutils-gdb/gdb/gdb "${OUT_DIR}/gdb-aarch64${GDB_VERSION}"
cp /build/binutils-gdb/gdb/gdbserver/gdbserver "${OUT_DIR}/gdbserver-aarch64${GDBSERVER_VERSION}"
echo "[+] Finished building aarch64"
}
main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_aarch64
}
main

View file

@ -1,25 +0,0 @@
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 \
binutils-dev \
lib32z1-dev \
byacc \
flex \
texinfo \
qemu
RUN mkdir /build
ADD . /build
RUN chmod +x /build/build_armhf.sh
CMD /build/build_armhf.sh

View file

@ -1,148 +0,0 @@
#!/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/binutils-gdb" ];then
git clone https://github.com/bminor/binutils-gdb.git /build/binutils-gdb
fi
cd /build/binutils-gdb
git checkout binutils-2_30
cd -
}
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_gdb_armhf() {
cd /build/binutils-gdb
git clean -fdx
make clean || true
cd /build/binutils-gdb/bfd
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
./configure \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi
make -j4
cd /build/binutils-gdb/readline
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
./configure \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/opcodes
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
./configure \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libiberty
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
./configure \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libdecnumber
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
./configure \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/zlib
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/binutils-gdb/gdb
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
LDFLAGS='-static' \
./configure \
--enable-static=yes \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi \
--disable-interprocess-agent
make -j4
cd /build/binutils-gdb/gdb/gdbserver/
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' \
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
LDFLAGS='-static' \
./configure \
--host=x86_64-linux-gnu \
--target=arm-none-linux-gnueabi \
--enable-static=yes \
--disable-interprocess-agent
make -j4
/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-strip /build/binutils-gdb/gdb/gdb /build/binutils-gdb/gdb/gdbserver/gdbserver
}
build_armhf(){
OUT_DIR=/output/`uname | tr 'A-Z' 'a-z'`/armhf
mkdir -p $OUT_DIR
build_musl_armhf
build_gdb_armhf
GDB_VERSION=
GDBSERVER_VERSION=
if which qemu-arm >/dev/null;then
GDB_VERSION="-$(qemu-arm /build/binutils-gdb/gdb/gdb --version |head -n1 |awk '{print $4}')"
GDBSERVER_VERSION="-$(qemu-arm /build/binutils-gdb/gdb/gdbserver/gdbserver --version |head -n1 |awk '{print $4}')"
fi
cp /build/binutils-gdb/gdb/gdb "${OUT_DIR}/gdb-armhf${GDB_VERSION}"
cp /build/binutils-gdb/gdb/gdbserver/gdbserver "${OUT_DIR}/gdbserver-armhf${GDBSERVER_VERSION}"
echo "[+] Finished building armhf"
}
main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_armhf
}
main

View file

@ -1,24 +0,0 @@
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 \
binutils-dev \
lib32z1-dev \
byacc \
flex \
texinfo
RUN mkdir /build
ADD . /build
RUN chmod +x /build/build_x86.sh
CMD /build/build_x86.sh

View file

@ -1,134 +0,0 @@
#!/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/binutils-gdb" ];then
git clone https://github.com/bminor/binutils-gdb.git /build/binutils-gdb
fi
cd /build/binutils-gdb
git checkout binutils-2_30
cd -
}
build_musl_x86() {
cd /build/musl
git clean -fdx
echo "ARCH=i486" >> config.sh
echo "GCC_BUILTIN_PREREQS=yes" >> config.sh
./build.sh
echo "[+] Finished building musl-cross x86"
}
build_gdb_x86() {
cd /build/binutils-gdb
git clean -fdx
make clean || true
cd /build/binutils-gdb/bfd
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
LDFLAGS="" \
./configure
make -j4
cd /build/binutils-gdb/readline
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
./configure \
--target=i686-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/opcodes
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
./configure \
--target=i686-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libiberty
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
./configure \
--target=i686-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libdecnumber
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
./configure \
--target=i686-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/zlib
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld .
make zlibstatic
cd /build/binutils-gdb/gdb
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -m32 -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -m32 -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
./configure \
--enable-static=yes \
--host=x86_64-linux-gnu \
--target=i686-linux-gnu \
--disable-interprocess-agent
make -j4
cd /build/binutils-gdb/gdb/gdbserver/
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -m32 -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -m32 -static -static-libstdc++ -fPIC' \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
./configure \
--enable-static=yes \
--host=x86_64-linux-gnu \
--target=i686-linux-gnu \
--disable-interprocess-agent
make -j4
/opt/cross/i486-linux-musl/bin/i486-linux-musl-strip /build/binutils-gdb/gdb/gdb /build/binutils-gdb/gdb/gdbserver/gdbserver
}
build_x86(){
OUT_DIR=/output/`uname | tr 'A-Z' 'a-z'`/x86
mkdir -p $OUT_DIR
build_musl_x86
build_gdb_x86
GDB_VERSION="-$(/build/binutils-gdb/gdb/gdb --version |head -n1 |awk '{print $4}')"
GDBSERVER_VERSION="-$(/build/binutils-gdb/gdb/gdbserver/gdbserver --version |head -n1 |awk '{print $4}')"
cp /build/binutils-gdb/gdb/gdb "${OUT_DIR}/gdb-x86${GDB_VERSION}"
cp /build/binutils-gdb/gdb/gdbserver/gdbserver "${OUT_DIR}/gdbserver-x86${GDBSERVER_VERSION}"
echo "[+] Finished building x86"
}
main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_x86
}
main

View file

@ -1,24 +0,0 @@
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 \
binutils-dev \
lib32z1-dev \
byacc \
flex \
texinfo
RUN mkdir /build
ADD . /build
RUN chmod +x /build/build_x86_64.sh
CMD /build/build_x86_64.sh

View file

@ -1,132 +0,0 @@
#!/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/binutils-gdb" ];then
git clone https://github.com/bminor/binutils-gdb.git /build/binutils-gdb
fi
cd /build/binutils-gdb
git checkout binutils-2_30
cd -
}
build_musl_x86_64() {
cd /build/musl
git clean -fdx
./build.sh
echo "[+] Finished building musl-cross x86_64"
}
build_gdb_x86_64() {
cd /build/binutils-gdb
git clean -fdx
make clean || true
cd /build/binutils-gdb/bfd
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
LDFLAGS="" \
./configure
make -j4
cd /build/binutils-gdb/readline
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
./configure \
--target=x86_64-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/opcodes
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
./configure \
--target=x86_64-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libiberty
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
./configure \
--target=x86_64-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/libdecnumber
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
./configure \
--target=x86_64-linux-gnu \
--disable-shared \
--enable-static
make -j4
cd /build/binutils-gdb/zlib
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld
make zlibstatic
cd /build/binutils-gdb/gdb
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
LDFLAGS='-static' \
./configure \
--enable-static=yes \
--host=x86_64-linux-gnu \
--target=x86_64-linux-gnu \
--disable-interprocess-agent
make -j4
cd /build/binutils-gdb/gdb/gdbserver/
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
LDFLAGS='-static' \
./configure \
--enable-static=yes \
--disable-interprocess-agent
make -j4
/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-strip /build/binutils-gdb/gdb/gdb /build/binutils-gdb/gdb/gdbserver/gdbserver
}
build_x86_64(){
OUT_DIR_x86=/output/`uname | tr 'A-Z' 'a-z'`/x86_64
mkdir -p $OUT_DIR_x86
build_musl_x86_64
build_gdb_x86_64
GDB_VERSION="-$(/build/binutils-gdb/gdb/gdb --version |head -n1 |awk '{print $4}')"
GDBSERVER_VERSION="-$(/build/binutils-gdb/gdb/gdbserver/gdbserver --version |head -n1 |awk '{print $4}')"
cp /build/binutils-gdb/gdb/gdb "${OUT_DIR}/gdb-x86_64${GDB_VERSION}"
cp /build/binutils-gdb/gdb/gdbserver/gdbserver "${OUT_DIR}/gdbserver-x86_64${GDBSERVER_VERSION}"
echo "[+] Finished building x86_64"
}
main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_x86_64
}
main

View file

@ -1,37 +0,0 @@
# Nmap
## Build Linux x86
```
sudo docker build -t static-toolbox-nmap-x86 .
sudo docker run -v $(pwd)/output:/output static-toolbox-nmap-x86
```
## 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:
```
NMAPDIR=/tmp/nmap-data ./nmap
```

View file

@ -1,19 +0,0 @@
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

View file

@ -1,102 +0,0 @@
#!/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

View file

@ -1,19 +0,0 @@
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

View file

@ -1,104 +0,0 @@
#!/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

View file

@ -1,19 +0,0 @@
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_x86.sh
CMD /build/build_x86.sh

View file

@ -1,110 +0,0 @@
#!/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_x86() {
cd /build/musl
git clean -fdx
echo "ARCH=i486" >> config.sh
echo "GCC_BUILTIN_PREREQS=yes" >> config.sh
./build.sh
echo "[+] Finished building musl-cross x86"
}
build_openssl_x86() {
cd /build/openssl
git clean -fdx
make clean
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static' ./Configure no-shared -m32 linux-generic32
make -j4
echo "[+] Finished building OpenSSL x86"
}
build_nmap_x86() {
cd /build/nmap
git clean -fdx
make clean
cd /build/nmap/libz
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld .
make zlibstatic
cd /build/nmap
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/i486-linux-musl/bin/i486-linux-musl-g++ -static -static-libstdc++ -fPIC' \
CXXFLAGS="-I/build/nmap/libz" \
LD=/opt/cross/i486-linux-musl/bin/i486-linux-musl-ld \
LDFLAGS="-L/build/openssl -L/build/nmap/libz" \
./configure \
--without-ndiff \
--without-zenmap \
--without-nmap-update \
--without-libssh2 \
--with-pcap=linux \
--with-libz=/build/nmap/libz \
--with-openssl=/build/openssl
sed -i -e 's/shared\: /shared\: #/' libpcap/Makefile
sed -i 's|LIBS = |& libz/libz.a |' Makefile
make -j4
/opt/cross/i486-linux-musl/bin/i486-linux-musl-strip nmap ncat/ncat nping/nping
}
build_x86(){
OUT_DIR_x86=/output/`uname | tr 'A-Z' 'a-z'`/x86
mkdir -p $OUT_DIR_x86
build_musl_x86
build_openssl_x86
build_nmap_x86
if [ ! -f "/build/nmap/nmap" -o ! -f "/build/nmap/ncat/ncat" -o ! -f "/build/nmap/nping/nping" ];then
echo "[-] Building Nmap x86 failed!"
exit 1
fi
NMAP_VERSION=$(/build/nmap/nmap --version |grep "Nmap version" | awk '{print $3}')
NCAT_VERSION=$(/build/nmap/ncat/ncat --version 2>&1 |grep "Ncat: Version" | awk '{print $3}')
NPING_VERSION=$(/build/nmap/nping/nping --version |grep "Nping version" | awk '{print $3}')
cp /build/nmap/nmap "${OUT_DIR_x86}/nmap-${NMAP_VERSION}-${NMAP_COMMIT}"
cp /build/nmap/ncat/ncat "${OUT_DIR_x86}/ncat-${NCAT_VERSION}-${NMAP_COMMIT}"
cp /build/nmap/nping/nping "${OUT_DIR_x86}/nping-${NPING_VERSION}-${NMAP_COMMIT}"
echo "[+] Finished building x86"
}
main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_x86
NMAP_DIR=/output/nmap-data-${NPING_VERSION}-${NMAP_COMMIT}
if [ ! -d "$NMAP_DIR" ];then
echo "[-] ${NMAP_DIR} does not exist, creating it"
mkdir -p "${NMAP_DIR}"
fi
if [ -n "$(ls $NMAP_DIR)" ];then
echo "[+] Data directory is not empty"
exit
fi
cd /build/nmap
make install
cp -r /usr/local/share/nmap/* $NMAP_DIR
echo "[+] Copied data to data dir"
}
main

View file

@ -1,19 +0,0 @@
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_x86_64.sh
CMD /build/build_x86_64.sh

View file

@ -1,108 +0,0 @@
#!/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() {
cd /build/musl
git clean -fdx
./build.sh
echo "[+] Finished building musl-cross x86_64"
}
build_openssl() {
cd /build/openssl
git clean -fdx
make clean
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static' ./Configure no-shared linux-x86_64
make -j4
echo "[+] Finished building OpenSSL x86_64"
}
build_nmap() {
cd /build/nmap
git clean -fdx
make clean
cd /build/nmap/libz
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld .
make zlibstatic
cd /build/nmap
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static -fPIC' \
CXX='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-g++ -static -static-libstdc++ -fPIC' \
CXXFLAGS="-I/build/nmap/libz" \
LD=/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-ld \
LDFLAGS="-L/build/openssl -L/build/nmap/libz" \
./configure \
--without-ndiff \
--without-zenmap \
--without-nmap-update \
--without-libssh2 \
--with-pcap=linux \
--with-libz=/build/nmap/libz \
--with-openssl=/build/openssl
sed -i -e 's/shared\: /shared\: #/' libpcap/Makefile
sed -i 's|LIBS = |& libz/libz.a |' Makefile
make -j4
/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-strip nmap ncat/ncat nping/nping
}
build_x86_64(){
OUT_DIR_x86_64=/output/`uname | tr 'A-Z' 'a-z'`/x86_64
mkdir -p $OUT_DIR_x86_64
build_musl
build_openssl
build_nmap
if [ ! -f "/build/nmap/nmap" -o ! -f "/build/nmap/ncat/ncat" -o ! -f "/build/nmap/nping/nping" ];then
echo "[-] Building Nmap x86_64 failed!"
exit 1
fi
NMAP_VERSION=$(/build/nmap/nmap --version |grep "Nmap version" | awk '{print $3}')
NCAT_VERSION=$(/build/nmap/ncat/ncat --version 2>&1 |grep "Ncat: Version" | awk '{print $3}')
NPING_VERSION=$(/build/nmap/nping/nping --version |grep "Nping version" | awk '{print $3}')
cp /build/nmap/nmap "${OUT_DIR_x86_64}/nmap-${NMAP_VERSION}-${NMAP_COMMIT}"
cp /build/nmap/ncat/ncat "${OUT_DIR_x86_64}/ncat-${NCAT_VERSION}-${NMAP_COMMIT}"
cp /build/nmap/nping/nping "${OUT_DIR_x86_64}/nping-${NPING_VERSION}-${NMAP_COMMIT}"
echo "[+] Finished building x86_64"
}
main() {
if [ ! -d "/output" ];then
echo "[-] /output does not exist, creating it"
mkdir /output
fi
fetch
build_x86_64
NMAP_DIR=/output/nmap-data-${NPING_VERSION}-${NMAP_COMMIT}
if [ ! -d "$NMAP_DIR" ];then
echo "[-] ${NMAP_DIR} does not exist, creating it"
mkdir -p "${NMAP_DIR}"
fi
if [ -n "$(ls $NMAP_DIR)" ];then
echo "[+] Data directory is not empty"
exit
fi
cd /build/nmap
make install
cp -r /usr/local/share/nmap/* $NMAP_DIR
echo "[+] Copied data to data dir"
}
main

View file

@ -1,18 +0,0 @@
FROM ubuntu:zesty
RUN apt-get update && \
apt upgrade -yy && \
apt install -yy \
automake \
autoconf \
yodl \
build-essential \
libgmp-dev \
libmpfr-dev \
libmpc-dev \
wget \
git \
pkg-config \
python
RUN mkdir /build
ADD . /build
CMD /build/build.sh

View file

@ -1,139 +0,0 @@
#!/bin/bash
set -e
set -x
set -o pipefail
fetch(){
#git clone https://github.com/GregorR/musl-cross.git /build/musl
git clone https://github.com/takeshixx/musl-cross.git /build/musl
git clone https://github.com/drwetter/openssl-pm-snapshot.git /build/openssl
git clone https://git.savannah.gnu.org/git/readline.git /build/readline
git clone https://github.com/mirror/ncurses.git /build/ncurses
git clone http://repo.or.cz/socat.git /build/socat
}
build_musl() {
cd /build/musl
git clean -fdx
./build.sh
echo "[+] Finished building musl-cross x86_64"
}
build_musl_x86() {
cd /build/musl
git clean -fdx
echo "ARCH=i486" >> config.sh
echo "GCC_BUILTIN_PREREQS=yes" >> config.sh
./build.sh
echo "[+] Finished building musl-cross x86"
}
build_openssl() {
cd /build/openssl
git clean -fdx
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static' ./Configure no-shared linux-x86_64
make
echo "[+] Finished building OpenSSL x86_64"
}
build_openssl_x86() {
cd /build/openssl
git clean -fdx
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static' ./Configure no-shared -m32 linux-generic32
make
echo "[+] Finished building OpenSSL x86"
}
build_ncurses() {
cd /build/ncurses
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static' CFLAGS='-fPIC' ./configure \
--disable-shared \
--enable-static
echo "[+] Finished building ncurses x86_64"
}
build_ncurses_x86() {
cd /build/ncurses
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static' CFLAGS='-fPIC' ./configure \
--disable-shared \
--enable-static
echo "[+] Finished building ncurses x86"
}
build_readline() {
cd /build/readline
git clean -fdx
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static' CFLAGS='-fPIC' ./configure \
--disable-shared \
--enable-static
make -j4
echo "[+] Finished building readline x86_64"
}
build_readline_x86() {
cd /build/readline
git clean -fdx
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static' CFLAGS='-fPIC' ./configure \
--disable-shared \
--enable-static
make -j4
echo "[+] Finished building readline x86"
}
build_socat() {
cd /build/socat
git clean -fdx
autoconf
CC='/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -static' \
CFLAGS='-fPIC' \
CPPFLAGS='-I/build -I/build/openssl/include -DNETDB_INTERNAL=-1' \
LDFLAGS="-L/build/readline -L/build/ncurses/lib -L/build/openssl" \
./configure
make -j4
/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-strip socat
}
build_socat_x86() {
cd /build/socat
git clean -fdx
autoconf
CC='/opt/cross/i486-linux-musl/bin/i486-linux-musl-gcc -static' \
CFLAGS='-fPIC' \
CPPFLAGS='-I/build -I/build/openssl/include -DNETDB_INTERNAL=-1' \
LDFLAGS="-L/build/readline -L/build/ncurses/lib -L/build/openssl" \
./configure
make -j4
/opt/cross/i486-linux-musl/bin/i486-linux-musl-strip socat
}
main() {
if [ ! -d /output ];then
echo "[-] /output does not exist"
exit
fi
fetch
build_musl
build_openssl
build_ncurses
build_readline
build_socat
OUT_DIR=/output/`uname | tr 'A-Z' 'a-z'`/x86_64
mkdir -p $OUT_DIR
cp /build/socat/socat $OUT_DIR/
echo "[+] Finished building socat x86_64"
build_musl_x86
build_openssl_x86
build_ncurses_x86
build_readline_x86
build_socat_x86
OUT_DIR=/output/`uname | tr 'A-Z' 'a-z'`/x86
mkdir -p $OUT_DIR
cp /build/socat/socat $OUT_DIR/
echo "[+] Finished building socat x86"
}
main