hardsploit_gui 2.3 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +22 -22
- data/Rakefile +1 -1
- data/bin/hardsploit_gui +3 -3
- data/lib/Firmwares/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
- data/lib/Firmwares/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
- data/lib/Firmwares/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
- data/lib/Firmwares/FPGA/SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd +0 -0
- data/lib/Firmwares/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
- data/lib/Firmwares/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd +0 -0
- data/lib/Firmwares/FPGA/VersionFPGA.rb +5 -5
- data/lib/Firmwares/UC/VersionUC.rb +12 -12
- data/lib/HardsploitAPI/Core/HardsploitAPI.rb +210 -210
- data/lib/HardsploitAPI/Core/HardsploitAPI_CONSTANT.rb +150 -150
- data/lib/HardsploitAPI/Core/HardsploitAPI_ERROR.rb +109 -109
- data/lib/HardsploitAPI/Core/HardsploitAPI_FIRMWARE.rb +305 -305
- data/lib/HardsploitAPI/Core/HardsploitAPI_PROGRESS.rb +28 -28
- data/lib/HardsploitAPI/Core/HardsploitAPI_USB_COMMUNICATION.rb +166 -166
- data/lib/HardsploitAPI/Modules/I2C/HardsploitAPI_I2C.rb +356 -356
- data/lib/HardsploitAPI/Modules/NO_MUX_PARALLEL_MEMORY/HardsploitAPI_NO_MUX_PARALLEL_MEMORY.rb +206 -206
- data/lib/HardsploitAPI/Modules/NRF24L01/HardsploitAPI_NRF24L01.rb +306 -306
- data/lib/HardsploitAPI/Modules/SPI/HardsploitAPI_SPI.rb +340 -340
- data/lib/HardsploitAPI/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER.rb +83 -83
- data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD.rb +367 -367
- data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_DEBUG.rb +89 -89
- data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_MEM_AP.rb +61 -61
- data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_STM32.rb +121 -121
- data/lib/HardsploitAPI/Modules/TEST/HardsploitAPI_TEST_INTERACT.rb +98 -98
- data/lib/HardsploitAPI/Modules/UART/HardsploitAPI_UART.rb +196 -196
- data/lib/Hardsploit_gui.rb +96 -96
- data/lib/LICENSE.txt +674 -674
- data/lib/README.md +22 -22
- data/lib/TRADEMARK +2 -2
- data/lib/class/Chip_editor.rb +304 -304
- data/lib/class/Chip_management.rb +496 -496
- data/lib/class/Command_editor.rb +216 -216
- data/lib/class/Command_table.rb +233 -233
- data/lib/class/Console.rb +26 -26
- data/lib/class/ErrorMsg.rb +312 -312
- data/lib/class/Export.rb +140 -140
- data/lib/class/Export_manager.rb +124 -124
- data/lib/class/Firmware.rb +70 -70
- data/lib/class/Generic_commands.rb +260 -260
- data/lib/class/{i2c → I2C}/I2c_command.rb +51 -51
- data/lib/class/{i2c → I2C}/I2c_export.rb +95 -95
- data/lib/class/{i2c → I2C}/I2c_import.rb +117 -117
- data/lib/class/{i2c → I2C}/I2c_scanner.rb +114 -114
- data/lib/class/{i2c → I2C}/I2c_settings.rb +148 -148
- data/lib/class/Import.rb +193 -193
- data/lib/class/{parallel → PARALLEL}/Parallel_export.rb +118 -118
- data/lib/class/{parallel → PARALLEL}/Parallel_import.rb +113 -113
- data/lib/class/{parallel → PARALLEL}/Parallel_settings.rb +81 -81
- data/lib/class/Progress_bar.rb +32 -32
- data/lib/class/{spi → SPI}/Spi_export.rb +108 -108
- data/lib/class/{spi → SPI}/Spi_import.rb +159 -159
- data/lib/class/{spi → SPI}/Spi_settings.rb +108 -108
- data/lib/class/{spi → SPI}/Spi_sniffer.rb +101 -101
- data/lib/class/Signal_mapper.rb +120 -120
- data/lib/class/Wire_helper.rb +230 -230
- data/lib/class/swd/Swd.rb +125 -125
- data/lib/class/swd/Swd_scanner.rb +121 -121
- data/lib/class/swd/Swd_settings.rb +76 -76
- data/lib/class/uart/Uart_baudrate.rb +62 -62
- data/lib/class/uart/Uart_console.rb +115 -115
- data/lib/class/uart/Uart_settings.rb +102 -102
- data/lib/db/associations.rb +138 -138
- data/lib/db/database.rb +4 -4
- data/lib/db/development.sqlite3 +0 -0
- data/lib/db/migrate/004_create_manufacturers.rb +13 -13
- data/lib/db/migrate/005_create_packages.rb +13 -13
- data/lib/db/migrate/006_create_chip_types.rb +11 -11
- data/lib/db/migrate/007_create_buses.rb +11 -11
- data/lib/db/migrate/008_create_signals.rb +14 -14
- data/lib/db/migrate/009_create_chips.rb +25 -25
- data/lib/db/migrate/010_create_commands.rb +21 -21
- data/lib/db/migrate/011_create_bytes.rb +19 -19
- data/lib/db/migrate/012_create_i2c_settings.rb +21 -21
- data/lib/db/migrate/013_create_spi_settings.rb +26 -26
- data/lib/db/migrate/014_create_parallel_settings.rb +21 -21
- data/lib/db/migrate/015_create_pins.rb +19 -19
- data/lib/db/migrate/016_create_uses.rb +17 -17
- data/lib/db/migrate/017_create_swd_settings.rb +19 -19
- data/lib/db/migrate/018_create_uart_settings.rb +22 -22
- data/lib/db/schema.rb +157 -157
- data/lib/db/seeds.rb +161 -161
- data/lib/gui/gui_chip_editor.rb +349 -349
- data/lib/gui/gui_chip_management.rb +377 -377
- data/lib/gui/gui_command_editor.rb +219 -219
- data/lib/gui/gui_export.rb +132 -132
- data/lib/gui/gui_export_manager.rb +93 -93
- data/lib/gui/gui_generic_commands.rb +202 -202
- data/lib/gui/gui_generic_export.rb +164 -164
- data/lib/gui/gui_generic_import.rb +142 -142
- data/lib/gui/gui_i2c_command.rb +116 -116
- data/lib/gui/gui_i2c_settings.rb +230 -230
- data/lib/gui/gui_import.rb +131 -131
- data/lib/gui/gui_parallel_settings.rb +195 -195
- data/lib/gui/gui_progress_bar.rb +85 -85
- data/lib/gui/gui_signal_mapper.rb +121 -121
- data/lib/gui/gui_signal_scanner.rb +146 -146
- data/lib/gui/gui_spi_import.rb +126 -126
- data/lib/gui/gui_spi_settings.rb +313 -313
- data/lib/gui/gui_spi_sniffer.rb +112 -112
- data/lib/gui/gui_swd_settings.rb +166 -166
- data/lib/gui/gui_uart_baudrate.rb +114 -114
- data/lib/gui/gui_uart_console.rb +164 -164
- data/lib/gui/gui_uart_settings.rb +243 -243
- data/lib/gui/gui_wire_helper.rb +99 -99
- data/lib/gui_designer/gui_chip_editor.ui +549 -549
- data/lib/gui_designer/gui_chip_management.ui +886 -886
- data/lib/gui_designer/gui_command_editor.ui +350 -350
- data/lib/gui_designer/gui_export.ui +171 -171
- data/lib/gui_designer/gui_export_manager.ui +115 -115
- data/lib/gui_designer/gui_generic_commands.ui +342 -342
- data/lib/gui_designer/gui_generic_export.ui +202 -202
- data/lib/gui_designer/gui_generic_import.ui +165 -165
- data/lib/gui_designer/gui_i2c_command.ui +148 -148
- data/lib/gui_designer/gui_i2c_settings.ui +292 -292
- data/lib/gui_designer/gui_import.ui +168 -168
- data/lib/gui_designer/gui_parallel_settings.ui +247 -247
- data/lib/gui_designer/gui_progress_bar.ui +86 -86
- data/lib/gui_designer/gui_signal_mapper.ui +179 -179
- data/lib/gui_designer/gui_signal_scanner.ui +261 -261
- data/lib/gui_designer/gui_spi_settings.ui +446 -446
- data/lib/gui_designer/gui_spi_sniffer.ui +156 -156
- data/lib/gui_designer/gui_swd_settings.ui +189 -189
- data/lib/gui_designer/gui_uart_baudrate.ui +161 -161
- data/lib/gui_designer/gui_uart_console.ui +284 -284
- data/lib/gui_designer/gui_uart_settings.ui +280 -280
- data/lib/gui_designer/gui_wire_helper.ui +117 -117
- data/lib/images/search.png +0 -0
- data/lib/logs/error.log +0 -63
- data/lib/models/bus.rb +19 -19
- data/lib/models/byte.rb +29 -29
- data/lib/models/chip.rb +41 -41
- data/lib/models/chip_type.rb +14 -14
- data/lib/models/command.rb +20 -20
- data/lib/models/i2c_setting.rb +41 -41
- data/lib/models/manufacturer.rb +14 -14
- data/lib/models/package.rb +26 -26
- data/lib/models/parallel_setting.rb +37 -37
- data/lib/models/pin.rb +14 -14
- data/lib/models/signall.rb +20 -20
- data/lib/models/spi_setting.rb +67 -67
- data/lib/models/swd_setting.rb +25 -25
- data/lib/models/uart_setting.rb +52 -52
- data/lib/models/use.rb +6 -6
- data/lib/startHardsploit.rb +10 -10
- metadata +14 -14
@@ -1,108 +1,108 @@
|
|
1
|
-
#===================================================
|
2
|
-
# Hardsploit GUI - By Opale Security
|
3
|
-
# www.opale-security.com || www.hardsploit.io
|
4
|
-
# License: GNU General Public License v3
|
5
|
-
# License URI: http://www.gnu.org/licenses/gpl.txt
|
6
|
-
#===================================================
|
7
|
-
|
8
|
-
require_relative '../../gui/gui_generic_export'
|
9
|
-
require_relative '../../HardsploitAPI/Modules/SPI/HardsploitAPI_SPI'
|
10
|
-
|
11
|
-
class Spi_export < Qt::Widget
|
12
|
-
slots 'export()'
|
13
|
-
slots 'select_export_file()'
|
14
|
-
|
15
|
-
def initialize(chip)
|
16
|
-
super()
|
17
|
-
@view = Ui_Generic_export.new
|
18
|
-
centerWindow(self)
|
19
|
-
@view.setupUi(self)
|
20
|
-
@view.lbl_chip.setText(chip.reference)
|
21
|
-
inputRestrict(@view.lie_start, 0)
|
22
|
-
inputRestrict(@view.lie_stop, 0)
|
23
|
-
@chip = chip
|
24
|
-
@speeds = {
|
25
|
-
'25.00' => 3,
|
26
|
-
'18.75' => 4,
|
27
|
-
'15.00' => 5,
|
28
|
-
'12.50' => 6,
|
29
|
-
'10.71' => 7,
|
30
|
-
'9.38' => 8,
|
31
|
-
'7.50' => 10,
|
32
|
-
'5.00' => 15,
|
33
|
-
'3.95' => 19,
|
34
|
-
'3.00' => 25,
|
35
|
-
'2.03' => 37,
|
36
|
-
'1.00' => 75,
|
37
|
-
'0.50' => 150,
|
38
|
-
'0.29' => 255
|
39
|
-
}
|
40
|
-
end
|
41
|
-
|
42
|
-
def select_export_file
|
43
|
-
@filepath = Qt::FileDialog.getSaveFileName(self, tr('Select a file'), '/', tr('*.*'))
|
44
|
-
unless @filepath.nil?
|
45
|
-
@view.btn_export.setEnabled(true)
|
46
|
-
@view.btn_full_export.setEnabled(true)
|
47
|
-
@view.lbl_selected_file.setText("#{@filepath.split("/").last}")
|
48
|
-
end
|
49
|
-
rescue Exception => msg
|
50
|
-
ErrorMsg.new.unknown(msg)
|
51
|
-
end
|
52
|
-
|
53
|
-
def export
|
54
|
-
$file = File.open("#{@filepath}", 'w') unless @filepath.nil?
|
55
|
-
if sender.objectName == 'btn_full_export'
|
56
|
-
return false unless control_export_settings('full')
|
57
|
-
start = 0
|
58
|
-
stop = @chip.spi_setting.total_size - 1
|
59
|
-
control = @chip.spi_setting.total_size
|
60
|
-
else
|
61
|
-
return false unless control_export_settings('partial')
|
62
|
-
start = @view.lie_start.text.to_i
|
63
|
-
stop = @view.lie_stop.text.to_i
|
64
|
-
control = (stop - start) + 1
|
65
|
-
end
|
66
|
-
Firmware.new('SPI')
|
67
|
-
$pgb = Progress_bar.new("SPI: Exporting...")
|
68
|
-
$pgb.show
|
69
|
-
spi = HardsploitAPI_SPI.new(
|
70
|
-
speed: @speeds[@chip.spi_setting.frequency],
|
71
|
-
mode: @chip.spi_setting.mode
|
72
|
-
)
|
73
|
-
spi.spi_Generic_Dump(
|
74
|
-
readSpiCommand: @chip.spi_setting.command_read,
|
75
|
-
startAddress: start,
|
76
|
-
stopAddress: stop,
|
77
|
-
sizeMax: @chip.spi_setting.total_size.to_i
|
78
|
-
)
|
79
|
-
$file.close unless $file.nil?
|
80
|
-
ErrorMsg.new.filesize_error unless control == File.size(@filepath)
|
81
|
-
rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
|
82
|
-
ErrorMsg.new.hardsploit_not_found
|
83
|
-
rescue HardsploitAPI::ERROR::USB_ERROR
|
84
|
-
ErrorMsg.new.usb_error
|
85
|
-
rescue Exception => msg
|
86
|
-
ErrorMsg.new.unknown(msg)
|
87
|
-
end
|
88
|
-
|
89
|
-
def control_export_settings(type)
|
90
|
-
return ErrorMsg.new.settings_missing if @chip.spi_setting.nil?
|
91
|
-
return ErrorMsg.new.frequency_missing if @chip.spi_setting.frequency.nil?
|
92
|
-
return ErrorMsg.new.mode_missing if @chip.spi_setting.command_read.nil?
|
93
|
-
return ErrorMsg.new.full_size_error if @chip.spi_setting.total_size.nil?
|
94
|
-
return ErrorMsg.new.full_size_error if @chip.spi_setting.total_size.zero?
|
95
|
-
if type == 'partial'
|
96
|
-
return ErrorMsg.new.start_stop_missing if @view.lie_start.text.empty?
|
97
|
-
return ErrorMsg.new.start_stop_missing if @view.lie_stop.text.empty?
|
98
|
-
start = @view.lie_start.text.to_i
|
99
|
-
stop = @view.lie_stop.text.to_i
|
100
|
-
total_size = @chip.spi_setting.total_size
|
101
|
-
return ErrorMsg.new.start_neq_stop if start == stop
|
102
|
-
return ErrorMsg.new.start_inf_to_stop if start > stop
|
103
|
-
return ErrorMsg.new.inf_to_total_size if start > (total_size - 1)
|
104
|
-
return ErrorMsg.new.inf_to_total_size if stop > (total_size - 1)
|
105
|
-
end
|
106
|
-
return true
|
107
|
-
end
|
108
|
-
end
|
1
|
+
#===================================================
|
2
|
+
# Hardsploit GUI - By Opale Security
|
3
|
+
# www.opale-security.com || www.hardsploit.io
|
4
|
+
# License: GNU General Public License v3
|
5
|
+
# License URI: http://www.gnu.org/licenses/gpl.txt
|
6
|
+
#===================================================
|
7
|
+
|
8
|
+
require_relative '../../gui/gui_generic_export'
|
9
|
+
require_relative '../../HardsploitAPI/Modules/SPI/HardsploitAPI_SPI'
|
10
|
+
|
11
|
+
class Spi_export < Qt::Widget
|
12
|
+
slots 'export()'
|
13
|
+
slots 'select_export_file()'
|
14
|
+
|
15
|
+
def initialize(chip)
|
16
|
+
super()
|
17
|
+
@view = Ui_Generic_export.new
|
18
|
+
centerWindow(self)
|
19
|
+
@view.setupUi(self)
|
20
|
+
@view.lbl_chip.setText(chip.reference)
|
21
|
+
inputRestrict(@view.lie_start, 0)
|
22
|
+
inputRestrict(@view.lie_stop, 0)
|
23
|
+
@chip = chip
|
24
|
+
@speeds = {
|
25
|
+
'25.00' => 3,
|
26
|
+
'18.75' => 4,
|
27
|
+
'15.00' => 5,
|
28
|
+
'12.50' => 6,
|
29
|
+
'10.71' => 7,
|
30
|
+
'9.38' => 8,
|
31
|
+
'7.50' => 10,
|
32
|
+
'5.00' => 15,
|
33
|
+
'3.95' => 19,
|
34
|
+
'3.00' => 25,
|
35
|
+
'2.03' => 37,
|
36
|
+
'1.00' => 75,
|
37
|
+
'0.50' => 150,
|
38
|
+
'0.29' => 255
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def select_export_file
|
43
|
+
@filepath = Qt::FileDialog.getSaveFileName(self, tr('Select a file'), '/', tr('*.*'))
|
44
|
+
unless @filepath.nil?
|
45
|
+
@view.btn_export.setEnabled(true)
|
46
|
+
@view.btn_full_export.setEnabled(true)
|
47
|
+
@view.lbl_selected_file.setText("#{@filepath.split("/").last}")
|
48
|
+
end
|
49
|
+
rescue Exception => msg
|
50
|
+
ErrorMsg.new.unknown(msg)
|
51
|
+
end
|
52
|
+
|
53
|
+
def export
|
54
|
+
$file = File.open("#{@filepath}", 'w') unless @filepath.nil?
|
55
|
+
if sender.objectName == 'btn_full_export'
|
56
|
+
return false unless control_export_settings('full')
|
57
|
+
start = 0
|
58
|
+
stop = @chip.spi_setting.total_size - 1
|
59
|
+
control = @chip.spi_setting.total_size
|
60
|
+
else
|
61
|
+
return false unless control_export_settings('partial')
|
62
|
+
start = @view.lie_start.text.to_i
|
63
|
+
stop = @view.lie_stop.text.to_i
|
64
|
+
control = (stop - start) + 1
|
65
|
+
end
|
66
|
+
Firmware.new('SPI')
|
67
|
+
$pgb = Progress_bar.new("SPI: Exporting...")
|
68
|
+
$pgb.show
|
69
|
+
spi = HardsploitAPI_SPI.new(
|
70
|
+
speed: @speeds[@chip.spi_setting.frequency],
|
71
|
+
mode: @chip.spi_setting.mode
|
72
|
+
)
|
73
|
+
spi.spi_Generic_Dump(
|
74
|
+
readSpiCommand: @chip.spi_setting.command_read,
|
75
|
+
startAddress: start,
|
76
|
+
stopAddress: stop,
|
77
|
+
sizeMax: @chip.spi_setting.total_size.to_i
|
78
|
+
)
|
79
|
+
$file.close unless $file.nil?
|
80
|
+
ErrorMsg.new.filesize_error unless control == File.size(@filepath)
|
81
|
+
rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
|
82
|
+
ErrorMsg.new.hardsploit_not_found
|
83
|
+
rescue HardsploitAPI::ERROR::USB_ERROR
|
84
|
+
ErrorMsg.new.usb_error
|
85
|
+
rescue Exception => msg
|
86
|
+
ErrorMsg.new.unknown(msg)
|
87
|
+
end
|
88
|
+
|
89
|
+
def control_export_settings(type)
|
90
|
+
return ErrorMsg.new.settings_missing if @chip.spi_setting.nil?
|
91
|
+
return ErrorMsg.new.frequency_missing if @chip.spi_setting.frequency.nil?
|
92
|
+
return ErrorMsg.new.mode_missing if @chip.spi_setting.command_read.nil?
|
93
|
+
return ErrorMsg.new.full_size_error if @chip.spi_setting.total_size.nil?
|
94
|
+
return ErrorMsg.new.full_size_error if @chip.spi_setting.total_size.zero?
|
95
|
+
if type == 'partial'
|
96
|
+
return ErrorMsg.new.start_stop_missing if @view.lie_start.text.empty?
|
97
|
+
return ErrorMsg.new.start_stop_missing if @view.lie_stop.text.empty?
|
98
|
+
start = @view.lie_start.text.to_i
|
99
|
+
stop = @view.lie_stop.text.to_i
|
100
|
+
total_size = @chip.spi_setting.total_size
|
101
|
+
return ErrorMsg.new.start_neq_stop if start == stop
|
102
|
+
return ErrorMsg.new.start_inf_to_stop if start > stop
|
103
|
+
return ErrorMsg.new.inf_to_total_size if start > (total_size - 1)
|
104
|
+
return ErrorMsg.new.inf_to_total_size if stop > (total_size - 1)
|
105
|
+
end
|
106
|
+
return true
|
107
|
+
end
|
108
|
+
end
|
@@ -1,159 +1,159 @@
|
|
1
|
-
#===================================================
|
2
|
-
# Hardsploit GUI - By Opale Security
|
3
|
-
# www.opale-security.com || www.hardsploit.io
|
4
|
-
# License: GNU General Public License v3
|
5
|
-
# License URI: http://www.gnu.org/licenses/gpl.txt
|
6
|
-
#===================================================
|
7
|
-
|
8
|
-
require_relative '../../gui/gui_generic_import'
|
9
|
-
require_relative '../../HardsploitAPI/Modules/SPI/HardsploitAPI_SPI'
|
10
|
-
|
11
|
-
class Spi_import < Qt::Widget
|
12
|
-
slots 'import()'
|
13
|
-
slots 'select_import_file()'
|
14
|
-
|
15
|
-
def initialize(chip)
|
16
|
-
super()
|
17
|
-
@view = Ui_Generic_import.new
|
18
|
-
centerWindow(self)
|
19
|
-
@view.setupUi(self)
|
20
|
-
@view.lbl_chip.setText(chip.reference)
|
21
|
-
inputRestrict(@view.lie_start, 0)
|
22
|
-
@chip = chip
|
23
|
-
@speeds = {
|
24
|
-
'25.00' => 3,
|
25
|
-
'18.75' => 4,
|
26
|
-
'15.00' => 5,
|
27
|
-
'12.50' => 6,
|
28
|
-
'10.71' => 7,
|
29
|
-
'9.38' => 8,
|
30
|
-
'7.50' => 10,
|
31
|
-
'5.00' => 15,
|
32
|
-
'3.95' => 19,
|
33
|
-
'3.00' => 25,
|
34
|
-
'2.03' => 37,
|
35
|
-
'1.00' => 75,
|
36
|
-
'0.50' => 150,
|
37
|
-
'0.29' => 255
|
38
|
-
}
|
39
|
-
end
|
40
|
-
|
41
|
-
def select_import_file
|
42
|
-
@filepath = Qt::FileDialog.getOpenFileName(self, tr('Select a file'), '/', tr('*.*'))
|
43
|
-
unless @filepath.nil?
|
44
|
-
@view.btn_import.setEnabled(true)
|
45
|
-
@view.lbl_selected_file.setText("#{@filepath.split("/").last}")
|
46
|
-
end
|
47
|
-
rescue Exception => msg
|
48
|
-
ErrorMsg.new.unknown(msg)
|
49
|
-
end
|
50
|
-
|
51
|
-
def import
|
52
|
-
return 0 if control_import_settings.zero?
|
53
|
-
spi = HardsploitAPI_SPI.new(
|
54
|
-
speed: @speeds[@chip.spi_setting.frequency],
|
55
|
-
mode: @chip.spi_setting.mode
|
56
|
-
)
|
57
|
-
Firmware.new('SPI')
|
58
|
-
$pgb = Progress_bar.new("SPI: Importing...")
|
59
|
-
$pgb.show
|
60
|
-
@chip.spi_setting.is_flash.zero? ? flash = false : flash = true
|
61
|
-
spi.spi_Generic_Import(
|
62
|
-
startAddress: @view.lie_start.text.to_i,
|
63
|
-
pageSize: @chip.spi_setting.page_size,
|
64
|
-
memorySize: @chip.spi_setting.total_size,
|
65
|
-
dataFile: @filepath,
|
66
|
-
writeSpiCommand: @chip.spi_setting.command_write,
|
67
|
-
writePageLatency: @chip.spi_setting.write_page_latency / 1000.0,
|
68
|
-
enableWriteSpiCommand: @chip.spi_setting.command_write_enable,
|
69
|
-
clearSpiCommand: @chip.spi_setting.command_erase,
|
70
|
-
clearChipTime: @chip.spi_setting.erase_time,
|
71
|
-
isFLASH: flash
|
72
|
-
)
|
73
|
-
rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
|
74
|
-
ErrorMsg.new.hardsploit_not_found
|
75
|
-
rescue HardsploitAPI::ERROR::USB_ERROR
|
76
|
-
ErrorMsg.new.usb_error
|
77
|
-
rescue Exception => msg
|
78
|
-
ErrorMsg.new.unknown(msg)
|
79
|
-
end
|
80
|
-
|
81
|
-
def control_import_settings
|
82
|
-
if @chip.spi_setting.nil?
|
83
|
-
Qt::MessageBox.new(
|
84
|
-
Qt::MessageBox::Warning,
|
85
|
-
'Missing SPI settings',
|
86
|
-
'No settings saved for this chip'
|
87
|
-
).exec
|
88
|
-
return 0
|
89
|
-
end
|
90
|
-
if @chip.spi_setting.total_size.nil? || @chip.spi_setting.page_size.nil?
|
91
|
-
Qt::MessageBox.new(
|
92
|
-
Qt::MessageBox::Warning,
|
93
|
-
'Missing SPI settings',
|
94
|
-
'Total size or page size missing'
|
95
|
-
).exec
|
96
|
-
return 0
|
97
|
-
end
|
98
|
-
if @chip.spi_setting.command_read.nil? || @chip.spi_setting.frequency.nil?
|
99
|
-
Qt::MessageBox.new(
|
100
|
-
Qt::MessageBox::Warning,
|
101
|
-
'Missing SPI settings',
|
102
|
-
'Read command or frequency missing'
|
103
|
-
).exec
|
104
|
-
return 0
|
105
|
-
end
|
106
|
-
if @chip.spi_setting.command_write.nil?
|
107
|
-
Qt::MessageBox.new(
|
108
|
-
Qt::MessageBox::Warning,
|
109
|
-
'Missing SPI settings',
|
110
|
-
'Write command missing'
|
111
|
-
).exec
|
112
|
-
return 0
|
113
|
-
end
|
114
|
-
if @chip.spi_setting.write_page_latency.nil?
|
115
|
-
Qt::MessageBox.new(
|
116
|
-
Qt::MessageBox::Warning,
|
117
|
-
'Missing SPI setting',
|
118
|
-
'SPI write page latency missing'
|
119
|
-
).exec
|
120
|
-
return 0
|
121
|
-
end
|
122
|
-
if @chip.spi_setting.is_flash.nil?
|
123
|
-
Qt::MessageBox.new(
|
124
|
-
Qt::MessageBox::Warning,
|
125
|
-
'Missing SPI setting',
|
126
|
-
'SPI flash nature missing'
|
127
|
-
).exec
|
128
|
-
return 0
|
129
|
-
else
|
130
|
-
if @chip.spi_setting.is_flash == 1
|
131
|
-
if @chip.spi_setting.erase_time.nil? || @chip.spi_setting.command_erase.nil?
|
132
|
-
Qt::MessageBox.new(
|
133
|
-
Qt::MessageBox::Warning,
|
134
|
-
'Missing SPI setting',
|
135
|
-
'SPI erase time or command missing'
|
136
|
-
).exec
|
137
|
-
return 0
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
if @chip.spi_setting.mode.nil?
|
142
|
-
Qt::MessageBox.new(
|
143
|
-
Qt::MessageBox::Warning,
|
144
|
-
'Missing SPI setting',
|
145
|
-
'Mode missing'
|
146
|
-
).exec
|
147
|
-
return 0
|
148
|
-
end
|
149
|
-
if @view.lie_start.text.empty?
|
150
|
-
Qt::MessageBox.new(
|
151
|
-
Qt::MessageBox::Warning,
|
152
|
-
'Missing start address',
|
153
|
-
'Please fill the Start address field'
|
154
|
-
).exec
|
155
|
-
return 0
|
156
|
-
end
|
157
|
-
return 1
|
158
|
-
end
|
159
|
-
end
|
1
|
+
#===================================================
|
2
|
+
# Hardsploit GUI - By Opale Security
|
3
|
+
# www.opale-security.com || www.hardsploit.io
|
4
|
+
# License: GNU General Public License v3
|
5
|
+
# License URI: http://www.gnu.org/licenses/gpl.txt
|
6
|
+
#===================================================
|
7
|
+
|
8
|
+
require_relative '../../gui/gui_generic_import'
|
9
|
+
require_relative '../../HardsploitAPI/Modules/SPI/HardsploitAPI_SPI'
|
10
|
+
|
11
|
+
class Spi_import < Qt::Widget
|
12
|
+
slots 'import()'
|
13
|
+
slots 'select_import_file()'
|
14
|
+
|
15
|
+
def initialize(chip)
|
16
|
+
super()
|
17
|
+
@view = Ui_Generic_import.new
|
18
|
+
centerWindow(self)
|
19
|
+
@view.setupUi(self)
|
20
|
+
@view.lbl_chip.setText(chip.reference)
|
21
|
+
inputRestrict(@view.lie_start, 0)
|
22
|
+
@chip = chip
|
23
|
+
@speeds = {
|
24
|
+
'25.00' => 3,
|
25
|
+
'18.75' => 4,
|
26
|
+
'15.00' => 5,
|
27
|
+
'12.50' => 6,
|
28
|
+
'10.71' => 7,
|
29
|
+
'9.38' => 8,
|
30
|
+
'7.50' => 10,
|
31
|
+
'5.00' => 15,
|
32
|
+
'3.95' => 19,
|
33
|
+
'3.00' => 25,
|
34
|
+
'2.03' => 37,
|
35
|
+
'1.00' => 75,
|
36
|
+
'0.50' => 150,
|
37
|
+
'0.29' => 255
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
def select_import_file
|
42
|
+
@filepath = Qt::FileDialog.getOpenFileName(self, tr('Select a file'), '/', tr('*.*'))
|
43
|
+
unless @filepath.nil?
|
44
|
+
@view.btn_import.setEnabled(true)
|
45
|
+
@view.lbl_selected_file.setText("#{@filepath.split("/").last}")
|
46
|
+
end
|
47
|
+
rescue Exception => msg
|
48
|
+
ErrorMsg.new.unknown(msg)
|
49
|
+
end
|
50
|
+
|
51
|
+
def import
|
52
|
+
return 0 if control_import_settings.zero?
|
53
|
+
spi = HardsploitAPI_SPI.new(
|
54
|
+
speed: @speeds[@chip.spi_setting.frequency],
|
55
|
+
mode: @chip.spi_setting.mode
|
56
|
+
)
|
57
|
+
Firmware.new('SPI')
|
58
|
+
$pgb = Progress_bar.new("SPI: Importing...")
|
59
|
+
$pgb.show
|
60
|
+
@chip.spi_setting.is_flash.zero? ? flash = false : flash = true
|
61
|
+
spi.spi_Generic_Import(
|
62
|
+
startAddress: @view.lie_start.text.to_i,
|
63
|
+
pageSize: @chip.spi_setting.page_size,
|
64
|
+
memorySize: @chip.spi_setting.total_size,
|
65
|
+
dataFile: @filepath,
|
66
|
+
writeSpiCommand: @chip.spi_setting.command_write,
|
67
|
+
writePageLatency: @chip.spi_setting.write_page_latency / 1000.0,
|
68
|
+
enableWriteSpiCommand: @chip.spi_setting.command_write_enable,
|
69
|
+
clearSpiCommand: @chip.spi_setting.command_erase,
|
70
|
+
clearChipTime: @chip.spi_setting.erase_time,
|
71
|
+
isFLASH: flash
|
72
|
+
)
|
73
|
+
rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
|
74
|
+
ErrorMsg.new.hardsploit_not_found
|
75
|
+
rescue HardsploitAPI::ERROR::USB_ERROR
|
76
|
+
ErrorMsg.new.usb_error
|
77
|
+
rescue Exception => msg
|
78
|
+
ErrorMsg.new.unknown(msg)
|
79
|
+
end
|
80
|
+
|
81
|
+
def control_import_settings
|
82
|
+
if @chip.spi_setting.nil?
|
83
|
+
Qt::MessageBox.new(
|
84
|
+
Qt::MessageBox::Warning,
|
85
|
+
'Missing SPI settings',
|
86
|
+
'No settings saved for this chip'
|
87
|
+
).exec
|
88
|
+
return 0
|
89
|
+
end
|
90
|
+
if @chip.spi_setting.total_size.nil? || @chip.spi_setting.page_size.nil?
|
91
|
+
Qt::MessageBox.new(
|
92
|
+
Qt::MessageBox::Warning,
|
93
|
+
'Missing SPI settings',
|
94
|
+
'Total size or page size missing'
|
95
|
+
).exec
|
96
|
+
return 0
|
97
|
+
end
|
98
|
+
if @chip.spi_setting.command_read.nil? || @chip.spi_setting.frequency.nil?
|
99
|
+
Qt::MessageBox.new(
|
100
|
+
Qt::MessageBox::Warning,
|
101
|
+
'Missing SPI settings',
|
102
|
+
'Read command or frequency missing'
|
103
|
+
).exec
|
104
|
+
return 0
|
105
|
+
end
|
106
|
+
if @chip.spi_setting.command_write.nil?
|
107
|
+
Qt::MessageBox.new(
|
108
|
+
Qt::MessageBox::Warning,
|
109
|
+
'Missing SPI settings',
|
110
|
+
'Write command missing'
|
111
|
+
).exec
|
112
|
+
return 0
|
113
|
+
end
|
114
|
+
if @chip.spi_setting.write_page_latency.nil?
|
115
|
+
Qt::MessageBox.new(
|
116
|
+
Qt::MessageBox::Warning,
|
117
|
+
'Missing SPI setting',
|
118
|
+
'SPI write page latency missing'
|
119
|
+
).exec
|
120
|
+
return 0
|
121
|
+
end
|
122
|
+
if @chip.spi_setting.is_flash.nil?
|
123
|
+
Qt::MessageBox.new(
|
124
|
+
Qt::MessageBox::Warning,
|
125
|
+
'Missing SPI setting',
|
126
|
+
'SPI flash nature missing'
|
127
|
+
).exec
|
128
|
+
return 0
|
129
|
+
else
|
130
|
+
if @chip.spi_setting.is_flash == 1
|
131
|
+
if @chip.spi_setting.erase_time.nil? || @chip.spi_setting.command_erase.nil?
|
132
|
+
Qt::MessageBox.new(
|
133
|
+
Qt::MessageBox::Warning,
|
134
|
+
'Missing SPI setting',
|
135
|
+
'SPI erase time or command missing'
|
136
|
+
).exec
|
137
|
+
return 0
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
if @chip.spi_setting.mode.nil?
|
142
|
+
Qt::MessageBox.new(
|
143
|
+
Qt::MessageBox::Warning,
|
144
|
+
'Missing SPI setting',
|
145
|
+
'Mode missing'
|
146
|
+
).exec
|
147
|
+
return 0
|
148
|
+
end
|
149
|
+
if @view.lie_start.text.empty?
|
150
|
+
Qt::MessageBox.new(
|
151
|
+
Qt::MessageBox::Warning,
|
152
|
+
'Missing start address',
|
153
|
+
'Please fill the Start address field'
|
154
|
+
).exec
|
155
|
+
return 0
|
156
|
+
end
|
157
|
+
return 1
|
158
|
+
end
|
159
|
+
end
|