Skip to content

Commit 7dee70d

Browse files
authored
Merge pull request #5 from 5angjun/master
Fix mutate_length & Add unit test
2 parents e3cb067 + 4d7da98 commit 7dee70d

File tree

14 files changed

+858
-35
lines changed

14 files changed

+858
-35
lines changed
Binary file not shown.

kafl_fuzzer.egg-info/PKG-INFO

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
Metadata-Version: 1.2
1+
Metadata-Version: 2.1
22
Name: kafl-fuzzer
33
Version: 0.6
44
Summary: kAFL/Nyx Kernel Fuzzer
55
Home-page: https://github.com/IntelLabs/kAFL
66
Maintainer: Steffen Schulz
77
Maintainer-email: steffen.schulz@intel.com
88
License: UNKNOWN
9-
Description: UNKNOWN
109
Platform: UNKNOWN
1110
Classifier: Development Status :: 4 - Beta
1211
Classifier: Environment :: Console
@@ -16,3 +15,7 @@ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
1615
Classifier: Operating System :: POSIX :: Linux
1716
Classifier: Programming Language :: Python
1817
Classifier: Topic :: Security
18+
License-File: LICENSE.md
19+
20+
UNKNOWN
21+

kafl_fuzzer.egg-info/SOURCES.txt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
LICENSE.md
12
README.md
23
setup.cfg
34
setup.py
45
kafl_fuzzer/__init__.py
56
kafl_fuzzer/__main__.py
7+
kafl_fuzzer/logging.yaml
68
kafl_fuzzer/mcat.py
7-
kafl_fuzzer/test.py
89
kafl_fuzzer.egg-info/PKG-INFO
910
kafl_fuzzer.egg-info/SOURCES.txt
1011
kafl_fuzzer.egg-info/dependency_links.txt
@@ -19,17 +20,17 @@ kafl_fuzzer/common/self_check.py
1920
kafl_fuzzer/common/util.py
2021
kafl_fuzzer/common/config/__init__.py
2122
kafl_fuzzer/common/config/cmdline.py
23+
kafl_fuzzer/common/config/default_settings.yaml
2224
kafl_fuzzer/common/config/settings.py
2325
kafl_fuzzer/coverage/__init__.py
24-
kafl_fuzzer/debug/__init__.py
25-
kafl_fuzzer/debug/core.py
2626
kafl_fuzzer/gui/__init__.py
2727
kafl_fuzzer/manager/__init__.py
2828
kafl_fuzzer/manager/bitmap.py
2929
kafl_fuzzer/manager/communicator.py
3030
kafl_fuzzer/manager/core.py
3131
kafl_fuzzer/manager/manager.py
3232
kafl_fuzzer/manager/node.py
33+
kafl_fuzzer/manager/playMaker.py
3334
kafl_fuzzer/manager/queue.py
3435
kafl_fuzzer/manager/scheduler.py
3536
kafl_fuzzer/manager/statistics.py
@@ -41,14 +42,10 @@ kafl_fuzzer/plot/__init__.py
4142
kafl_fuzzer/technique/__init__.py
4243
kafl_fuzzer/technique/arithmetic.py
4344
kafl_fuzzer/technique/bitflip.py
44-
kafl_fuzzer/technique/grimoire_inference.py
45-
kafl_fuzzer/technique/grimoire_mutations.py
4645
kafl_fuzzer/technique/havoc.py
4746
kafl_fuzzer/technique/havoc_handler.py
4847
kafl_fuzzer/technique/helper.py
4948
kafl_fuzzer/technique/interesting_values.py
50-
kafl_fuzzer/technique/radamsa.py
51-
kafl_fuzzer/technique/trim.py
5249
kafl_fuzzer/technique/redqueen/__init__.py
5350
kafl_fuzzer/technique/redqueen/cmp.py
5451
kafl_fuzzer/technique/redqueen/colorize.py
@@ -60,7 +57,6 @@ kafl_fuzzer/technique/redqueen/parser.py
6057
kafl_fuzzer/technique/redqueen/workdir.py
6158
kafl_fuzzer/tests/__init__.py
6259
kafl_fuzzer/tests/helper.py
63-
kafl_fuzzer/tests/redqueen_mut.py
6460
kafl_fuzzer/tests/test_deterministic.py
6561
kafl_fuzzer/tests/test_havoc_handler.py
6662
kafl_fuzzer/tests/test_random.py

