Ejemplo n.º 1
0
 def show_fuzzing_dialog(self, label_index: int):
     view = self.ui.cbViewType.currentIndex()
     fdc = FuzzingDialogController(self.table_model.protocol, label_index, view, parent=self)
     fdc.show()
     fdc.finished.connect(self.refresh_label_list)
     fdc.finished.connect(self.refresh_table)
     fdc.finished.connect(self.set_fuzzing_ui_status)
Ejemplo n.º 2
0
    def show_fuzzing_dialog(self, label_index: int):
        view = self.ui.cbViewType.currentIndex()

        if self.selected_message is not None:
            fdc = FuzzingDialogController(protocol=self.table_model.protocol, label_index=label_index,
                                          msg_index=self.selected_message_index, proto_view=view, parent=self)
            fdc.show()
            fdc.finished.connect(self.refresh_label_list)
            fdc.finished.connect(self.refresh_table)
            fdc.finished.connect(self.set_fuzzing_ui_status)
Ejemplo n.º 3
0
    def show_fuzzing_dialog(self, label_index: int):
        view = self.ui.cbViewType.currentIndex()

        if self.label_list_model.message is not None:
            msg_index = self.table_model.protocol.messages.index(self.label_list_model.message)
            fdc = FuzzingDialogController(protocol=self.table_model.protocol, label_index=label_index,
                                          msg_index=msg_index, proto_view=view, parent=self)
            fdc.show()
            fdc.finished.connect(self.refresh_label_list)
            fdc.finished.connect(self.refresh_table)
            fdc.finished.connect(self.set_fuzzing_ui_status)
