├── .gitignore ├── README.md ├── TODO ├── afl └── install ├── bin └── manage-tools ├── binwalk └── install ├── checksec └── install ├── cribdrag └── install ├── crosstool ├── build-sample.sh ├── config └── install ├── dirs3arch └── install ├── firmware-mod-kit └── install ├── gdb ├── install └── install-root ├── hash-identifier └── install ├── hashpump-partialhash └── install ├── hashpump └── install ├── littleblackbox ├── install └── install-root ├── peda └── install ├── pemcrack └── install ├── preeny └── install ├── pwntools ├── install └── install-root ├── python-paddingoracle └── install ├── python-pin └── install ├── qemu └── install ├── qira └── install ├── radare2 └── install ├── reveng └── install ├── shellnoob └── install ├── sqlmap ├── install └── install-root ├── sslsplit ├── install └── install-root ├── taintgrind └── install ├── testdisk └── install ├── villoc └── install ├── xortool ├── install └── uninstall └── xrop └── install /.gitignore: -------------------------------------------------------------------------------- 1 | */*/ 2 | bin/* 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ctf-tools 2 | 3 | This is a collection of setup scripts to create an install of various security research tools. 4 | Of course, this isn't a hard problem, but it's really nice to have them in one place that's easily deployable to new machines and so forth. 5 | To use, do: 6 | 7 | ```bash 8 | # set up the path 9 | /path/to/ctf-tools/manage-tools setup 10 | source ~/.bashrc 11 | 12 | # list the available tools 13 | manage-tools list 14 | 15 | # install gdb, allowing it to try to sudo install dependencies 16 | manage-tools -s install gdb 17 | 18 | # install pwntools, but don't let it sudo install dependencies 19 | manage-tools install pwntools 20 | 21 | # uninstall gdb 22 | manage-tools uninstall gdb 23 | 24 | # uninstall all tools 25 | manage-tools uninstall all 26 | ``` 27 | 28 | Where possible, the tools keep the installs very self-contained (i.e., in to tool/ directory), and most uninstalls are just calls to `git clean` (**NOTE**, this is **NOT** careful; everything under the tool directory, including whatever you were working on, is blown away during an uninstall). 29 | To support python dependencies, however, make sure to create a virtualenv before installing and using tools (i.e., `mkvirtualenv ctf`). 30 | Installers for the following tools are included: 31 | 32 | | Category | Tool | Description | 33 | |----------|------|-------------| 34 | | binary | [afl](http://lcamtuf.coredump.cx/afl/) | State-of-the-art fuzzer. | 35 | | binary | [checksec](https://github.com/slimm609/checksec.sh) | Check binary hardening settings. | 36 | | binary | [crosstool-ng](http://crosstool-ng.org/) | Cross-compilers and cross-architecture tools. | 37 | | binary | [gdb](http://www.gnu.org/software/gdb/) | Up-to-date gdb with python2 bindings. | 38 | | binary | [peda](https://github.com/longld/peda) | Enhanced environment for gdb. | 39 | | binary | [preeny](https://github.com/zardus/preeny) | A collection of helpful preloads (compiled for many architectures!). | 40 | | binary | [villoc](https://github.com/wapiflapi/villoc) | Visualization of heap operations. | 41 | | binary | [qemu](http://qemu.org) | Latest version of qemu! | 42 | | binary | [pwntools](https://github.com/Gallopsled/pwntools) | Useful CTF utilities. | 43 | | binary | [python-pin](https://github.com/blankwall/Python_Pin) | Python bindings for pin. | 44 | | binary | [radare2](http://www.radare.org/) | Some crazy thing crowell likes. | 45 | | binary | [shellnoob](https://github.com/reyammer/shellnoob) | Shellcode writing helper. | 46 | | binary | [taintgrind](https://github.com/wmkhoo/taintgrind) | A valgrind taint analysis tool. | 47 | | binary | [qira](http://qira.me) | Parallel, timeless debugger. | 48 | | binary | [xrop](https://github.com/acama/xrop) | Gadget finder. | 49 | | forensics | [binwalk](https://github.com/devttys0/binwalk.git) | Firmware (and arbitrary file) analysis tool. | 50 | | forensics | [firmware-mod-kit](https://code.google.com/p/firmware-mod-kit/) | Tools for firmware packing/unpacking. | 51 | | forensics | [testdisk](http://www.cgsecurity.org/wiki/TestDisk) | Testdisk and photorec for file recovery. | 52 | | crypto | [cribdrag](https://github.com/SpiderLabs/cribdrag) | Interactive crib dragging tool (for crypto). | 53 | | crypto | [hashpump](https://github.com/bwall/HashPump) | A tool for performing hash length extension attaacks. | 54 | | crypto | [hashpump-partialhash](https://github.com/mheistermann/HashPump-partialhash) | Hashpump, supporting partially-unknown hashes. | 55 | | crypto | [hash-identifier](https://code.google.com/p/hash-identifier/source/checkout) | Simple hash algorithm identifier. | 56 | | crypto | [littleblackbox](https://github.com/devttys0/littleblackbox) | Database of private SSL/SSH keys for embedded devices. | 57 | | crypto | [pemcrack](https://github.com/robertdavidgraham/pemcrack) | SSL PEM file cracker. | 58 | | crypto | [reveng](http://reveng.sourceforge.net/) | CRC finder. | 59 | | crypto | [sslsplit](https://github.com/droe/sslsplit) | SSL/TLS MITM. | 60 | | crypto | [python-paddingoracle](https://github.com/mwielgoszewski/python-paddingoracle) | XOR analysis tool. | 61 | | crypto | [xortool](https://github.com/hellman/xortool) | XOR analysis tool. | 62 | | web | [dirs3arch](https://github.com/maurosoria/dirs3arch) | Web path scanner. | 63 | | web | [sqlmap](http://sqlmap.org/) | SQL injection automation engine. | 64 | 65 | ## Adding Tools 66 | 67 | To add a tool (say, named *toolname*), do the following: 68 | 69 | 1. Create a `toolname` directory. 70 | 2. Create an `install` script. 71 | 3. (optional) if special uninstall steps are reuired, create an `uninstall` script. 72 | 73 | ### Install Scripts 74 | 75 | The install script will be run with `$PWD` being `toolname`. It should install the tool into this directory, in as contained a manner as possible. 76 | Ideally, full uninstallation should be possible with a `git clean`. 77 | 78 | The install script should create a `bin` directory and put its executables there. 79 | These executables will be automatically linked into the main `bin` directory for the repo. 80 | They could be launched from any directory, so don't make assumptions about the location of `$0`! 81 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | xrop -- doesn't build 2 | http://www.mscs.dal.ca/~selinger/md5collision/ 3 | -------------------------------------------------------------------------------- /afl/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # AFL 5 | # 6 | 7 | curl http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz | tar xvz 8 | mv afl-* afl 9 | cd afl 10 | make -j $(nproc) 11 | cd qemu_mode 12 | ./build_qemu_support.sh 13 | cd ../../ 14 | 15 | mkdir bin 16 | cd bin 17 | ln -s ../afl/{afl-as,afl-cmin,afl-fuzz,afl-gcc,afl-gotcpu,afl-plot,afl-qemu-trace,afl-showmap,afl-tmin,afl-whatsup} . 18 | cd .. 19 | 20 | # 21 | # AFL-utils 22 | # 23 | 24 | #git clone https://github.com/rc0r/afl-utils 25 | #sed -i -e "s/env python/env python3/" afl-utils/{afl_multikill,afl_multicore,afl_vcrash,afl_collect} 26 | #cd bin 27 | #ln -s ../afl-utils/afl_* . 28 | #cd .. 29 | -------------------------------------------------------------------------------- /bin/manage-tools: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ALLOW_SUDO=0 4 | while [[ $1 == -* ]] 5 | do 6 | case $1 in 7 | -h) 8 | cat <> ~/.bashrc 33 | ;; 34 | list) 35 | for t in * 36 | do 37 | [ ! -e "$t/install" ] && continue 38 | echo $t 39 | done 40 | ;; 41 | bin) 42 | if [ -n "$TOOL" ] 43 | then 44 | cd bin 45 | ln -sf ../$TOOL/bin/* . 46 | echo "TOOLS | $TOOL | bin symlinks updated" 47 | cd .. 48 | else 49 | for t in $(bin/manage-tools list) 50 | do 51 | bin/manage-tools bin $t 52 | done 53 | fi 54 | 55 | ;; 56 | install) 57 | cd $TOOL 58 | 59 | echo "TOOLS | $TOOL | starting install" 60 | [ -x ./install-root -a "$ALLOW_SUDO" -eq 1 ] && sudo ./install-root 61 | ./install 62 | echo "TOOLS | $TOOL | install finished" 63 | 64 | cd .. 65 | $0 bin $TOOL 66 | ;; 67 | uninstall) 68 | cd $TOOL 69 | 70 | [ -x ./uninstall ] && ./uninstall 71 | git clean -dffx . 72 | echo "TOOLS | $TOOL | uninstall finished" 73 | 74 | cd .. 75 | ;; 76 | *) 77 | echo "TOOLS | ERROR | unknown action $ACTION" 78 | ;; 79 | esac 80 | -------------------------------------------------------------------------------- /binwalk/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/devttys0/binwalk.git 4 | pip install -e binwalk 5 | 6 | mkdir -p bin 7 | ln -s $VIRTUAL_ENV/bin/binwalk bin 8 | -------------------------------------------------------------------------------- /checksec/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/slimm609/checksec.sh 4 | mkdir bin 5 | cd bin 6 | ln -s ../checksec.sh/checksec . 7 | -------------------------------------------------------------------------------- /cribdrag/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/SpiderLabs/cribdrag 4 | 5 | mkdir bin 6 | cd bin 7 | ln -s ../cribdrag/* . 8 | cd .. 9 | -------------------------------------------------------------------------------- /crosstool/build-sample.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | sample=$1 4 | 5 | [ -e ../x-tools/$sample ] && echo "Already built: $sample" && exit 6 | HOME=$(dirname $PWD) CT_PREFIX=$(dirname $PWD)/toolchains ./ct-ng $sample 7 | yes '' | HOME=$(dirname $PWD) CT_PREFIX=$(dirname $PWD)/toolchains ./ct-ng build.$(nproc) 8 | rm -rf .build/$sample 9 | -------------------------------------------------------------------------------- /crosstool/config: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated make config: don't edit 3 | # crosstool-NG 1.20.0 Configuration 4 | # Thu May 7 05:26:28 2015 5 | # 6 | CT_CONFIGURE_has_make381=y 7 | CT_CONFIGURE_has_xz=y 8 | CT_CONFIGURE_has_svn=y 9 | CT_MODULES=y 10 | 11 | # 12 | # Paths and misc options 13 | # 14 | 15 | # 16 | # crosstool-NG behavior 17 | # 18 | # CT_OBSOLETE is not set 19 | # CT_EXPERIMENTAL is not set 20 | # CT_DEBUG_CT is not set 21 | 22 | # 23 | # Paths 24 | # 25 | CT_LOCAL_TARBALLS_DIR="" 26 | CT_WORK_DIR="${CT_TOP_DIR}/.build" 27 | CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}" 28 | CT_INSTALL_DIR="${CT_PREFIX_DIR}" 29 | CT_RM_RF_PREFIX_DIR=y 30 | CT_REMOVE_DOCS=y 31 | CT_INSTALL_DIR_RO=y 32 | CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES=y 33 | 34 | # 35 | # Downloading 36 | # 37 | # CT_FORBID_DOWNLOAD is not set 38 | # CT_FORCE_DOWNLOAD is not set 39 | CT_CONNECT_TIMEOUT=10 40 | # CT_ONLY_DOWNLOAD is not set 41 | # CT_USE_MIRROR is not set 42 | 43 | # 44 | # Extracting 45 | # 46 | # CT_FORCE_EXTRACT is not set 47 | CT_OVERIDE_CONFIG_GUESS_SUB=y 48 | # CT_ONLY_EXTRACT is not set 49 | CT_PATCH_BUNDLED=y 50 | # CT_PATCH_LOCAL is not set 51 | # CT_PATCH_BUNDLED_LOCAL is not set 52 | # CT_PATCH_LOCAL_BUNDLED is not set 53 | # CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set 54 | # CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set 55 | # CT_PATCH_NONE is not set 56 | CT_PATCH_ORDER="bundled" 57 | 58 | # 59 | # Build behavior 60 | # 61 | CT_PARALLEL_JOBS=0 62 | CT_LOAD="" 63 | CT_USE_PIPES=y 64 | CT_EXTRA_CFLAGS_FOR_BUILD="" 65 | CT_EXTRA_LDFLAGS_FOR_BUILD="" 66 | CT_EXTRA_CFLAGS_FOR_HOST="" 67 | CT_EXTRA_LDFLAGS_FOR_HOST="" 68 | # CT_CONFIG_SHELL_SH is not set 69 | # CT_CONFIG_SHELL_ASH is not set 70 | CT_CONFIG_SHELL_BASH=y 71 | # CT_CONFIG_SHELL_CUSTOM is not set 72 | CT_CONFIG_SHELL="${bash}" 73 | 74 | # 75 | # Logging 76 | # 77 | # CT_LOG_ERROR is not set 78 | # CT_LOG_WARN is not set 79 | CT_LOG_INFO=y 80 | # CT_LOG_EXTRA is not set 81 | # CT_LOG_ALL is not set 82 | # CT_LOG_DEBUG is not set 83 | CT_LOG_LEVEL_MAX="INFO" 84 | # CT_LOG_SEE_TOOLS_WARN is not set 85 | CT_LOG_PROGRESS_BAR=y 86 | CT_LOG_TO_FILE=y 87 | CT_LOG_FILE_COMPRESS=y 88 | 89 | # 90 | # Target options 91 | # 92 | CT_ARCH="alpha" 93 | CT_ARCH_SUPPORTS_32=y 94 | CT_ARCH_SUPPORTS_WITH_CPU=y 95 | CT_ARCH_SUPPORTS_WITH_TUNE=y 96 | CT_ARCH_DEFAULT_32=y 97 | CT_ARCH_CPU="" 98 | CT_ARCH_TUNE="" 99 | CT_ARCH_32=y 100 | CT_ARCH_BITNESS=32 101 | CT_TARGET_CFLAGS="" 102 | CT_TARGET_LDFLAGS="" 103 | CT_ARCH_alpha=y 104 | # CT_ARCH_arm is not set 105 | # CT_ARCH_avr32 is not set 106 | # CT_ARCH_blackfin is not set 107 | # CT_ARCH_m68k is not set 108 | # CT_ARCH_mips is not set 109 | # CT_ARCH_nios2 is not set 110 | # CT_ARCH_powerpc is not set 111 | # CT_ARCH_s390 is not set 112 | # CT_ARCH_sh is not set 113 | # CT_ARCH_sparc is not set 114 | # CT_ARCH_x86 is not set 115 | CT_ARCH_alpha_AVAILABLE=y 116 | CT_ARCH_arm_AVAILABLE=y 117 | CT_ARCH_avr32_AVAILABLE=y 118 | CT_ARCH_blackfin_AVAILABLE=y 119 | CT_ARCH_m68k_AVAILABLE=y 120 | CT_ARCH_microblaze_AVAILABLE=y 121 | CT_ARCH_mips_AVAILABLE=y 122 | CT_ARCH_nios2_AVAILABLE=y 123 | CT_ARCH_powerpc_AVAILABLE=y 124 | CT_ARCH_s390_AVAILABLE=y 125 | CT_ARCH_sh_AVAILABLE=y 126 | CT_ARCH_sparc_AVAILABLE=y 127 | CT_ARCH_x86_AVAILABLE=y 128 | CT_ARCH_SUFFIX="" 129 | 130 | # 131 | # Generic target options 132 | # 133 | # CT_MULTILIB is not set 134 | CT_ARCH_USE_MMU=y 135 | 136 | # 137 | # Target optimisations 138 | # 139 | CT_ARCH_FLOAT="" 140 | 141 | # 142 | # alpha other options 143 | # 144 | CT_ARCH_ALPHA_EV4=y 145 | # CT_ARCH_ALPHA_EV45 is not set 146 | # CT_ARCH_ALPHA_EV5 is not set 147 | # CT_ARCH_ALPHA_EV56 is not set 148 | # CT_ARCH_ALPHA_EV6 is not set 149 | # CT_ARCH_ALPHA_EV67 is not set 150 | CT_ARCH_ALPHA_VARIANT="ev4" 151 | 152 | # 153 | # Toolchain options 154 | # 155 | 156 | # 157 | # General toolchain options 158 | # 159 | CT_FORCE_SYSROOT=y 160 | CT_USE_SYSROOT=y 161 | CT_SYSROOT_NAME="sysroot" 162 | CT_SYSROOT_DIR_PREFIX="" 163 | CT_WANTS_STATIC_LINK=y 164 | # CT_STATIC_TOOLCHAIN is not set 165 | CT_TOOLCHAIN_PKGVERSION="" 166 | CT_TOOLCHAIN_BUGURL="" 167 | 168 | # 169 | # Tuple completion and aliasing 170 | # 171 | CT_TARGET_VENDOR="unknown" 172 | CT_TARGET_ALIAS_SED_EXPR="" 173 | CT_TARGET_ALIAS="" 174 | 175 | # 176 | # Toolchain type 177 | # 178 | CT_CROSS=y 179 | # CT_CANADIAN is not set 180 | CT_TOOLCHAIN_TYPE="cross" 181 | 182 | # 183 | # Build system 184 | # 185 | CT_BUILD="" 186 | CT_BUILD_PREFIX="" 187 | CT_BUILD_SUFFIX="" 188 | 189 | # 190 | # Misc options 191 | # 192 | # CT_TOOLCHAIN_ENABLE_NLS is not set 193 | 194 | # 195 | # Operating System 196 | # 197 | CT_BARE_METAL=y 198 | CT_KERNEL="bare-metal" 199 | CT_KERNEL_bare_metal=y 200 | # CT_KERNEL_linux is not set 201 | CT_KERNEL_bare_metal_AVAILABLE=y 202 | CT_KERNEL_linux_AVAILABLE=y 203 | CT_KERNEL_windows_AVAILABLE=y 204 | 205 | # 206 | # Common kernel options 207 | # 208 | 209 | # 210 | # Binary utilities 211 | # 212 | CT_ARCH_BINFMT_ELF=y 213 | CT_BINUTILS="binutils" 214 | CT_BINUTILS_binutils=y 215 | 216 | # 217 | # GNU binutils 218 | # 219 | # CT_CC_BINUTILS_SHOW_LINARO is not set 220 | CT_BINUTILS_V_2_25=y 221 | # CT_BINUTILS_V_2_24 is not set 222 | # CT_BINUTILS_V_2_23_2 is not set 223 | # CT_BINUTILS_V_2_23_1 is not set 224 | # CT_BINUTILS_V_2_22 is not set 225 | # CT_BINUTILS_V_2_21_53 is not set 226 | # CT_BINUTILS_V_2_21_1a is not set 227 | # CT_BINUTILS_V_2_20_1a is not set 228 | # CT_BINUTILS_V_2_19_1a is not set 229 | # CT_BINUTILS_V_2_18a is not set 230 | CT_BINUTILS_VERSION="2.25" 231 | CT_BINUTILS_2_25_or_later=y 232 | CT_BINUTILS_2_24_or_later=y 233 | CT_BINUTILS_2_23_or_later=y 234 | CT_BINUTILS_2_22_or_later=y 235 | CT_BINUTILS_2_21_or_later=y 236 | CT_BINUTILS_2_20_or_later=y 237 | CT_BINUTILS_2_19_or_later=y 238 | CT_BINUTILS_2_18_or_later=y 239 | CT_BINUTILS_HAS_HASH_STYLE=y 240 | CT_BINUTILS_HAS_GOLD=y 241 | CT_BINUTILS_HAS_PLUGINS=y 242 | CT_BINUTILS_HAS_PKGVERSION_BUGURL=y 243 | CT_BINUTILS_LINKER_LD=y 244 | CT_BINUTILS_LINKERS_LIST="ld" 245 | CT_BINUTILS_LINKER_DEFAULT="bfd" 246 | # CT_BINUTILS_PLUGINS is not set 247 | CT_BINUTILS_EXTRA_CONFIG_ARRAY="" 248 | 249 | # 250 | # binutils other options 251 | # 252 | 253 | # 254 | # C-library 255 | # 256 | CT_LIBC="newlib" 257 | CT_LIBC_VERSION="2.2.0" 258 | CT_LIBC_newlib=y 259 | # CT_LIBC_none is not set 260 | CT_LIBC_glibc_AVAILABLE=y 261 | CT_THREADS="none" 262 | CT_LIBC_mingw_AVAILABLE=y 263 | CT_LIBC_musl_AVAILABLE=y 264 | CT_LIBC_newlib_AVAILABLE=y 265 | # CT_CC_NEWLIB_SHOW_LINARO is not set 266 | CT_LIBC_NEWLIB_V_2_2_0=y 267 | # CT_LIBC_NEWLIB_V_2_1_0 is not set 268 | # CT_LIBC_NEWLIB_V_2_0_0 is not set 269 | # CT_LIBC_NEWLIB_V_1_20_0 is not set 270 | # CT_LIBC_NEWLIB_V_1_19_0 is not set 271 | # CT_LIBC_NEWLIB_V_1_18_0 is not set 272 | # CT_LIBC_NEWLIB_V_1_17_0 is not set 273 | 274 | # 275 | # Architecture specific options 276 | # 277 | CT_LIBC_none_AVAILABLE=y 278 | CT_LIBC_uClibc_AVAILABLE=y 279 | CT_LIBC_SUPPORT_THREADS_NONE=y 280 | 281 | # 282 | # Common C library options 283 | # 284 | CT_THREADS_NONE=y 285 | 286 | # 287 | # newlib other options 288 | # 289 | # CT_LIBC_NEWLIB_IO_C99FMT is not set 290 | # CT_LIBC_NEWLIB_IO_LL is not set 291 | # CT_LIBC_NEWLIB_IO_FLOAT is not set 292 | # CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS is not set 293 | CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE=y 294 | CT_LIBC_NEWLIB_EXTRA_CONFIG_ARRAY="" 295 | 296 | # 297 | # C compiler 298 | # 299 | CT_CC="gcc" 300 | CT_CC_VERSION="5.1.0" 301 | CT_CC_CORE_PASS_2_NEEDED=y 302 | CT_CC_gcc=y 303 | # CT_CC_GCC_SHOW_LINARO is not set 304 | CT_CC_V_5_1=y 305 | # CT_CC_V_4_9_2 is not set 306 | # CT_CC_V_4_9_1 is not set 307 | # CT_CC_V_4_9_0 is not set 308 | # CT_CC_V_4_8_4 is not set 309 | # CT_CC_V_4_8_3 is not set 310 | # CT_CC_V_4_8_2 is not set 311 | # CT_CC_V_4_8_1 is not set 312 | # CT_CC_V_4_8_0 is not set 313 | # CT_CC_V_4_7_4 is not set 314 | # CT_CC_V_4_7_3 is not set 315 | # CT_CC_V_4_7_2 is not set 316 | # CT_CC_V_4_7_1 is not set 317 | # CT_CC_V_4_7_0 is not set 318 | # CT_CC_V_4_6_4 is not set 319 | # CT_CC_V_4_6_3 is not set 320 | # CT_CC_V_4_6_2 is not set 321 | # CT_CC_V_4_6_1 is not set 322 | # CT_CC_V_4_6_0 is not set 323 | # CT_CC_V_4_5_3 is not set 324 | # CT_CC_V_4_5_2 is not set 325 | # CT_CC_V_4_5_1 is not set 326 | # CT_CC_V_4_5_0 is not set 327 | # CT_CC_V_4_4_7 is not set 328 | # CT_CC_V_4_4_6 is not set 329 | # CT_CC_V_4_4_5 is not set 330 | # CT_CC_V_4_4_4 is not set 331 | # CT_CC_V_4_4_3 is not set 332 | # CT_CC_V_4_4_2 is not set 333 | # CT_CC_V_4_4_1 is not set 334 | # CT_CC_V_4_4_0 is not set 335 | # CT_CC_V_4_3_6 is not set 336 | # CT_CC_V_4_3_5 is not set 337 | # CT_CC_V_4_3_4 is not set 338 | # CT_CC_V_4_3_3 is not set 339 | # CT_CC_V_4_3_2 is not set 340 | # CT_CC_V_4_3_1 is not set 341 | # CT_CC_V_4_2_4 is not set 342 | # CT_CC_V_4_2_2 is not set 343 | CT_CC_GCC_4_2_or_later=y 344 | CT_CC_GCC_4_3_or_later=y 345 | CT_CC_GCC_4_4_or_later=y 346 | CT_CC_GCC_4_5_or_later=y 347 | CT_CC_GCC_4_6_or_later=y 348 | CT_CC_GCC_4_7_or_later=y 349 | CT_CC_GCC_4_8_or_later=y 350 | CT_CC_GCC_4_9_or_later=y 351 | CT_CC_GCC_5_1=y 352 | CT_CC_GCC_5_1_or_later=y 353 | CT_CC_GCC_HAS_GRAPHITE=y 354 | CT_CC_GCC_USE_GRAPHITE=y 355 | CT_CC_GCC_HAS_LTO=y 356 | CT_CC_GCC_USE_LTO=y 357 | CT_CC_GCC_HAS_PKGVERSION_BUGURL=y 358 | CT_CC_GCC_HAS_BUILD_ID=y 359 | CT_CC_GCC_HAS_LNK_HASH_STYLE=y 360 | CT_CC_GCC_USE_GMP_MPFR=y 361 | CT_CC_GCC_USE_MPC=y 362 | CT_CC_GCC_HAS_LIBQUADMATH=y 363 | CT_CC_GCC_HAS_LIBSANITIZER=y 364 | # CT_CC_LANG_FORTRAN is not set 365 | CT_CC_SUPPORT_CXX=y 366 | CT_CC_SUPPORT_FORTRAN=y 367 | CT_CC_SUPPORT_JAVA=y 368 | CT_CC_SUPPORT_ADA=y 369 | CT_CC_SUPPORT_OBJC=y 370 | CT_CC_SUPPORT_OBJCXX=y 371 | CT_CC_SUPPORT_GOLANG=y 372 | 373 | # 374 | # Additional supported languages: 375 | # 376 | # CT_CC_LANG_CXX is not set 377 | 378 | # 379 | # gcc other options 380 | # 381 | CT_CC_ENABLE_CXX_FLAGS="" 382 | CT_CC_CORE_EXTRA_CONFIG_ARRAY="" 383 | CT_CC_EXTRA_CONFIG_ARRAY="" 384 | CT_CC_STATIC_LIBSTDCXX=y 385 | # CT_CC_GCC_SYSTEM_ZLIB is not set 386 | 387 | # 388 | # Optimisation features 389 | # 390 | 391 | # 392 | # Settings for libraries running on target 393 | # 394 | CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y 395 | # CT_CC_GCC_LIBMUDFLAP is not set 396 | # CT_CC_GCC_LIBGOMP is not set 397 | # CT_CC_GCC_LIBSSP is not set 398 | # CT_CC_GCC_LIBQUADMATH is not set 399 | 400 | # 401 | # Misc. obscure options. 402 | # 403 | # CT_CC_GCC_DISABLE_PCH is not set 404 | CT_CC_GCC_LDBL_128=m 405 | # CT_CC_GCC_BUILD_ID is not set 406 | CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y 407 | # CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set 408 | # CT_CC_GCC_LNK_HASH_STYLE_GNU is not set 409 | # CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set 410 | CT_CC_GCC_LNK_HASH_STYLE="" 411 | CT_CC_GCC_DEC_FLOAT_AUTO=y 412 | # CT_CC_GCC_DEC_FLOAT_BID is not set 413 | # CT_CC_GCC_DEC_FLOAT_DPD is not set 414 | # CT_CC_GCC_DEC_FLOATS_NO is not set 415 | 416 | # 417 | # Debug facilities 418 | # 419 | # CT_DEBUG_dmalloc is not set 420 | # CT_DEBUG_duma is not set 421 | # CT_DEBUG_gdb is not set 422 | # CT_DEBUG_ltrace is not set 423 | # CT_DEBUG_strace is not set 424 | 425 | # 426 | # Companion libraries 427 | # 428 | CT_COMPLIBS_NEEDED=y 429 | CT_GMP_NEEDED=y 430 | CT_MPFR_NEEDED=y 431 | CT_ISL_NEEDED=y 432 | CT_MPC_NEEDED=y 433 | CT_COMPLIBS=y 434 | CT_GMP=y 435 | CT_MPFR=y 436 | CT_ISL=y 437 | CT_MPC=y 438 | CT_GMP_V_6_0_0=y 439 | # CT_GMP_V_5_1_3 is not set 440 | # CT_GMP_V_5_1_1 is not set 441 | # CT_GMP_V_5_0_2 is not set 442 | # CT_GMP_V_5_0_1 is not set 443 | # CT_GMP_V_4_3_2 is not set 444 | # CT_GMP_V_4_3_1 is not set 445 | # CT_GMP_V_4_3_0 is not set 446 | CT_GMP_5_0_2_or_later=y 447 | CT_GMP_VERSION="6.0.0a" 448 | CT_MPFR_V_3_1_2=y 449 | # CT_MPFR_V_3_1_0 is not set 450 | # CT_MPFR_V_3_0_1 is not set 451 | # CT_MPFR_V_3_0_0 is not set 452 | # CT_MPFR_V_2_4_2 is not set 453 | # CT_MPFR_V_2_4_1 is not set 454 | # CT_MPFR_V_2_4_0 is not set 455 | CT_MPFR_VERSION="3.1.2" 456 | CT_ISL_V_0_14=y 457 | # CT_ISL_V_0_12_2 is not set 458 | CT_ISL_VERSION="0.14" 459 | CT_MPC_V_1_0_2=y 460 | # CT_MPC_V_1_0_1 is not set 461 | # CT_MPC_V_1_0 is not set 462 | # CT_MPC_V_0_9 is not set 463 | # CT_MPC_V_0_8_2 is not set 464 | # CT_MPC_V_0_8_1 is not set 465 | # CT_MPC_V_0_7 is not set 466 | CT_MPC_VERSION="1.0.2" 467 | 468 | # 469 | # Companion libraries common options 470 | # 471 | # CT_COMPLIBS_CHECK is not set 472 | 473 | # 474 | # Companion tools 475 | # 476 | 477 | # 478 | # READ HELP before you say 'Y' below !!! 479 | # 480 | # CT_COMP_TOOLS is not set 481 | -------------------------------------------------------------------------------- /crosstool/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | mkdir -p src 4 | git clone https://github.com/crosstool-ng/crosstool-ng.git 5 | cd crosstool-ng 6 | ./bootstrap 7 | ./configure --enable-local 8 | make -j $(nproc) 9 | make install 10 | cp ../config .config 11 | 12 | SAMPLES="alphaev56-unknown-linux-gnu alphaev67-unknown-linux-gnu arm-bare_newlib_cortex_m3_nommu-eabi arm-cortex_a15-linux-gnueabi arm-cortexa5-linux-uclibcgnueabihf arm-cortex_a8-linux-gnueabi arm-cortexa9_neon-linux-gnueabihf armeb-unknown-eabi armeb-unknown-linux-gnueabi armeb-unknown-linux-uclibcgnueabi arm-unknown-eabi arm-unknown-linux-gnueabi arm-unknown-linux-uclibcgnueabi arm-unknown-linux-uclibcgnueabihf armv6-rpi-linux-gnueabi avr32-unknown-none bfin-unknown-linux-uclibc i586-geode-linux-uclibc i586-mingw32msvc,i686-none-linux-gnu i686-nptl-linux-gnu i686-unknown-mingw32 m68k-unknown-elf m68k-unknown-uclinux-uclibc mips64el-n32-linux-uclibc mips64el-n64-linux-uclibc mips-ar2315-linux-gnu mipsel-sde-elf mipsel-unknown-linux-gnu mips-malta-linux-gnu mips-unknown-elf mips-unknown-linux-uclibc nios2-elf-mingw32 powerpc-405-linux-gnu powerpc64-unknown-linux-gnu powerpc-860-linux-gnu powerpc-e300c3-linux-gnu powerpc-e500v2-linux-gnuspe powerpc-unknown-linux-gnu powerpc-unknown-linux-uclibc powerpc-unknown_nofpu-linux-gnu s390-ibm-linux-gnu s390x-ibm-linux-gnu sh4-unknown-linux-gnu sparc-unknown-linux-gnu x86_64-unknown-linux-gnu x86_64-unknown-linux-uclibc x86_64-unknown-mingw32" 13 | 14 | mkdir -p ../x-tools 15 | for sample in $SAMPLES 16 | do 17 | ../build-sample.sh $sample || echo "$sample" >> ../x-tools/broken 18 | done 19 | cd .. 20 | 21 | mkdir -p bin 22 | cd bin 23 | for sample in $SAMPLES 24 | do 25 | ln -sf ../x-tools/$sample/bin/* . 26 | rm -f '*' 27 | done 28 | cd .. 29 | -------------------------------------------------------------------------------- /dirs3arch/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir bin 4 | git clone git@github.com:maurosoria/dirs3arch.git 5 | 6 | cd bin 7 | ln -s ../dirs3arch/dirs3arch.py . 8 | -------------------------------------------------------------------------------- /firmware-mod-kit/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://code.google.com/p/firmware-mod-kit/ 4 | cd firmware-mod-kit/src 5 | ./configure 6 | make 7 | cd ../.. 8 | 9 | mkdir -p bin 10 | for i in firmware-mod-kit/*.sh 11 | do 12 | echo "$(dirname $(readlink -m $0))/$i \"\$@\"" > bin/$(basename $i) 13 | chmod 755 bin/$(basename $i) 14 | done 15 | 16 | sed -i -e "s/SUDO=\"sudo\"/SUDO=\"\"/" firmware-mod-kit/*.sh 17 | -------------------------------------------------------------------------------- /gdb/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz | tar xvz 4 | cd gdb-7.9 5 | ./configure --prefix=$(dirname $PWD) --with-python=python2 6 | make -j $(nproc) 7 | make install 8 | -------------------------------------------------------------------------------- /gdb/install-root: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | apt-get -y install build-essential texinfo 4 | -------------------------------------------------------------------------------- /hash-identifier/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | svn checkout http://hash-identifier.googlecode.com/svn/trunk/ hash-identifier-read-only 4 | chmod 755 hash-identifier-read-only/Hash_ID_v1.1/Hash_ID.py 5 | fromdos hash-identifier-read-only/Hash_ID_v1.1/Hash_ID.py || dos2unix hash-identifier-read-only/Hash_ID_v1.1/Hash_ID.py 6 | 7 | mkdir -p bin 8 | cd bin 9 | ln -s ../hash-identifier-read-only/Hash_ID_v1.1/Hash_ID.py ./hash_id.py 10 | -------------------------------------------------------------------------------- /hashpump-partialhash/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/mheistermann/HashPump-partialhash.git 4 | cd HashPump-partialhash 5 | make -j $(nproc) 6 | cd .. 7 | 8 | mkdir bin 9 | cd bin 10 | ln -s ../HashPump-partialhash/hashpump . 11 | cd .. 12 | -------------------------------------------------------------------------------- /hashpump/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/bwall/HashPump.git 4 | cd HashPump 5 | make -j $(nproc) 6 | cd .. 7 | 8 | mkdir bin 9 | cd bin 10 | ln -s ../HashPump/hashpump . 11 | cd .. 12 | -------------------------------------------------------------------------------- /littleblackbox/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/devttys0/littleblackbox.git 4 | INST_DIR=$PWD 5 | cd littleblackbox/src 6 | ./configure --prefix=$INST_DIR 7 | make -j $(nproc) 8 | 9 | mkdir -p $INST_DIR/share/man/man1 $INST_DIR/bin 10 | make -i install 11 | cp lbb.db $INST_DIR 12 | 13 | cd $INST_DIR/bin 14 | mv littleblackbox littleblackbox.real 15 | cat < littleblackbox 16 | #!/bin/bash 17 | cd $INST_DIR 18 | bin/littleblackbox.real "\$@" 19 | END 20 | chmod 755 littleblackbox 21 | -------------------------------------------------------------------------------- /littleblackbox/install-root: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | apt-get -y install libssl-dev libpcap-dev libsqlite3-dev 4 | -------------------------------------------------------------------------------- /peda/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git clone https://github.com/longld/peda.git 4 | -------------------------------------------------------------------------------- /pemcrack/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/robertdavidgraham/pemcrack.git 4 | cd pemcrack 5 | make 6 | cd .. 7 | 8 | mkdir -p bin 9 | cp pemcrack/bin/pemcrack bin/ 10 | -------------------------------------------------------------------------------- /preeny/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | #git clone https://github.com/zardus/preeny 4 | PATH=$PWD/../crosstool/bin:$PATH 5 | 6 | cd preeny 7 | for i in ../../crosstool/bin/*-gcc 8 | do 9 | t=$(basename $i) 10 | CC=$t make -j $(nproc) -i 11 | done 12 | PLATFORM=-m32 setarch i686 make -i 13 | mv x86_64-linux-gnu i686-linux-gnu 14 | make -i 15 | -------------------------------------------------------------------------------- /pwntools/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # pwnutils 4 | git clone https://github.com/Gallopsled/pwntools.git 5 | cd pwntools 6 | pip install -r requirements.txt 7 | cd .. 8 | 9 | # binutils 10 | #curl https://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.gz | tar xvz 11 | #mkdir binutils-build 12 | #cd binutils-build 13 | #export AR=ar 14 | #export AS=as 15 | #../binutils-2.25/configure --prefix=$(dirname $PWD)/binutils-inst --enable-multilib 16 | #make -j $(nproc) 17 | #make install 18 | 19 | mkdir -p bin 20 | cd bin 21 | for i in $(yes n | pip uninstall pwntools | grep bin) 22 | do 23 | mv $i $(basename $i).real 24 | cat < $(basename $i) 25 | #!/bin/bash 26 | PATH=/usr/bin:\$PATH $PWD/$(basename $i).real "\$@" 27 | END 28 | chmod 755 $(basename $i) 29 | done 30 | cd .. 31 | -------------------------------------------------------------------------------- /pwntools/install-root: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | apt-add-repository -y ppa:pwntools/binutils 4 | apt-get update 5 | apt-get -y install binutils-.*-linux-gnu 6 | 7 | -------------------------------------------------------------------------------- /python-paddingoracle/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/mwielgoszewski/python-paddingoracle.git 4 | pip install -e python-paddingoracle 5 | -------------------------------------------------------------------------------- /python-pin/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | curl https://software.intel.com/sites/landingpage/pintool/downloads/pin-2.14-71313-gcc.4.4.7-linux.tar.gz | tar xvz 4 | export PIN_ROOT=$PWD/pin-2.14-71313-gcc.4.4.7-linux 5 | 6 | git clone https://github.com/blankwall/Python_Pin.git 7 | cd Python_Pin 8 | make PIN_ROOT=$PIN_ROOT 9 | cd .. 10 | 11 | mkdir -p bin 12 | cat < bin/python-pin 13 | #!/bin/bash -e 14 | 15 | SCRIPT=\$1 16 | shift 17 | $PWD/pin-2.14-71313-gcc.4.4.7-linux/pin.sh -t $PWD/Python_Pin/obj-intel64/Python_Pin.so -m \$SCRIPT -- "\$@" 18 | END 19 | chmod 755 bin/python-pin 20 | -------------------------------------------------------------------------------- /qemu/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #curl http://wiki.qemu-project.org/download/qemu-2.3.0.tar.bz2 | tar xvj 4 | cd qemu-2.3.0 5 | ./configure --prefix=$(dirname $PWD) 6 | make -j $(nproc) 7 | make install 8 | -------------------------------------------------------------------------------- /qira/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | cat < sudo 4 | #!/bin/bash 5 | echo SUDO BLOCKED: "\$@" 6 | END 7 | chmod 755 sudo 8 | 9 | git clone https://github.com/BinaryAnalysisPlatform/qira.git 10 | #export HOME=$PWD 11 | export PATH=$PWD:$PATH 12 | cd qira 13 | 14 | # pip install bap, indeed... 15 | sed -i 's/WITH_BAP = True/WITH_BAP = False/' middleware/qira_config.py 16 | sed -i '/eval $(opam config env)/d' qira 17 | sed -i 's/\.\/bap_install.sh/#.\/bap_install.sh/g' install.sh 18 | 19 | ./install.sh 20 | 21 | cd .. 22 | mkdir -p bin 23 | cd bin 24 | ln -s ../qira/qira qira 25 | cd .. 26 | -------------------------------------------------------------------------------- /radare2/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/radare/radare2.git 4 | cd radare2/ 5 | ./configure --prefix=$(dirname $PWD) 6 | make -j $(nproc) 7 | make install 8 | cd .. 9 | 10 | cd bin 11 | for i in ???* 12 | do 13 | mv $i $i.real 14 | cat < $i 15 | #!/bin/bash 16 | LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$PWD/../lib \$0.real 17 | END 18 | chmod 755 $i 19 | done 20 | -------------------------------------------------------------------------------- /reveng/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl http://hivelocity.dl.sourceforge.net/project/reveng/1.3.0/reveng-1.3.0.tar.gz | tar xvz 4 | cd reveng-1.3.0 5 | sed -i -e "s/^#define BMP_BIT.*/#define BMP_BIT 64/" config.h 6 | sed -i -e "s/^#define BMP_SUB.*/#define BMP_SUB 32/" config.h 7 | make -j $(nproc) 8 | cd .. 9 | 10 | mkdir -p bin 11 | cp reveng-1.3.0/reveng bin 12 | -------------------------------------------------------------------------------- /shellnoob/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/reyammer/shellnoob 4 | 5 | mkdir -p bin 6 | cd bin 7 | ln -s ../shellnoob/shellnoob.py . 8 | cd .. 9 | -------------------------------------------------------------------------------- /sqlmap/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git clone https://github.com/sqlmapproject/sqlmap.git 4 | pip install pymysql psycopg2 pysqlite2 python-ntlm 5 | mkdir bin 6 | cd bin 7 | ln -s ../sqlmap/sqlmap.py . 8 | -------------------------------------------------------------------------------- /sqlmap/install-root: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | apt-get -y install libsqlite3-dev 4 | -------------------------------------------------------------------------------- /sslsplit/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/droe/sslsplit 4 | cd sslsplit 5 | make -j $(nproc) 6 | cd .. 7 | 8 | mkdir bin 9 | cp sslsplit/sslsplit bin/ 10 | -------------------------------------------------------------------------------- /sslsplit/install-root: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | apt-get -y install libevent-dev 4 | -------------------------------------------------------------------------------- /taintgrind/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | INST_DIR=$PWD 4 | 5 | curl http://valgrind.org/downloads/valgrind-3.10.0.tar.bz2 | tar xvj 6 | cd valgrind-3.10.0 7 | ./autogen.sh 8 | ./configure --prefix=$INST_DIR 9 | make -j $(nproc) 10 | make install 11 | 12 | git clone http://github.com/wmkhoo/taintgrind.git 13 | cd taintgrind 14 | ../autogen.sh 15 | ./configure --prefix=$INST_DIR 16 | make -j $(nproc) 17 | make install 18 | cd ../../ 19 | 20 | cd bin 21 | for i in * 22 | do 23 | mv $i taintgrind-$i 24 | done 25 | -------------------------------------------------------------------------------- /testdisk/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | curl http://www.cgsecurity.org/testdisk-7.0.linux26-x86_64.tar.bz2 | tar xvj 4 | 5 | mkdir -p bin 6 | cd bin 7 | ln -s ../testdisk-7.0/*_static . 8 | cd .. 9 | -------------------------------------------------------------------------------- /villoc/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | curl https://software.intel.com/sites/landingpage/pintool/downloads/pin-2.14-71313-gcc.4.4.7-linux.tar.gz | tar xvz 4 | export PIN_ROOT=$PWD/pin-2.14-71313-gcc.4.4.7-linux 5 | 6 | git clone https://github.com/wapiflapi/villoc 7 | cd villoc/pintool 8 | make PIN_ROOT=$PIN_ROOT 9 | cd ../ 10 | chmod 755 villoc.py 11 | cd .. 12 | 13 | mkdir -p bin 14 | cd bin 15 | ln -s ../villoc/villoc.py . 16 | cd .. 17 | -------------------------------------------------------------------------------- /xortool/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | git clone https://github.com/hellman/xortool.git 4 | pip install -e ./xortool 5 | 6 | mkdir -p bin 7 | cd bin 8 | ln -s ../xortool/xortool/{xortool,xortool-xor} . 9 | cd .. 10 | -------------------------------------------------------------------------------- /xortool/uninstall: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | pip uninstall -y xortool 4 | -------------------------------------------------------------------------------- /xrop/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git clone https://github.com/acama/xrop.git 4 | cd xrop 5 | git submodule update --init --recursive 6 | make -j $(nproc) 7 | cd .. 8 | 9 | mkdir bin 10 | cd bin 11 | ln -s ../xrop/xrop . 12 | cd .. 13 | --------------------------------------------------------------------------------