kafl_fuzzer.egg-info/requires.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
PyYAML==6.0
2-
appdirs
1+
PyYAML==6.0.1
2+
appdirs==1.4.4
33
dynaconf==3.2.0
4-
fastrand
5-
inotify
6-
lz4
7-
mmh3
8-
msgpack
9-
psutil
10-
six
11-
tqdm
4+
fastrand==1.8.0
5+
inotify==0.2.10
6+
lz4==4.3.3
7+
mmh3==4.1.0
8+
msgpack==1.0.7
9+
psutil==5.9.8
10+
six==1.16.0
11+
tqdm==4.66.1
Binary file not shown.

kafl_fuzzer/technique/havoc.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ def load_dict(file_name):
2525
f.close()
2626
return dict_entries
2727

28-
2928
def init_havoc(config):
3029
global location_corpus,location_dependency
3130
if config.dict:
@@ -46,7 +45,6 @@ def havoc_range(perf_score):
4645

4746
return max_iterations
4847

49-
5048
def mutate_seq_havoc_array(irp_list, index, func, max_iterations, resize=False):
5149
# if resize:
5250
# data = data + data
@@ -72,7 +70,6 @@ def mutate_seq_havoc_array(irp_list, index, func, max_iterations, resize=False):
7270

7371
func(irp_list)
7472

75-
7673
def mutate_seq_splice_array(irp_list, index, func, max_iterations, resize=False):
7774
global location_corpus
7875
havoc_rounds = 4
@@ -164,11 +161,6 @@ def add_insns(irp_list, func):
164161
new_irp_list.clear()
165162

166163
return
167-
168-
169-
170-
171-
172164

173165
def mutate_random_sequence(irp_list, index, func):
174166
x = rand.int(10)
@@ -179,7 +171,6 @@ def mutate_random_sequence(irp_list, index, func):
179171
replace_insns(irp_list, func)
180172
else:
181173
add_insns(irp_list, func)
182-
183174

184175
def mutate_length(irp_list, index, func):
185176

@@ -233,25 +224,23 @@ def get_valid_length(target, IoControlCode):
233224
chosen = MAX_PAYLOAD_LEN
234225
return chosen
235226

236-
237227
retry = 8
238228

239229
for _ in range(retry):
240230
chosen = get_valid_length("InBuffer",IoControlCode)
241231
if chosen is not None:
242-
target.InBuffer_length = chosen
243-
232+
244233
if chosen > target.InBuffer_length:
245-
target.InBuffer.ljust(chosen,b"\xff")
234+
target.InBuffer = target.InBuffer.ljust(chosen, b"\xff")
246235
else:
247236
target.InBuffer = target.InBuffer[:chosen]
248237

238+
target.InBuffer_length = chosen
249239

250240
chosen = get_valid_length("OutBuffer",IoControlCode)
251241
if chosen is not None:
252242
target.OutBuffer_length = chosen
253243

254-
255244
func(irp_list)
256245

257246
target.InBuffer_length = origin_InBufferLength

kafl_fuzzer/tests/__init__.py

Whitespace-only changes.

kafl_fuzzer/tests/helper.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright (C) 2020 Intel Corporation
2+
# SPDX-License-Identifier: AGPL-3.0-or-later
3+
4+
"""
5+
Helper functions for kAFL tests
6+
"""
7+
8+
def ham_weight(x):
9+
_x = bytearray(x)
10+
weight = 0
11+
for byte in _x:
12+
weight += bin(byte).count("1")
13+
return weight
14+
15+
def ham_distance(a,b):
16+
return ham_weight(bytes(x ^ y for (x, y) in zip(a, b)))
17+
18+
def bindiff(a,b):
19+
res = bytearray()
20+
for (x, y) in zip(a, b):
21+
r = bytearray([x^y])
22+
if r != b'\x00':
23+
res += r
24+
return res

0 commit comments

Comments
 (0)