Ejemplo n.º 4
0
class TestFuzzingDialog(QtTestCase):
    def setUp(self):
        super().setUp()
        self.add_signal_to_form("steckdose_anlernen.complex")
        self.form.signal_tab_controller.signal_frames[
            0].ui.spinBoxNoiseTreshold.setValue(0.06)
        self.form.signal_tab_controller.signal_frames[
            0].ui.spinBoxNoiseTreshold.editingFinished.emit()
        self.form.signal_tab_controller.signal_frames[
            0].ui.spinBoxCenterOffset.setValue(-0.0127)
        self.form.signal_tab_controller.signal_frames[
            0].ui.spinBoxCenterOffset.editingFinished.emit()
        self.form.signal_tab_controller.signal_frames[
            0].ui.spinBoxInfoLen.setValue(100)
        self.form.signal_tab_controller.signal_frames[
            0].ui.spinBoxInfoLen.editingFinished.emit()

        self.gframe = self.form.generator_tab_controller
        self.gframe.ui.cbViewType.setCurrentIndex(1)  # hex view
        self.gframe.modulators.append(
            Modulator(
                "Prevent Modulation bootstrap when adding first protocol"))
        self.gframe.refresh_modulators()

        # Dewhitening mit SyncByte 0x9a7d9a7d, Data Whitening Poly 0x21, Compute and apply CRC16 via X0r,
        # Rest auf False anlegen und setzen
        self.form.ui.tabWidget.setCurrentIndex(1)
        self.form.compare_frame_controller.ui.cbProtoView.setCurrentIndex(
            1)  # Hex
        decoding = Encoding([
            "Data Whitening", constants.DECODING_DATAWHITENING,
            "0x9a7d9a7d;0x21"
        ])
        self.form.compare_frame_controller.decodings.append(decoding)
        self.form.compare_frame_controller.ui.cbDecoding.addItem(decoding.name)
        self.form.compare_frame_controller.set_decoding(decoding)

        # Serial Part 1: Bits 207-226 (Dezimal: 91412) (20 Bits)
        self.form.compare_frame_controller.add_protocol_label(
            start=206,
            end=225,
            messagenr=0,
            proto_view=0,
            edit_label_name=False)

        # Zeros: Bits 227-244 (18 Bits)
        self.form.compare_frame_controller.add_protocol_label(
            start=226,
            end=243,
            messagenr=0,
            proto_view=0,
            edit_label_name=False)

        # Serial Part 2: Bit 245 - 264 (Dezimal: 1034678) (20 Bits)
        self.form.compare_frame_controller.add_protocol_label(
            start=244,
            end=263,
            messagenr=0,
            proto_view=0,
            edit_label_name=False)

        self.form.ui.tabWidget.setCurrentIndex(2)
        item = self.gframe.tree_model.rootItem.children[0].children[0]
        index = self.gframe.tree_model.createIndex(0, 0, item)
        rect = self.gframe.ui.treeProtocols.visualRect(index)

        self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()),
                         0)
        QTest.mousePress(self.gframe.ui.treeProtocols.viewport(),
                         Qt.LeftButton,
                         pos=rect.center())
        self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0],
                         index)
        mimedata = self.gframe.tree_model.mimeData(
            self.gframe.ui.treeProtocols.selectedIndexes())
        self.gframe.table_model.dropMimeData(
            mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0))

        self.assertEqual(self.gframe.table_model.row_count, 1)
        self.assertEqual(len(self.gframe.table_model.protocol.protocol_labels),
                         3)

        self.dialog = FuzzingDialogController(
            protocol=self.gframe.table_model.protocol,
            label_index=0,
            msg_index=0,
            proto_view=0,
            parent=self.gframe)
        self.dialog.finished.connect(self.gframe.refresh_label_list)
        self.dialog.finished.connect(self.gframe.refresh_table)
        self.dialog.finished.connect(self.gframe.set_fuzzing_ui_status)

        if self.SHOW:
            self.dialog.show()

    def test_fuzz_label_bit(self):
        self.assertEqual(
            self.dialog.message_data[self.dialog.current_label_start:self.
                                     dialog.current_label_end],
            "00010110010100010100")  # Serial Part 1
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(1)
        self.assertEqual(
            self.dialog.message_data[self.dialog.current_label_start:self.
                                     dialog.current_label_end],
            "000000000000000000")  # Zeros
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(2)
        self.assertEqual(
            self.dialog.message_data[self.dialog.current_label_start:self.
                                     dialog.current_label_end],
            "11111100100110110110")  # Serial Part 2

    def test_fuzz_label_hex(self):
        for message in self.gframe.table_model.protocol.messages:
            message.align_labels = False

        self.dialog.proto_view = 1

        self.assertEqual(
            self.dialog.message_data[self.dialog.current_label_start:self.
                                     dialog.current_label_end],
            "c5945")  # Serial Part 1
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(1)
        self.assertEqual(
            self.dialog.message_data[self.dialog.current_label_start:self.
                                     dialog.current_label_end],
            "00000")  # Zeros
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(2)
        self.assertEqual(
            self.dialog.message_data[self.dialog.current_label_start:self.
                                     dialog.current_label_end],
            "fc9b6")  # Serial Part 2

    def test_add_remove_fuzzing_data(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0],
                         "00010110010100010100")  # serial part 1
        self.assertEqual(self.dialog.fuzz_table_model.rowCount(), 1)
        self.dialog.ui.btnAddRow.click()
        self.assertEqual(self.dialog.fuzz_table_model.data[1],
                         "00010110010100010101")  # serial part 1
        self.dialog.ui.btnAddRow.click()
        self.assertEqual(self.dialog.fuzz_table_model.data[2],
                         "00010110010100010110")  # serial part 1
        self.assertEqual(self.dialog.fuzz_table_model.rowCount(), 3)
        self.dialog.ui.btnDelRow.click()
        self.dialog.ui.btnDelRow.click()
        self.assertEqual(self.dialog.fuzz_table_model.rowCount(), 1)

    def test_adding_fuzzing_range(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0],
                         "00010110010100010100")  # serial part 1
        self.dialog.ui.sBAddRangeStart.setValue(10)
        self.dialog.ui.sBAddRangeEnd.setValue(100)
        self.dialog.ui.sBAddRangeStep.setValue(20)
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(6, self.dialog.fuzz_table_model.rowCount())

    def test_adding_fuzzing_boundaries(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0],
                         "00010110010100010100")  # serial part 1
        self.dialog.ui.spinBoxLowerBound.setValue(2)
        self.dialog.ui.spinBoxUpperBound.setValue(200)
        self.dialog.ui.spinBoxBoundaryNumber.setValue(2)
        self.dialog.ui.btnAddBoundaries.click()
        self.assertEqual(5, self.dialog.fuzz_table_model.rowCount())

    def test_adding_fuzzing_random_values(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0],
                         "00010110010100010100")  # serial part 1
        self.dialog.ui.spinBoxNumberRandom.setValue(10)
        self.dialog.ui.btnAddRandom.click()
        self.assertEqual(11, self.dialog.fuzz_table_model.rowCount())

    def test_remove_duplicates(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0],
                         "00010110010100010100")  # serial part 1
        self.dialog.ui.sBAddRangeStart.setValue(10)
        self.dialog.ui.sBAddRangeEnd.setValue(50)
        self.dialog.ui.sBAddRangeStep.setValue(5)
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(10, self.dialog.fuzz_table_model.rowCount())
        self.dialog.ui.btnAddRange.click()
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(28, self.dialog.fuzz_table_model.rowCount())
        self.dialog.ui.chkBRemoveDuplicates.click()
        self.assertEqual(10, self.dialog.fuzz_table_model.rowCount())
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(10, self.dialog.fuzz_table_model.rowCount())
Ejemplo n.º 5
0
class TestFuzzingDialog(QtTestCase):
    def setUp(self):
        super().setUp()
        self.add_signal_to_form("steckdose_anlernen.complex")
        self.form.signal_tab_controller.signal_frames[0].ui.spinBoxNoiseTreshold.setValue(0.06)
        self.form.signal_tab_controller.signal_frames[0].ui.spinBoxNoiseTreshold.editingFinished.emit()
        self.form.signal_tab_controller.signal_frames[0].ui.spinBoxCenterOffset.setValue(-0.0127)
        self.form.signal_tab_controller.signal_frames[0].ui.spinBoxCenterOffset.editingFinished.emit()
        self.form.signal_tab_controller.signal_frames[0].ui.spinBoxInfoLen.setValue(100)
        self.form.signal_tab_controller.signal_frames[0].ui.spinBoxInfoLen.editingFinished.emit()

        self.gframe = self.form.generator_tab_controller
        self.gframe.ui.cbViewType.setCurrentIndex(1)  # hex view

        # Dewhitening mit SyncByte 0x9a7d9a7d, Data Whitening Poly 0x21, Compute and apply CRC16 via X0r,
        # Rest auf False anlegen und setzen
        self.form.ui.tabWidget.setCurrentIndex(1)
        self.form.compare_frame_controller.ui.cbProtoView.setCurrentIndex(1)  # Hex
        decoding = Encoding(["Data Whitening", constants.DECODING_DATAWHITENING, "0x9a7d9a7d;0x21"])
        self.form.compare_frame_controller.decodings.append(decoding)
        self.form.compare_frame_controller.ui.cbDecoding.addItem(decoding.name)
        self.form.compare_frame_controller.set_decoding(decoding)

        # Serial Part 1: Bits 207-226 (Dezimal: 91412) (20 Bits)
        self.form.compare_frame_controller.add_protocol_label(start=206, end=225, messagenr=0, proto_view=0,
                                                              edit_label_name=False)

        # Zeros: Bits 227-244 (18 Bits)
        self.form.compare_frame_controller.add_protocol_label(start=226, end=243, messagenr=0, proto_view=0,
                                                              edit_label_name=False)

        # Serial Part 2: Bit 245 - 264 (Dezimal: 1034678) (20 Bits)
        self.form.compare_frame_controller.add_protocol_label(start=244, end=263, messagenr=0, proto_view=0,
                                                              edit_label_name=False)

        self.form.ui.tabWidget.setCurrentIndex(2)
        item = self.gframe.tree_model.rootItem.children[0].children[0]
        index = self.gframe.tree_model.createIndex(0, 0, item)
        rect = self.gframe.ui.treeProtocols.visualRect(index)

        self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()), 0)
        QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos = rect.center())
        self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index)
        mimedata = self.gframe.tree_model.mimeData(self.gframe.ui.treeProtocols.selectedIndexes())
        self.gframe.table_model.dropMimeData(mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0))

        self.assertEqual(self.gframe.table_model.row_count, 1)
        self.assertEqual(len(self.gframe.table_model.protocol.protocol_labels), 3)

        self.dialog = FuzzingDialogController(protocol=self.gframe.table_model.protocol, label_index=0, msg_index=0,
                                              proto_view=0, parent=self.gframe)
        self.dialog.finished.connect(self.gframe.refresh_label_list)
        self.dialog.finished.connect(self.gframe.refresh_table)
        self.dialog.finished.connect(self.gframe.set_fuzzing_ui_status)

        if self.SHOW:
            self.dialog.show()

    def test_fuzz_label_bit(self):
        self.assertEqual(self.dialog.message_data[self.dialog.current_label_start:self.dialog.current_label_end],
                         "00010110010100010100")  # Serial Part 1
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(1)
        self.assertEqual(self.dialog.message_data[self.dialog.current_label_start:self.dialog.current_label_end],
                         "000000000000000000")  # Zeros
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(2)
        self.assertEqual(self.dialog.message_data[self.dialog.current_label_start:self.dialog.current_label_end],
                         "11111100100110110110")  # Serial Part 2

    def test_fuzz_label_hex(self):
        for message in self.gframe.table_model.protocol.messages:
            message.align_labels = False

        self.dialog.proto_view = 1

        self.assertEqual(self.dialog.message_data[self.dialog.current_label_start:self.dialog.current_label_end],
                         "c5945")  # Serial Part 1
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(1)
        self.assertEqual(self.dialog.message_data[self.dialog.current_label_start:self.dialog.current_label_end],
                         "00000")  # Zeros
        self.dialog.ui.comboBoxFuzzingLabel.setCurrentIndex(2)
        self.assertEqual(self.dialog.message_data[self.dialog.current_label_start:self.dialog.current_label_end],
                         "fc9b6")  # Serial Part 2

    def test_add_remove_fuzzing_data(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0], "00010110010100010100")  # serial part 1
        self.assertEqual(self.dialog.fuzz_table_model.rowCount(), 1)
        self.dialog.ui.btnAddRow.click()
        self.assertEqual(self.dialog.fuzz_table_model.data[1], "00010110010100010101")  # serial part 1
        self.dialog.ui.btnAddRow.click()
        self.assertEqual(self.dialog.fuzz_table_model.data[2], "00010110010100010110")  # serial part 1
        self.assertEqual(self.dialog.fuzz_table_model.rowCount(), 3)
        self.dialog.ui.btnDelRow.click()
        self.dialog.ui.btnDelRow.click()
        self.assertEqual(self.dialog.fuzz_table_model.rowCount(), 1)

    def test_adding_fuzzing_range(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0], "00010110010100010100")  # serial part 1
        self.dialog.ui.sBAddRangeStart.setValue(10)
        self.dialog.ui.sBAddRangeEnd.setValue(100)
        self.dialog.ui.sBAddRangeStep.setValue(20)
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(6, self.dialog.fuzz_table_model.rowCount())

    def test_adding_fuzzing_boundaries(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0], "00010110010100010100")  # serial part 1
        self.dialog.ui.spinBoxLowerBound.setValue(2)
        self.dialog.ui.spinBoxUpperBound.setValue(200)
        self.dialog.ui.spinBoxBoundaryNumber.setValue(2)
        self.dialog.ui.btnAddBoundaries.click()
        self.assertEqual(5, self.dialog.fuzz_table_model.rowCount())

    def test_adding_fuzzing_random_values(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0], "00010110010100010100")  # serial part 1
        self.dialog.ui.spinBoxNumberRandom.setValue(10)
        self.dialog.ui.btnAddRandom.click()
        self.assertEqual(11, self.dialog.fuzz_table_model.rowCount())

    def test_remove_duplicates(self):
        self.assertEqual(self.dialog.fuzz_table_model.data[0], "00010110010100010100")  # serial part 1
        self.dialog.ui.sBAddRangeStart.setValue(10)
        self.dialog.ui.sBAddRangeEnd.setValue(50)
        self.dialog.ui.sBAddRangeStep.setValue(5)
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(10, self.dialog.fuzz_table_model.rowCount())
        self.dialog.ui.btnAddRange.click()
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(28, self.dialog.fuzz_table_model.rowCount())
        self.dialog.ui.chkBRemoveDuplicates.click()
        self.assertEqual(10, self.dialog.fuzz_table_model.rowCount())
        self.dialog.ui.btnAddRange.click()
        self.assertEqual(10, self.dialog.fuzz_table_model.rowCount())