forked from ReFirmLabs/binwalk
-
Notifications
You must be signed in to change notification settings - Fork 1
/
deps.sh
executable file
·149 lines (128 loc) · 3.61 KB
/
deps.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/bash
# Easy installer script for installing binwalk extraction utilities on Debian/RedHat systems.
SUDO=$(which sudo)
SUMOUNT="$1 $2"
function fmk
{
# Get and build the firmware mod kit
if [ -e /opt/firmware-mod-kit ]
then
if [ ! -e /opt/firmware-mod-kit/.git ]
then
$SUDO rm -rf /opt/firmware-mod-kit/
fi
fi
if [ ! -e /opt/firmware-mod-kit ]
then
$SUDO mkdir -p /opt/firmware-mod-kit
$SUDO chown $USER /opt/firmware-mod-kit
$SUDO chmod o+rwx /opt/firmware-mod-kit
fi
if [ ! -e /opt/firmware-mod-kit/.git ]
then
git clone http://code.google.com/p/firmware-mod-kit /opt/firmware-mod-kit/
fi
cd /opt/firmware-mod-kit/src
./configure && $SUDO make
if [ "$(echo "$SUMOUNT" | grep -e '--sumount')" != "" ]
then
# The following will allow you - and others - to mount/unmount file systems without root permissions.
# This may be problematic, especially on a multi-user system, so think about it first.
$SUDO chown root ./mountcp/mountsu
$SUDO chmod u+s ./mountcp/mountsu
$SUDO chmod o-w ./mountcp/mountsu
$SUDO chown root ./mountcp/umountsu
$SUDO chmod u+s ./mountcp/umountsu
$SUDO chmod o-w ./mountcp/umountsu
$SUDO chown root ./jffs2/sunjffs2
$SUDO chmod u+s ./jffs2/sunjffs2
$SUDO chmod o-w ./jffs2/sunjffs2
fi
cd -
}
function debian
{
# First make sure the repos are up to date
$SUDO apt-get update
# The appropriate unrar package goes under different names in Debian vs Ubuntu
$SUDO apt-get -y install unrar
if [ "$?" != "0" ]
then
echo "WARNING: Failed to install 'unrar' package, trying 'unrar-free' instead..."
$SUDO apt-get -y install unrar-free
fi
# Install binwalk/fmk pre-requisites and extraction tools
# lha isn't in newer ubuntu repos, so install it separately in case it fails
$SUDO apt-get -y install lha
$SUDO apt-get -y install git build-essential libtool autoconf mtd-utils zlib1g-dev liblzma-dev ncompress gzip bzip2 tar arj p7zip p7zip-full openjdk-6-jdk
$SUDO apt-get -y install python-opengl python-qt4 python-qt4-gl python-numpy python-scipy
if [ "$(which python3)" != "" ]
then
$SUDO apt-get -y install python3-pyqt4 python3-numpy python3-scipy
fi
}
function redhat
{
$SUDO yum groupinstall -y "Development Tools"
$SUDO yum install -y git libtool autoconf mtd-utils unrar zlib1g-dev liblzma-dev xz-devel compress gzip bzip2 tar arj lha p7zip p7zip-full openjdk-6-jdk
$SUDO yum install -y libqt4-opengl python-opengl python-qt4 python-qt4-gl python-numpy python-scipy
if [ "$(which python3)" != "" ]
then
$SUDO yum -y install python3-pyqt4 python3-numpy python3-scipy
fi
}
if [ "$1" == "" ] || [ "$1" == "--sumount" ]
then
PLATFORM=$(python -c 'import platform; print (platform.system().lower())')
DISTRO=$(python -c 'import platform; print (platform.linux_distribution()[0].strip("\"").split()[0].lower())')
else
DISTRO="$1"
fi
if [ "$DISTRO" == "" ]
then
DISTRO="$PLATFORM"
fi
echo "Detected $DISTRO $PLATFORM"
case $DISTRO in
debian)
debian
;;
ubuntu)
debian
;;
linuxmint)
debian
;;
knoppix)
debian
;;
aptosid)
debian
;;
elementary)
debian
;;
redhat)
redhat
;;
rhel)
redhat
;;
fedora)
redhat
;;
centos)
redhat
;;
*)
echo ""
echo "This system is not recognized by easy install! You may need to install dependent packages manually."
echo ""
echo "If your system is a derivative of Debian or RedHat, you can try manually specifying your system type on the command line:"
echo ""
echo -e "\t$0 [debian | redhat] [--sumount]"
echo ""
exit 1
esac
# Get and build the firmware mod kit
fmk