This commit is contained in:
jopohl
2016-09-28 09:17:26 +02:00
parent 6236998c54
commit 01ab226b18
3 changed files with 22 additions and 13 deletions

View File

@@ -72,7 +72,7 @@ class ProtocolAnalyzerContainer(ProtocolAnalyzer):
except Exception as e:
logger.error("Duplicating line ", str(e))
def fuzz(self, mode: FuzzMode):
def fuzz(self, mode: FuzzMode, default_pause=None):
result = []
appd_result = result.append
@@ -97,7 +97,8 @@ class ProtocolAnalyzerContainer(ProtocolAnalyzer):
for start, end, fuz_val in combination:
cpy_bits[start:end] = [True if bit == "1" else False for bit in fuz_val]
fuz_msg = Message(plain_bits=cpy_bits, pause=msg.pause,
pause = default_pause if default_pause is not None else msg.pause
fuz_msg = Message(plain_bits=cpy_bits, pause=pause,
rssi=msg.rssi, message_type=msg.message_type.copy_for_fuzzing(),
modulator_indx=msg.modulator_indx,
decoder=msg.decoder, fuzz_created=True)
@@ -106,28 +107,28 @@ class ProtocolAnalyzerContainer(ProtocolAnalyzer):
self.messages = result
""":type: list of Message """
def fuzz_successive(self):
def fuzz_successive(self, default_pause=None):
"""
Führt ein sukzessives Fuzzing über alle aktiven Fuzzing Label durch.
Sequentiell heißt, ein Label wird durchgefuzzt und alle anderen Labels bleiben auf Standardwert.
Das entspricht dem Vorgang nacheinander immer nur ein Label aktiv zu setzen.
"""
self.fuzz(FuzzMode.successive)
self.fuzz(FuzzMode.successive, default_pause=default_pause)
def fuzz_concurrent(self):
def fuzz_concurrent(self, default_pause=None):
"""
Führt ein gleichzeitiges Fuzzing durch, das heißt bei mehreren Labels pro Message werden alle Labels
gleichzeitig iteriert. Wenn ein Label keine FuzzValues mehr übrig hat,
wird der erste Fuzzing Value (per Definition der Standardwert) genommen.
"""
self.fuzz(FuzzMode.concurrent)
self.fuzz(FuzzMode.concurrent, default_pause=default_pause)
def fuzz_exhaustive(self):
def fuzz_exhaustive(self, default_pause=None):
"""
Führt ein vollständiges Fuzzing durch. D.h. wenn es mehrere Label pro Message gibt, werden alle
möglichen Kombinationen erzeugt (Kreuzprodukt!)
"""
self.fuzz(FuzzMode.exhaustive)
self.fuzz(FuzzMode.exhaustive, default_pause=default_pause)
def create_fuzzing_label(self, start, end, msg_index) -> ProtocolLabel:
fuz_lbl = self.messages[msg_index].message_type.add_protocol_label(start=start, end=end)

View File

@@ -2,6 +2,7 @@ import copy
from PyQt5.QtWidgets import QUndoCommand
from urh import constants
from urh.signalprocessing.ProtocolAnalyzerContainer import ProtocolAnalyzerContainer
@@ -15,12 +16,16 @@ class Fuzz(QUndoCommand):
self.orig_messages = copy.deepcopy(self.proto_analyzer_container.messages)
def redo(self):
if constants.SETTINGS.value('use_default_fuzzing_pause', True, bool):
default_pause = constants.SETTINGS.value("default_fuzzing_pause", 10**6, int)
else:
default_pause = None
if self.fuz_mode == "Successive":
self.proto_analyzer_container.fuzz_successive()
self.proto_analyzer_container.fuzz_successive(default_pause=default_pause)
elif self.fuz_mode == "Concurrent":
self.proto_analyzer_container.fuzz_concurrent()
self.proto_analyzer_container.fuzz_concurrent(default_pause=default_pause)
elif self.fuz_mode == "Exhaustive":
self.proto_analyzer_container.fuzz_exhaustive()
self.proto_analyzer_container.fuzz_exhaustive(default_pause=default_pause)
def undo(self):
self.proto_analyzer_container.messages = self.orig_messages

View File

@@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
<number>2</number>
</property>
<widget class="QWidget" name="tabInterpretation">
<attribute name="title">
@@ -146,7 +146,7 @@
<attribute name="title">
<string>Generation</string>
</attribute>
<widget class="QWidget" name="">
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>20</x>
@@ -158,6 +158,9 @@
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxDefaultFuzzingPause">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If you disable the default pause, the pause of the fuzzed message will be used.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Use a default pause for fuzzed messages</string>
</property>