1#!/bin/bash 2 3REQUIRED_UTILS="wget tar python" 4APTCMD="apt-get" 5YUMCMD="yum" 6APT_CANDIDATES="git build-essential libqt4-opengl mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools zlib1g-dev liblzma-dev liblzo2-dev sleuthkit" 7PYTHON2_APT_CANDIDATES="python-lzo python-lzma python-pip python-opengl python-qt4 python-qt4-gl python-numpy python-scipy" 8PYTHON3_APT_CANDIDATES="python3-pip python3-opengl python3-pyqt4 python3-pyqt4.qtopengl python3-numpy python3-scipy" 9PYTHON3_YUM_CANDIDATES="" 10YUM_CANDIDATES="git gcc gcc-c++ make openssl-devel qtwebkit-devel qt-devel gzip bzip2 tar arj p7zip p7zip-plugins cabextract squashfs-tools zlib zlib-devel lzo lzo-devel xz xz-compat-libs xz-libs xz-devel xz-lzma-compat python-backports-lzma lzip pyliblzma perl-Compress-Raw-Lzma" 11PYTHON2_YUM_CANDIDATES="python-pip python-opengl python-qt4 numpy python-numdisplay numpy-2f python-Bottleneck scipy" 12APT_CANDIDATES="$APT_CANDIDATES $PYTHON2_APT_CANDIDATES" 13YUM_CANDIDATES="$YUM_CANDIDATES $PYTHON2_YUM_CANDIDATES" 14PIP_COMMANDS="pip" 15 16# Check for root privileges 17if [ $UID -eq 0 ] 18then 19 SUDO="" 20else 21 SUDO="sudo" 22 REQUIRED_UTILS="sudo $REQUIRED_UTILS" 23fi 24 25function install_sasquatch 26{ 27 git clone https://github.com/devttys0/sasquatch 28 (cd sasquatch && make && $SUDO make install) 29 $SUDO rm -rf sasquatch 30} 31 32function install_jefferson 33{ 34 $SUDO pip install cstruct 35 git clone https://github.com/sviehb/jefferson 36 (cd jefferson && $SUDO python2 setup.py install) 37 $SUDO rm -rf jefferson 38} 39 40function install_unstuff 41{ 42 mkdir -p /tmp/unstuff 43 cd /tmp/unstuff 44 wget -O - http://my.smithmicro.com/downloads/files/stuffit520.611linux-i386.tar.gz | tar -zxv 45 $SUDO cp bin/unstuff /usr/local/bin/ 46 cd - 47 rm -rf /tmp/unstuff 48} 49 50function install_ubireader 51{ 52 git clone https://github.com/jrspruitt/ubi_reader 53 (cd ubi_reader && $SUDO python setup.py install) 54 rm -rf ubi_reader 55} 56 57function install_pip_package 58{ 59 PACKAGE="$1" 60 61 for PIP_COMMAND in $PIP_COMMANDS 62 do 63 $SUDO $PIP_COMMAND install $PACKAGE 64 done 65} 66 67function find_path 68{ 69 FILE_NAME="$1" 70 71 echo -ne "checking for $FILE_NAME..." 72 which $FILE_NAME > /dev/null 73 if [ $? -eq 0 ] 74 then 75 echo "yes" 76 return 0 77 else 78 echo "no" 79 return 1 80 fi 81} 82 83# Make sure the user really wants to do this 84echo "" 85echo "WARNING: This script will download and install all required and optional dependencies for binwalk." 86echo " This script has only been tested on, and is only intended for, Debian based systems." 87echo " Some dependencies are downloaded via unsecure (HTTP) protocols." 88echo " This script requires internet access." 89echo " This script requires root privileges." 90echo "" 91echo -n "Continue [y/N]? " 92read YN 93if [ "$(echo "$YN" | grep -i -e 'y' -e 'yes')" == "" ] 94then 95 echo "Quitting..." 96 exit 1 97fi 98 99# Check to make sure we have all the required utilities installed 100NEEDED_UTILS="" 101for UTIL in $REQUIRED_UTILS 102do 103 find_path $UTIL 104 if [ $? -eq 1 ] 105 then 106 NEEDED_UTILS="$NEEDED_UTILS $UTIL" 107 fi 108done 109 110# Check for supported package managers and set the PKG_* envars appropriately 111find_path $APTCMD 112if [ $? -eq 1 ] 113then 114 find_path $YUMCMD 115 if [ $? -eq 1 ] 116 then 117 NEEDED_UTILS="$NEEDED_UTILS $APTCMD/$YUMCMD" 118 else 119 PKGCMD="$YUMCMD" 120 PKGCMD_OPTS="-y install" 121 PKG_CANDIDATES="$YUM_CANDIDATES" 122 PKG_PYTHON3_CANDIDATES="$PYTHON3_YUM_CANDIDATES" 123 fi 124else 125 PKGCMD="$APTCMD" 126 PKGCMD_OPTS="install -y" 127 PKG_CANDIDATES="$APT_CANDIDATES" 128 PKG_PYTHON3_CANDIDATES="$PYTHON3_APT_CANDIDATES" 129fi 130 131if [ "$NEEDED_UTILS" != "" ] 132then 133 echo "Please install the following required utilities: $NEEDED_UTILS" 134 exit 1 135fi 136 137# Check to see if we should install modules for python3 as well 138find_path python3 139if [ $? -eq 0 ] 140then 141 PKG_CANDIDATES="$PKG_CANDIDATES $PKG_PYTHON3_CANDIDATES" 142 PIP_COMMANDS="pip3 $PIP_COMMANDS" 143fi 144 145# Do the install(s) 146cd /tmp 147sudo $PKGCMD $PKGCMD_OPTS $PKG_CANDIDTES 148install_pip_package pyqtgraph 149install_pip_package capstone 150install_sasquatch 151install_jefferson 152install_unstuff 153install_ubireader 154 155