Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
binwalk
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fact-depend
binwalk
Commits
8fd98939
Commit
8fd98939
authored
Jul 13, 2014
by
devttys0
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated settings.py to be more pythonic.
parent
fdbcf419
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
102 additions
and
72 deletions
+102
-72
Makefile.in
Makefile.in
+19
-6
configure
configure
+11
-2
configure.ac
configure.ac
+11
-2
setup.py
setup.py
+1
-1
C.py
src/binwalk/core/C.py
+12
-6
plugin.py
src/binwalk/core/plugin.py
+4
-1
settings.py
src/binwalk/core/settings.py
+19
-29
binwalk
src/binwalk/magic/binwalk
+17
-17
extractor.py
src/binwalk/modules/extractor.py
+2
-2
signature.py
src/binwalk/modules/signature.py
+6
-6
No files found.
Makefile.in
View file @
8fd98939
...
...
@@ -13,6 +13,12 @@ export BUILD_FUZZY=@BUILD_FUZZY@
BUILD_C_LIBS
=
@BUILD_C_LIBS@
PYTHON
=
@PYTHON@
SRC_C_DIR
=
"./src/C"
ifeq
($(strip
$(prefix)),)
PREFIX
=
""
else
PREFIX
=
"--prefix=
$(prefix)
"
endif
START_SCRIPT
=
"binwalk-start"
.PHONY
:
all install build deps clean uninstall
...
...
@@ -20,25 +26,32 @@ all: build
install
:
build
if
[
"
$(BUILD_C_LIBS)
"
-eq
"1"
]
;
then
make
-C
$(SRC_C_DIR)
install
;
fi
ifeq
($(strip
$(prefix)),)
$(PYTHON)
./setup.py
install
else
$(PYTHON)
./setup.py
install
--prefix
=
$(prefix)
endif
$(PYTHON)
./setup.py install
$(PREFIX)
if
[
"
$(BUILD_C_LIBS)
"
-eq
"1"
]
&&
[
$
(
findstring
"CYGWIN"
,
$(PLATFORM)
)
]
;
then
ldconfig
||
true
;
fi
build
:
if
[
"
$(BUILD_C_LIBS)
"
-eq
"1"
]
;
then
make
-C
$(SRC_C_DIR)
;
fi
echo
"
$(prefix)
"
>
src/binwalk/config/prefix.conf
$(PYTHON)
./setup.py build
start-script
:
echo
'#!/bin/sh'
>
$(START_SCRIPT)
echo
"PREFIX=
\"
$(prefix)
\"
"
>>
$(START_SCRIPT)
echo
'PYVERSION=`python --version 2>&1 | cut -d'
' -f2 | cut -d'
.
' -f1,2`'
>>
$(START_SCRIPT)
echo
'export PYTHONPATH="\$PREFIX/lib/python$PYVERSION/site-packages"'
>>
$(START_SCRIPT)
echo
'\$PREFIX/bin/binwalk "\$@"'
>>
$(START_SCRIPT)
chmod +x
$(START_SCRIPT)
clean
:
if
[
"
$(BUILD_C_LIBS)
"
-eq
"1"
]
;
then
make
-C
$(SRC_C_DIR)
clean
;
fi
$(PYTHON)
./setup.py clean
distclean
:
clean
if
[
"
$(BUILD_C_LIBS)
"
-eq
"1"
]
;
then
make
-C
$(SRC_C_DIR)
distclean
;
fi
rm
-rf
Makefile config.
*
*
.cache
rm
-rf
Makefile config.
*
*
.cache
$(START_SCRIPT)
uninstall
:
if
[
"
$(BUILD_C_LIBS)
"
-eq
"1"
]
;
then
make
-C
$(SRC_C_DIR)
uninstall
;
fi
$(PYTHON)
./setup.py uninstall
configure
View file @
8fd98939
...
...
@@ -3333,6 +3333,15 @@ fi
CFLAGS
=
"-Wall -fPIC
$CFLAGS
"
INSTALL_OPTIONS
=
"-m644"
if
test
"
$prefix
"
!=
"NONE"
then
CONFIGURE_PREFIX
=
"--prefix=
$prefix
"
else
CONFIGURE_PREFIX
=
""
fi
echo
"prefix:
$prefix
"
if
test
"
$(
uname
)
"
==
"Darwin"
then
SONAME
=
"-install_name"
...
...
@@ -3346,12 +3355,12 @@ if test "$BUILD_C_LIBS" != "0"
then
if
test
"
$BUILD_MAGIC
"
!=
"0"
then
(
cd
./src/C/file-
*
/
&&
autoreconf
-v
&&
./configure
)
||
exit
1
(
cd
./src/C/file-
*
/
&&
autoreconf
-v
&&
./configure
$CONFIGURE_PREFIX
)
||
exit
1
fi
if
test
"
$BUILD_FUZZY
"
!=
"0"
then
(
cd
./src/C/ssdeep-
*
/
&&
autoreconf
-v
&&
./configure
)
||
exit
1
(
cd
./src/C/ssdeep-
*
/
&&
autoreconf
-v
&&
./configure
$CONFIGURE_PREFIX
)
||
exit
1
fi
fi
...
...
configure.ac
View file @
8fd98939
...
...
@@ -30,6 +30,15 @@ AC_ARG_ENABLE([libfuzzy],
CFLAGS="-Wall -fPIC $CFLAGS"
INSTALL_OPTIONS="-m644"
if test "$prefix" != "NONE"
then
CONFIGURE_PREFIX="--prefix=$prefix"
else
CONFIGURE_PREFIX=""
fi
echo "prefix: $prefix"
if test "$(uname)" == "Darwin"
then
SONAME="-install_name"
...
...
@@ -43,12 +52,12 @@ if test "$BUILD_C_LIBS" != "0"
then
if test "$BUILD_MAGIC" != "0"
then
(cd ./src/C/file-*/ && autoreconf -v && ./configure) || exit 1
(cd ./src/C/file-*/ && autoreconf -v && ./configure
$CONFIGURE_PREFIX
) || exit 1
fi
if test "$BUILD_FUZZY" != "0"
then
(cd ./src/C/ssdeep-*/ && autoreconf -v && ./configure) || exit 1
(cd ./src/C/ssdeep-*/ && autoreconf -v && ./configure
$CONFIGURE_PREFIX
) || exit 1
fi
fi
...
...
setup.py
View file @
8fd98939
...
...
@@ -53,7 +53,7 @@ def remove_binwalk_module():
remove_tree
(
path
)
except
OSError
as
e
:
pass
script_path
=
which
(
MODULE_NAME
)
if
script_path
:
try
:
...
...
src/binwalk/core/C.py
View file @
8fd98939
...
...
@@ -96,6 +96,7 @@ class Library(object):
Returns None.
'''
self
.
settings
=
binwalk
.
core
.
settings
.
Settings
()
self
.
library
=
ctypes
.
cdll
.
LoadLibrary
(
self
.
find_library
(
library
))
if
not
self
.
library
:
raise
Exception
(
"Failed to load library '
%
s'"
%
library
)
...
...
@@ -114,20 +115,25 @@ class Library(object):
'''
lib_path
=
None
try
:
prefix
=
open
(
self
.
settings
.
system
.
prefix
,
'r'
)
.
read
()
.
strip
()
except
:
prefix
=
''
if
isinstance
(
libraries
,
str
):
libraries
=
[
libraries
]
for
library
in
libraries
:
system_paths
=
{
'linux'
:
[
'/usr/local/lib/lib
%
s.so'
%
library
],
'linux2'
:
[
'/usr/local/lib/lib
%
s.so'
%
library
],
'linux3'
:
[
'/usr/local/lib/lib
%
s.so'
%
library
],
'darwin'
:
[
'/opt/local/lib/lib
%
s.dylib'
%
library
,
'linux'
:
[
os
.
path
.
join
(
prefix
,
'lib'
,
'lib
%
s.so'
%
library
),
'/usr/local/lib/lib
%
s.so'
%
library
],
'linux2'
:
[
os
.
path
.
join
(
prefix
,
'lib'
,
'lib
%
s.so'
%
library
),
'/usr/local/lib/lib
%
s.so'
%
library
],
'linux3'
:
[
os
.
path
.
join
(
prefix
,
'lib'
,
'lib
%
s.so'
%
library
),
'/usr/local/lib/lib
%
s.so'
%
library
],
'darwin'
:
[
os
.
path
.
join
(
prefix
,
'lib'
,
'lib
%
s.dylib'
%
library
),
'/opt/local/lib/lib
%
s.dylib'
%
library
,
'/usr/local/lib/lib
%
s.dylib'
%
library
,
]
+
glob
.
glob
(
'/usr/local/Cellar/lib
%
s/*/lib/lib
%
s.dylib'
%
(
library
,
library
)),
'cygwin'
:
[
'/usr/local/lib/lib
%
s.so'
%
library
],
'win32'
:
[
'
%
s.dll'
%
library
]
'cygwin'
:
[
os
.
path
.
join
(
prefix
,
'lib'
,
'lib
%
s.so'
%
library
),
'/usr/local/lib/lib
%
s.so'
%
library
],
'win32'
:
[
os
.
path
.
join
(
prefix
,
'lib
%
s.dll'
%
library
),
'
%
s.dll'
%
library
]
}
# Search the common install directories first; these are usually not in the library search path
...
...
src/binwalk/core/plugin.py
View file @
8fd98939
...
...
@@ -173,7 +173,10 @@ class Plugins(object):
}
for
key
in
plugins
.
keys
():
plugins
[
key
][
'path'
]
=
self
.
settings
.
get_file_path
(
key
,
self
.
settings
.
PLUGINS
)
if
key
==
'user'
:
plugins
[
key
][
'path'
]
=
self
.
settings
.
user
.
plugins
else
:
plugins
[
key
][
'path'
]
=
self
.
settings
.
system
.
plugins
if
plugins
[
key
][
'path'
]:
for
file_name
in
os
.
listdir
(
plugins
[
key
][
'path'
]):
...
...
src/binwalk/core/settings.py
View file @
8fd98939
...
...
@@ -4,6 +4,12 @@ import os
import
binwalk.core.common
as
common
from
binwalk.core.compat
import
*
class
Container
(
object
):
def
__init__
(
self
,
**
kwargs
):
for
(
k
,
v
)
in
iterator
(
kwargs
):
setattr
(
self
,
k
,
v
)
class
Settings
:
'''
Binwalk settings class, used for accessing user and system file paths and general configuration settings.
...
...
@@ -27,6 +33,7 @@ class Settings:
# File names
PLUGINS
=
"plugins"
PREFIX_FILE
=
"prefix.conf"
EXTRACT_FILE
=
"extract.conf"
BINWALK_MAGIC_FILE
=
"binwalk"
BINARCH_MAGIC_FILE
=
"binarch"
...
...
@@ -41,38 +48,21 @@ class Settings:
# Path to the system wide binwalk directory
self
.
system_dir
=
self
.
_get_system_dir
()
# Dictionary of all absolute user/system file paths
self
.
paths
=
{
'user'
:
{},
'system'
:
{},
}
# Build the paths to all user-specific files
self
.
paths
[
'user'
][
self
.
BINWALK_MAGIC_FILE
]
=
self
.
_user_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINWALK_MAGIC_FILE
)
self
.
paths
[
'user'
][
self
.
BINARCH_MAGIC_FILE
]
=
self
.
_user_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINARCH_MAGIC_FILE
)
self
.
paths
[
'user'
][
self
.
BINCAST_MAGIC_FILE
]
=
self
.
_user_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINCAST_MAGIC_FILE
)
self
.
paths
[
'user'
][
self
.
EXTRACT_FILE
]
=
self
.
_user_path
(
self
.
BINWALK_CONFIG_DIR
,
self
.
EXTRACT_FILE
)
self
.
paths
[
'user'
][
self
.
PLUGINS
]
=
self
.
_user_path
(
self
.
BINWALK_PLUGINS_DIR
)
self
.
user
=
Container
(
binwalk
=
self
.
_user_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINWALK_MAGIC_FILE
),
binarch
=
self
.
_user_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINARCH_MAGIC_FILE
),
bincast
=
self
.
_user_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINCAST_MAGIC_FILE
),
extract
=
self
.
_user_path
(
self
.
BINWALK_CONFIG_DIR
,
self
.
EXTRACT_FILE
),
plugins
=
self
.
_user_path
(
self
.
BINWALK_PLUGINS_DIR
)
)
# Build the paths to all system-wide files
self
.
paths
[
'system'
][
self
.
BINWALK_MAGIC_FILE
]
=
self
.
_system_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINWALK_MAGIC_FILE
)
self
.
paths
[
'system'
][
self
.
BINARCH_MAGIC_FILE
]
=
self
.
_system_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINARCH_MAGIC_FILE
)
self
.
paths
[
'system'
][
self
.
BINCAST_MAGIC_FILE
]
=
self
.
_system_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINCAST_MAGIC_FILE
)
self
.
paths
[
'system'
][
self
.
EXTRACT_FILE
]
=
self
.
_system_path
(
self
.
BINWALK_CONFIG_DIR
,
self
.
EXTRACT_FILE
)
self
.
paths
[
'system'
][
self
.
PLUGINS
]
=
self
.
_system_path
(
self
.
BINWALK_PLUGINS_DIR
)
def
get_file_path
(
self
,
usersys
,
fname
):
'''
Retrieves the specified file path from self.paths.
@usersys - One of: 'user', 'system'.
@fname - The file name (e.g., self.BINWALK_MAGIC_FILE, self.PLUGINS, etc)
Returns the path, if it exists; returns None otherwise.
'''
if
has_key
(
self
.
paths
,
usersys
)
and
has_key
(
self
.
paths
[
usersys
],
fname
)
and
self
.
paths
[
usersys
][
fname
]:
return
self
.
paths
[
usersys
][
fname
]
return
None
# Build the paths to all system-wide files
self
.
system
=
Container
(
binwalk
=
self
.
_system_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINWALK_MAGIC_FILE
),
binarch
=
self
.
_system_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINARCH_MAGIC_FILE
),
bincast
=
self
.
_system_path
(
self
.
BINWALK_MAGIC_DIR
,
self
.
BINCAST_MAGIC_FILE
),
extract
=
self
.
_system_path
(
self
.
BINWALK_CONFIG_DIR
,
self
.
EXTRACT_FILE
),
prefix
=
self
.
_system_path
(
self
.
BINWALK_CONFIG_DIR
,
self
.
PREFIX_FILE
),
plugins
=
self
.
_system_path
(
self
.
BINWALK_PLUGINS_DIR
))
def
find_magic_file
(
self
,
fname
,
system_only
=
False
,
user_only
=
False
):
'''
...
...
src/binwalk/magic/binwalk
View file @
8fd98939
...
...
@@ -859,7 +859,7 @@
0 string bFLT BFLT executable
>4 belong <1 invalid
>4 belong >4 invalid
>4 belong x version %
l
d,
>4 belong x version %d,
>4 belong 4
>8 belong x code offset: 0x%.8X,
>12 belong x data segment starts at: 0x%.8X,
...
...
@@ -1191,34 +1191,34 @@
0 lelong 0x28cd3d45 CramFS filesystem, little endian
>4 lelong <0 invalid
>4 lelong >1073741824 invalid
>4 lelong x size %
l
u
>4 lelong x size %u
>8 lelong &1 version #2
>8 lelong &2 sorted_dirs
>8 lelong &4 hole_support
>32 lelong x CRC 0x%x,
>36 lelong x edition %
l
u,
>36 lelong x edition %u,
>40 lelong <0 invalid
>40 lelong x %
l
u blocks,
>40 lelong x %u blocks,
>44 lelong <0 invalid
>44 lelong x %
l
u files
>4 lelong x {jump-to-offset:%
l
u}
>4 lelong x {file-size:%
l
u}
>44 lelong x %u files
>4 lelong x {jump-to-offset:%u}
>4 lelong x {file-size:%u}
0 belong 0x28cd3d45 CramFS filesystem, big endian
>4 belong <0 invalid
>4 belong >1073741824 invalid
>4 belong x size %
l
u
>4 belong x size %u
>8 belong &1 version #2
>8 belong &2 sorted_dirs
>8 belong &4 hole_support
>32 belong x CRC 0x%x,
>36 belong x edition %
l
u,
>36 belong x edition %u,
>40 belong <0 invalid
>40 belong x %
l
u blocks,
>40 belong x %u blocks,
>44 belong <0 invalid
>44 belong x %
l
u files
>4 belong x {jump-to-offset:%
l
u}
>4 belong x {file-size:%
l
u}
>44 belong x %u files
>4 belong x {jump-to-offset:%u}
>4 belong x {file-size:%u}
...
...
@@ -2251,8 +2251,8 @@
>16 belong >10000 invalid
>20 belong <1 invalid
>20 belong >10000 invalid
>16 belong x \b, %
l
d x
>20 belong x %
l
d,
>16 belong x \b, %d x
>20 belong x %d,
>24 byte x %d-bit
>25 byte 0 grayscale,
>25 byte 2 \b/color RGB,
...
...
@@ -2267,8 +2267,8 @@
0 string GIF8 GIF image data
>4 string 7a \b, version "8%s",
>4 string 9a \b, version "8%s",
>6 leshort >0 %
h
d x
>8 leshort >0 %
h
d
>6 leshort >0 %d x
>8 leshort >0 %d
#>10 byte &0x80 color mapped,
#>10 byte&0x07 =0x00 2 colors
#>10 byte&0x07 =0x01 4 colors
...
...
src/binwalk/modules/extractor.py
View file @
8fd98939
...
...
@@ -270,8 +270,8 @@ class Extractor(Module):
'''
# Load the user extract file first to ensure its rules take precedence.
extract_files
=
[
self
.
config
.
settings
.
get_file_path
(
'user'
,
self
.
config
.
settings
.
EXTRACT_FILE
)
,
self
.
config
.
settings
.
get_file_path
(
'system'
,
self
.
config
.
settings
.
EXTRACT_FILE
)
,
self
.
config
.
settings
.
user
.
extract
,
self
.
config
.
settings
.
system
.
extract
,
]
for
extract_file
in
extract_files
:
...
...
src/binwalk/modules/signature.py
View file @
8fd98939
...
...
@@ -64,20 +64,20 @@ class Signature(Module):
# Append the user's magic file first so that those signatures take precedence
elif
self
.
search_for_opcodes
:
self
.
magic_files
=
[
self
.
config
.
settings
.
get_file_path
(
'user'
,
self
.
config
.
settings
.
BINARCH_MAGIC_FILE
)
,
self
.
config
.
settings
.
get_file_path
(
'system'
,
self
.
config
.
settings
.
BINARCH_MAGIC_FILE
)
,
self
.
config
.
settings
.
user
.
binarch
,
self
.
config
.
settings
.
system
.
binarch
,
]
elif
self
.
cast_data_types
:
self
.
magic_files
=
[
self
.
config
.
settings
.
get_file_path
(
'user'
,
self
.
config
.
settings
.
BINCAST_MAGIC_FILE
)
,
self
.
config
.
settings
.
get_file_path
(
'system'
,
self
.
config
.
settings
.
BINCAST_MAGIC_FILE
)
,
self
.
config
.
settings
.
user
.
bincast
,
self
.
config
.
settings
.
system
.
bincast
,
]
# Use the system default magic file if no other was specified, or if -B was explicitly specified
if
(
not
self
.
magic_files
)
or
(
self
.
explicit_signature_scan
and
not
self
.
cast_data_types
):
self
.
magic_files
.
append
(
self
.
config
.
settings
.
get_file_path
(
'user'
,
self
.
config
.
settings
.
BINWALK_MAGIC_FILE
)
)
self
.
magic_files
.
append
(
self
.
config
.
settings
.
get_file_path
(
'system'
,
self
.
config
.
settings
.
BINWALK_MAGIC_FILE
)
)
self
.
magic_files
.
append
(
self
.
config
.
settings
.
user
.
binwalk
)
self
.
magic_files
.
append
(
self
.
config
.
settings
.
system
.
binwalk
)
# Parse the magic file(s) and initialize libmagic
binwalk
.
core
.
common
.
debug
(
"Loading magic files:
%
s"
%
str
(
self
.
magic_files
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment