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-gitdep
binwalk
Commits
96a8e874
Commit
96a8e874
authored
Nov 23, 2013
by
devttys0
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed plugin and scan bugs when -A and -B were used together.
parent
05a1633d
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
30 additions
and
14 deletions
+30
-14
binwalk
src/bin/binwalk
+9
-4
__init__.py
src/binwalk/__init__.py
+5
-5
parser.py
src/binwalk/parser.py
+5
-2
compressd.py
src/binwalk/plugins/compressd.py
+5
-2
zlib.py
src/binwalk/plugins/zlib.py
+6
-1
No files found.
src/bin/binwalk
View file @
96a8e874
...
@@ -92,6 +92,7 @@ def main():
...
@@ -92,6 +92,7 @@ def main():
show_grids
=
False
show_grids
=
False
show_legend
=
True
show_legend
=
True
entropy_scan
=
False
entropy_scan
=
False
sig_scan_done
=
False
enable_plugins
=
True
enable_plugins
=
True
exec_commands
=
True
exec_commands
=
True
show_invalid
=
False
show_invalid
=
False
...
@@ -212,8 +213,6 @@ def main():
...
@@ -212,8 +213,6 @@ def main():
magic_flags
|=
binwalk
.
magic
.
MAGIC_CONTINUE
magic_flags
|=
binwalk
.
magic
.
MAGIC_CONTINUE
elif
opt
in
(
"-I"
,
"--show-invalid"
):
elif
opt
in
(
"-I"
,
"--show-invalid"
):
show_invalid
=
True
show_invalid
=
True
elif
opt
in
(
"-B"
,
"--binwalk"
):
requested_scans
.
append
(
binwalk
.
Binwalk
.
BINWALK
)
elif
opt
in
(
"-K"
,
"--block"
):
elif
opt
in
(
"-K"
,
"--block"
):
block_size
=
binwalk
.
common
.
str2int
(
arg
)
block_size
=
binwalk
.
common
.
str2int
(
arg
)
elif
opt
in
(
"-X"
,
"--disable-plugin"
):
elif
opt
in
(
"-X"
,
"--disable-plugin"
):
...
@@ -261,6 +260,11 @@ def main():
...
@@ -261,6 +260,11 @@ def main():
# Else, use the default rules file
# Else, use the default rules file
else
:
else
:
extract_from_config
=
True
extract_from_config
=
True
elif
opt
in
(
"-B"
,
"--binwalk"
):
requested_scans
.
append
(
binwalk
.
Binwalk
.
BINWALK
)
# Load user file first so its signatures take precedence
magic_files
.
append
(
config
.
paths
[
'user'
][
config
.
BINWALK_MAGIC_FILE
])
magic_files
.
append
(
config
.
paths
[
'system'
][
config
.
BINWALK_MAGIC_FILE
])
elif
opt
in
(
"-A"
,
"--opcodes"
):
elif
opt
in
(
"-A"
,
"--opcodes"
):
requested_scans
.
append
(
binwalk
.
Binwalk
.
BINARCH
)
requested_scans
.
append
(
binwalk
.
Binwalk
.
BINARCH
)
# Load user file first so its signatures take precedence
# Load user file first so its signatures take precedence
...
@@ -413,10 +417,10 @@ def main():
...
@@ -413,10 +417,10 @@ def main():
for
scan_type
in
requested_scans
:
for
scan_type
in
requested_scans
:
if
scan_type
in
[
binwalk
.
Binwalk
.
BINWALK
,
binwalk
.
Binwalk
.
BINARCH
,
binwalk
.
Binwalk
.
BINCAST
,
binwalk
.
Binwalk
.
CUSTOM
]:
if
scan_type
in
[
binwalk
.
Binwalk
.
BINWALK
,
binwalk
.
Binwalk
.
BINARCH
,
binwalk
.
Binwalk
.
BINCAST
,
binwalk
.
Binwalk
.
CUSTOM
]
and
not
sig_scan_done
:
# There's no generic way for the binwalk class to know what
# There's no generic way for the binwalk class to know what
# scan type is being run, since
these are all
signature scans,
# scan type is being run, since
all of these are
signature scans,
# just with different magic files. Manually set the scan sub-type
# just with different magic files. Manually set the scan sub-type
# here to ensure that plugins can differentiate between the
# here to ensure that plugins can differentiate between the
# scans being performed.
# scans being performed.
...
@@ -434,6 +438,7 @@ def main():
...
@@ -434,6 +438,7 @@ def main():
plugins_blacklist
=
plugin_blacklist
)
plugins_blacklist
=
plugin_blacklist
)
bwalk
.
concatenate_results
(
results
,
r
)
bwalk
.
concatenate_results
(
results
,
r
)
sig_scan_done
=
True
elif
scan_type
==
binwalk
.
Binwalk
.
STRINGS
:
elif
scan_type
==
binwalk
.
Binwalk
.
STRINGS
:
...
...
src/binwalk/__init__.py
View file @
96a8e874
...
@@ -371,9 +371,9 @@ class Binwalk(object):
...
@@ -371,9 +371,9 @@ class Binwalk(object):
if
self
.
load_plugins
:
if
self
.
load_plugins
:
self
.
plugins
.
_load_plugins
()
self
.
plugins
.
_load_plugins
()
# Load the
default signatures if self.load_signatures has not already been invoked
# Load the
magic signatures. This must be done for every scan, as some signature scans
if
self
.
magic
is
None
:
# may use a different list of magic signatures.
self
.
load_signatures
()
self
.
load_signatures
()
while
i
<
self
.
matryoshka
:
while
i
<
self
.
matryoshka
:
new_target_files
=
[]
new_target_files
=
[]
...
@@ -514,8 +514,8 @@ class Binwalk(object):
...
@@ -514,8 +514,8 @@ class Binwalk(object):
# Invoke any pre-scan plugins
# Invoke any pre-scan plugins
plugret_start
=
self
.
plugins
.
_pre_scan_callbacks
(
fd
)
plugret_start
=
self
.
plugins
.
_pre_scan_callbacks
(
fd
)
# Load the
default signatures if self.load_signatures has not already been invoked
# Load the
magic signatures if they weren't already loaded.
if
self
.
magic
is
None
:
if
not
self
.
magic
:
self
.
load_signatures
()
self
.
load_signatures
()
# Main loop, scan through all the data
# Main loop, scan through all the data
...
...
src/binwalk/parser.py
View file @
96a8e874
...
@@ -43,7 +43,6 @@ class MagicParser:
...
@@ -43,7 +43,6 @@ class MagicParser:
@filter - Instance of the MagicFilter class. May be None if the parse/parse_file methods are not used.
@filter - Instance of the MagicFilter class. May be None if the parse/parse_file methods are not used.
@smart - Instance of the SmartSignature class. May be None if the parse/parse_file methods are not used.
@smart - Instance of the SmartSignature class. May be None if the parse/parse_file methods are not used.
Returns None.
Returns None.
'''
'''
self
.
matches
=
set
([])
self
.
matches
=
set
([])
...
@@ -52,7 +51,6 @@ class MagicParser:
...
@@ -52,7 +51,6 @@ class MagicParser:
self
.
smart
=
smart
self
.
smart
=
smart
self
.
raw_fd
=
None
self
.
raw_fd
=
None
self
.
signature_count
=
0
self
.
signature_count
=
0
self
.
fd
=
tempfile
.
NamedTemporaryFile
()
def
__del__
(
self
):
def
__del__
(
self
):
try
:
try
:
...
@@ -111,6 +109,11 @@ class MagicParser:
...
@@ -111,6 +109,11 @@ class MagicParser:
Returns the name of the generated temporary magic file, which will be automatically
Returns the name of the generated temporary magic file, which will be automatically
deleted when the class deconstructor is called.
deleted when the class deconstructor is called.
'''
'''
self
.
matches
=
set
([])
self
.
signatures
=
{}
self
.
signature_count
=
0
self
.
fd
=
tempfile
.
NamedTemporaryFile
()
if
isinstance
(
file_name
,
type
([])):
if
isinstance
(
file_name
,
type
([])):
files
=
file_name
files
=
file_name
else
:
else
:
...
...
src/binwalk/plugins/compressd.py
View file @
96a8e874
...
@@ -15,11 +15,14 @@ class Plugin:
...
@@ -15,11 +15,14 @@ class Plugin:
self
.
fd
=
None
self
.
fd
=
None
self
.
comp
=
None
self
.
comp
=
None
self
.
binwalk
=
binwalk
self
.
binwalk
=
binwalk
compressd_magic_file
=
binwalk
.
config
.
find_magic_file
(
"compressd"
)
if
binwalk
.
scan_type
==
binwalk
.
BINWALK
:
if
binwalk
.
scan_type
==
binwalk
.
BINWALK
:
self
.
comp
=
ctypes
.
cdll
.
LoadLibrary
(
ctypes
.
util
.
find_library
(
"compress42"
))
self
.
comp
=
ctypes
.
cdll
.
LoadLibrary
(
ctypes
.
util
.
find_library
(
"compress42"
))
if
self
.
comp
:
if
self
.
comp
:
binwalk
.
magic_files
.
append
(
binwalk
.
config
.
find_magic_file
(
'compressd'
))
binwalk
.
magic_files
.
append
(
compressd_magic_file
)
elif
compressd_magic_file
in
binwalk
.
magic_files
:
binwalk
.
magic_files
.
pop
(
binwalk
.
magic_files
.
index
(
compressd_magic_file
))
def
__del__
(
self
):
def
__del__
(
self
):
try
:
try
:
...
...
src/binwalk/plugins/zlib.py
View file @
96a8e874
...
@@ -14,13 +14,18 @@ class Plugin:
...
@@ -14,13 +14,18 @@ class Plugin:
def
__init__
(
self
,
binwalk
):
def
__init__
(
self
,
binwalk
):
self
.
fd
=
None
self
.
fd
=
None
self
.
tinfl
=
None
self
.
tinfl
=
None
zlib_magic_file
=
binwalk
.
config
.
find_magic_file
(
'zlib'
)
# Only initialize this plugin if this is a normal binwalk signature scan
if
binwalk
.
scan_type
==
binwalk
.
BINWALK
:
if
binwalk
.
scan_type
==
binwalk
.
BINWALK
:
# Load libtinfl.so
# Load libtinfl.so
self
.
tinfl
=
ctypes
.
cdll
.
LoadLibrary
(
ctypes
.
util
.
find_library
(
'tinfl'
))
self
.
tinfl
=
ctypes
.
cdll
.
LoadLibrary
(
ctypes
.
util
.
find_library
(
'tinfl'
))
if
self
.
tinfl
:
if
self
.
tinfl
:
# Add the zlib file to the list of magic files
# Add the zlib file to the list of magic files
binwalk
.
magic_files
.
append
(
binwalk
.
config
.
find_magic_file
(
'zlib'
))
binwalk
.
magic_files
.
append
(
zlib_magic_file
)
# Else, be sure to unload the zlib file from the list of magic signatures
elif
zlib_magic_file
in
binwalk
.
magic_files
:
binwalk
.
magic_files
.
pop
(
binwalk
.
magic_files
.
index
(
zlib_magic_file
))
def
pre_scan
(
self
,
fd
):
def
pre_scan
(
self
,
fd
):
if
self
.
tinfl
:
if
self
.
tinfl
:
...
...
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