mirror of
https://github.com/jopohl/urh.git
synced 2026-03-14 12:16:48 +01:00
fix #98
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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><html><head/><body><p>If you disable the default pause, the pause of the fuzzed message will be used.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use a default pause for fuzzed messages</string>
|
||||
</property>
|
||||
|
||||
Reference in New Issue
Block a user