hardsploit_gui 2.2 → 2.3

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.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/bin/hardsploit_gui +2 -2
  3. data/lib/{Firmware → Firmwares}/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
  4. data/lib/{Firmware/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd → Firmwares/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd} +0 -0
  5. data/lib/Firmwares/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
  6. data/lib/{Firmware/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd → Firmwares/FPGA/SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd} +0 -0
  7. data/lib/Firmwares/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
  8. data/lib/{Firmware → Firmwares}/FPGA/TEST/TEST_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_TEST_INTERACT.rpd +0 -0
  9. data/lib/Firmwares/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd +0 -0
  10. data/lib/{Firmware → Firmwares}/FPGA/VersionFPGA.rb +1 -1
  11. data/lib/{Firmware → Firmwares}/UC/HARDSPLOIT_FIRMWARE_UC.bin +0 -0
  12. data/lib/{Firmware → Firmwares}/UC/VersionUC.rb +1 -1
  13. data/lib/HardsploitAPI/Core/HardsploitAPI.rb +210 -0
  14. data/lib/HardsploitAPI/Core/HardsploitAPI_CONSTANT.rb +150 -0
  15. data/lib/HardsploitAPI/Core/HardsploitAPI_ERROR.rb +109 -0
  16. data/lib/HardsploitAPI/Core/HardsploitAPI_FIRMWARE.rb +305 -0
  17. data/lib/HardsploitAPI/{HardsploitAPI_PROGRESS.rb → Core/HardsploitAPI_PROGRESS.rb} +0 -0
  18. data/lib/HardsploitAPI/Core/HardsploitAPI_USB_COMMUNICATION.rb +166 -0
  19. data/lib/HardsploitAPI/Modules/I2C/HardsploitAPI_I2C.rb +356 -0
  20. data/lib/HardsploitAPI/{HardsploitAPI_NO_MUX_PARALLELE_MEMORY.rb → Modules/NO_MUX_PARALLEL_MEMORY/HardsploitAPI_NO_MUX_PARALLEL_MEMORY.rb} +26 -49
  21. data/lib/HardsploitAPI/Modules/NRF24L01/HardsploitAPI_NRF24L01.rb +306 -0
  22. data/lib/HardsploitAPI/Modules/SPI/HardsploitAPI_SPI.rb +340 -0
  23. data/lib/HardsploitAPI/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER.rb +83 -0
  24. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD.rb +367 -0
  25. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_DEBUG.rb +89 -0
  26. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_MEM_AP.rb +61 -0
  27. data/lib/HardsploitAPI/{SWD → Modules/SWD}/HardsploitAPI_SWD_STM32.rb +32 -15
  28. data/lib/HardsploitAPI/{HardsploitAPI_TEST_INTERACT.rb → Modules/TEST/HardsploitAPI_TEST_INTERACT.rb} +1 -1
  29. data/lib/HardsploitAPI/Modules/UART/HardsploitAPI_UART.rb +196 -0
  30. data/lib/Hardsploit_gui.rb +96 -0
  31. data/lib/class/Chip_editor.rb +186 -330
  32. data/lib/class/Chip_management.rb +496 -0
  33. data/lib/class/Command_editor.rb +130 -182
  34. data/lib/class/Command_table.rb +16 -22
  35. data/lib/class/Console.rb +0 -2
  36. data/lib/class/ErrorMsg.rb +312 -0
  37. data/lib/class/Export.rb +140 -0
  38. data/lib/class/Export_manager.rb +43 -43
  39. data/lib/class/Firmware.rb +52 -11
  40. data/lib/class/Generic_commands.rb +180 -190
  41. data/lib/class/Import.rb +193 -0
  42. data/lib/class/Progress_bar.rb +1 -0
  43. data/lib/class/Signal_mapper.rb +120 -0
  44. data/lib/class/Wire_helper.rb +132 -148
  45. data/lib/class/{I2C → i2c}/I2c_command.rb +16 -13
  46. data/lib/class/i2c/I2c_export.rb +95 -0
  47. data/lib/class/i2c/I2c_import.rb +117 -0
  48. data/lib/class/i2c/I2c_scanner.rb +114 -0
  49. data/lib/class/i2c/I2c_settings.rb +148 -0
  50. data/lib/class/parallel/Parallel_export.rb +118 -0
  51. data/lib/class/parallel/Parallel_import.rb +113 -0
  52. data/lib/class/parallel/Parallel_settings.rb +81 -0
  53. data/lib/class/spi/Spi_export.rb +108 -0
  54. data/lib/class/spi/Spi_import.rb +159 -0
  55. data/lib/class/spi/Spi_settings.rb +108 -0
  56. data/lib/class/spi/Spi_sniffer.rb +101 -0
  57. data/lib/class/swd/Swd.rb +125 -0
  58. data/lib/class/swd/Swd_scanner.rb +121 -0
  59. data/lib/class/swd/Swd_settings.rb +76 -0
  60. data/lib/class/uart/Uart_baudrate.rb +62 -0
  61. data/lib/class/uart/Uart_console.rb +115 -0
  62. data/lib/class/uart/Uart_settings.rb +102 -0
  63. data/lib/db/associations.rb +42 -29
  64. data/lib/db/database.rb +4 -0
  65. data/lib/db/development.sqlite3 +0 -0
  66. data/lib/db/migrate/004_create_manufacturers.rb +13 -0
  67. data/lib/db/migrate/005_create_packages.rb +13 -0
  68. data/lib/db/migrate/006_create_chip_types.rb +11 -0
  69. data/lib/db/migrate/007_create_buses.rb +11 -0
  70. data/lib/db/migrate/008_create_signals.rb +14 -0
  71. data/lib/db/migrate/009_create_chips.rb +25 -0
  72. data/lib/db/migrate/010_create_commands.rb +21 -0
  73. data/lib/db/migrate/011_create_bytes.rb +19 -0
  74. data/lib/db/migrate/012_create_i2c_settings.rb +21 -0
  75. data/lib/db/migrate/013_create_spi_settings.rb +26 -0
  76. data/lib/db/migrate/014_create_parallel_settings.rb +21 -0
  77. data/lib/db/migrate/015_create_pins.rb +19 -0
  78. data/lib/db/migrate/016_create_uses.rb +17 -0
  79. data/lib/db/migrate/017_create_swd_settings.rb +19 -0
  80. data/lib/db/migrate/018_create_uart_settings.rb +22 -0
  81. data/lib/db/schema.rb +157 -0
  82. data/lib/db/seeds.rb +161 -0
  83. data/lib/gui/gui_chip_editor.rb +23 -22
  84. data/lib/gui/gui_chip_management.rb +43 -38
  85. data/lib/gui/gui_command_editor.rb +2 -1
  86. data/lib/gui/gui_export.rb +132 -0
  87. data/lib/gui/gui_generic_commands.rb +69 -31
  88. data/lib/gui/gui_generic_export.rb +18 -2
  89. data/lib/gui/gui_generic_import.rb +18 -2
  90. data/lib/gui/gui_i2c_command.rb +2 -1
  91. data/lib/gui/gui_i2c_settings.rb +2 -2
  92. data/lib/gui/gui_import.rb +131 -0
  93. data/lib/gui/gui_parallel_settings.rb +2 -1
  94. data/lib/gui/gui_progress_bar.rb +2 -1
  95. data/lib/gui/gui_signal_mapper.rb +121 -0
  96. data/lib/gui/gui_signal_scanner.rb +146 -0
  97. data/lib/gui/gui_spi_settings.rb +6 -2
  98. data/lib/gui/gui_spi_sniffer.rb +112 -0
  99. data/lib/gui/gui_swd_settings.rb +166 -0
  100. data/lib/gui/gui_uart_baudrate.rb +114 -0
  101. data/lib/gui/gui_uart_console.rb +164 -0
  102. data/lib/gui/gui_uart_settings.rb +243 -0
  103. data/lib/gui_designer/gui_chip_editor.ui +9 -6
  104. data/lib/gui_designer/gui_chip_management.ui +79 -35
  105. data/lib/gui_designer/gui_command_editor.ui +3 -0
  106. data/lib/gui_designer/gui_export.ui +171 -0
  107. data/lib/gui_designer/gui_generic_commands.ui +274 -190
  108. data/lib/gui_designer/gui_generic_export.ui +24 -1
  109. data/lib/gui_designer/gui_generic_import.ui +25 -2
  110. data/lib/gui_designer/gui_i2c_command.ui +3 -0
  111. data/lib/gui_designer/gui_i2c_settings.ui +2 -2
  112. data/lib/gui_designer/gui_import.ui +168 -0
  113. data/lib/gui_designer/gui_parallel_settings.ui +4 -1
  114. data/lib/gui_designer/gui_progress_bar.ui +3 -0
  115. data/lib/gui_designer/gui_signal_mapper.ui +179 -0
  116. data/lib/gui_designer/gui_signal_scanner.ui +261 -0
  117. data/lib/gui_designer/gui_spi_settings.ui +15 -2
  118. data/lib/gui_designer/gui_spi_sniffer.ui +156 -0
  119. data/lib/gui_designer/gui_swd_settings.ui +189 -0
  120. data/lib/gui_designer/gui_uart_baudrate.ui +161 -0
  121. data/lib/gui_designer/gui_uart_console.ui +284 -0
  122. data/lib/gui_designer/gui_uart_settings.ui +280 -0
  123. data/lib/logs/error.log +63 -0
  124. data/lib/models/bus.rb +19 -0
  125. data/lib/models/byte.rb +29 -0
  126. data/lib/models/chip.rb +41 -0
  127. data/lib/models/chip_type.rb +14 -0
  128. data/lib/models/command.rb +20 -0
  129. data/lib/models/i2c_setting.rb +41 -0
  130. data/lib/models/manufacturer.rb +14 -0
  131. data/lib/models/package.rb +26 -0
  132. data/lib/models/parallel_setting.rb +37 -0
  133. data/lib/models/pin.rb +14 -0
  134. data/lib/models/signall.rb +20 -0
  135. data/lib/models/spi_setting.rb +67 -0
  136. data/lib/models/swd_setting.rb +25 -0
  137. data/lib/models/uart_setting.rb +52 -0
  138. data/lib/models/use.rb +6 -0
  139. data/lib/startHardsploit.rb +2 -2
  140. metadata +106 -41
  141. data/lib/Firmware/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
  142. data/lib/HardsploitAPI/HardsploitAPI.rb +0 -133
  143. data/lib/HardsploitAPI/HardsploitAPI_CONSTANT.rb +0 -145
  144. data/lib/HardsploitAPI/HardsploitAPI_ERROR.rb +0 -38
  145. data/lib/HardsploitAPI/HardsploitAPI_FIRMWARE.rb +0 -311
  146. data/lib/HardsploitAPI/HardsploitAPI_I2C.rb +0 -360
  147. data/lib/HardsploitAPI/HardsploitAPI_SPI.rb +0 -369
  148. data/lib/HardsploitAPI/HardsploitAPI_USB_COMMUNICATION.rb +0 -148
  149. data/lib/HardsploitAPI/LICENSE.txt +0 -674
  150. data/lib/HardsploitAPI/README.md +0 -22
  151. data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD.rb +0 -249
  152. data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_DEBUG.rb +0 -102
  153. data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_MEM_AP.rb +0 -78
  154. data/lib/HardsploitAPI/TRADEMARK +0 -3
  155. data/lib/class/HardsploitGUI.rb +0 -463
  156. data/lib/class/I2C/I2c_export.rb +0 -118
  157. data/lib/class/I2C/I2c_import.rb +0 -79
  158. data/lib/class/I2C/I2c_settings.rb +0 -129
  159. data/lib/class/PARALLEL/Parallel_export.rb +0 -146
  160. data/lib/class/PARALLEL/Parallel_import.rb +0 -88
  161. data/lib/class/PARALLEL/Parallel_settings.rb +0 -102
  162. data/lib/class/SPI/Spi_export.rb +0 -138
  163. data/lib/class/SPI/Spi_import.rb +0 -113
  164. data/lib/class/SPI/Spi_settings.rb +0 -134
  165. data/lib/db/hs.db +0 -0
  166. data/lib/hardsploit.rb +0 -131
@@ -1,88 +0,0 @@
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 '../../HardsploitAPI/HardsploitAPI'
9
- require_relative '../../gui/gui_generic_import'
10
-
11
- class Parallel_import < Qt::Widget
12
- slots 'import()'
13
- slots 'select_import_file()'
14
-
15
- def initialize(api, chip)
16
- super()
17
- @parallel_import_gui = Ui_Generic_import.new
18
- centerWindow(self)
19
- @parallel_import_gui.setupUi(self)
20
- @parallel_import_gui.lbl_chip.setText(chip.chip_reference)
21
- inputRestrict(@parallel_import_gui.lie_start, 0)
22
- @api = api
23
- @chip_settings = Parallel.find_by(parallel_chip: chip.chip_id)
24
- end
25
-
26
- def select_import_file
27
- @filepath = Qt::FileDialog.getOpenFileName(self, tr('Select a file'), '/', tr('Bin file (*.bin)'))
28
- unless @filepath.nil?
29
- $file = File.open("#{@filepath}", 'w')
30
- @parallel_import_gui.btn_import.setEnabled(true)
31
- end
32
- rescue Exception => msg
33
- logger = Logger.new($logFilePath)
34
- logger.error msg
35
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while openning the export file. Consult the logs for more details').exec
36
- end
37
-
38
- def close_file
39
- unless $file.nil?
40
- $file.close
41
- end
42
- rescue Exception => msg
43
- logger = Logger.new($logFilePath)
44
- logger.error msg
45
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while closing the export file. Consult the logs for more details').exec
46
- end
47
-
48
- def import
49
- return 0 if control_import_settings.zero?
50
- start = @parallel_import_gui.lie_start.text.to_i
51
- Firmware.new(@api, 'PARALLEL')
52
- time = Time.new
53
- # API COMMAND GOES HERE
54
- rescue Exception => msg
55
- logger = Logger.new($logFilePath)
56
- logger.error msg
57
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while partial import operation. Consult the logs for more details').exec
58
- end
59
-
60
- def control_import_settings
61
- file_size = File.size("#{@filepath}")
62
- if @chip_settings.nil?
63
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing parallel settings', 'No settings saved for this chip').exec
64
- return 0
65
- end
66
- if @chip_settings.parallel_total_size.nil? || @chip_settings.parallel_word_size.nil?
67
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing parallel settings', 'Total size or word size settings missing').exec
68
- return 0
69
- end
70
- if @chip_settings.parallel_page_size.nil? || @chip_settings.parallel_write_latency.nil?
71
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing parallel settings', 'Page size or write latency settings missing').exec
72
- return 0
73
- end
74
- if @parallel_import_gui.lie_start.text.empty?
75
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing start address', 'Please fill the start address field').exec
76
- return 0
77
- end
78
- if file_size > @chip_settings.parallel_total_size
79
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Incorrect file size', 'The file size is superior to the chip capacity').exec
80
- return 0
81
- end
82
- if file_size > (@chip_settings.parallel_total_size - @parallel_import_gui.lie_start)
83
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Incorrect file size', 'Starting at this address, the file size is superior to the chip capacity').exec
84
- return 0
85
- end
86
- return 1
87
- end
88
- end
@@ -1,102 +0,0 @@
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_parallel_settings'
9
- class Parallel_settings < Qt::Widget
10
- slots 'save_settings()'
11
-
12
- def initialize(chip)
13
- super()
14
- @parallel_settings_gui = Ui_Parallel_settings.new
15
- centerWindow(self)
16
- @parallel_settings_gui.setupUi(self)
17
- @parallel_settings_gui.lbl_chip.setText(chip.chip_reference)
18
- inputRestrict(@parallel_settings_gui.lie_total_size, 0)
19
- inputRestrict(@parallel_settings_gui.lie_write_latency, 0)
20
- inputRestrict(@parallel_settings_gui.lie_read_latency, 0)
21
- inputRestrict(@parallel_settings_gui.lie_page_size, 0)
22
- @chip_settings = Parallel.find_by(parallel_chip: chip.chip_id)
23
- @chip = chip
24
- feed_settings_form
25
- end
26
-
27
- def save_settings
28
- if @chip_settings.nil?
29
- create
30
- else
31
- @chip_settings = Parallel.find_by(parallel_chip: @chip.chip_id)
32
- update
33
- end
34
- end
35
-
36
- def feed_settings_form
37
- unless @chip_settings.nil?
38
- @parallel_settings_gui.lie_read_latency.setText(@chip_settings.parallel_read_latency.to_s)
39
- @parallel_settings_gui.lie_write_latency.setText(@chip_settings.parallel_write_latency.to_s)
40
- @parallel_settings_gui.lie_page_size.setText(@chip_settings.parallel_page_size.to_s)
41
- @parallel_settings_gui.lie_total_size.setText(@chip_settings.parallel_total_size.to_s)
42
- if @chip_settings.parallel_word_size.zero?
43
- @parallel_settings_gui.rbn_8b.setChecked(true)
44
- else
45
- @parallel_settings_gui.rbn_16b.setChecked(true)
46
- end
47
- end
48
- rescue Exception => msg
49
- logger = Logger.new($logFilePath)
50
- logger.error msg
51
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error while loading the form. Consult the log for more details').exec
52
- end
53
-
54
- def create
55
- if @parallel_settings_gui.rbn_8b.isChecked
56
- word_size = 0
57
- else
58
- word_size = 1
59
- end
60
- @chip_settings = Parallel.create(
61
- parallel_word_size: word_size,
62
- parallel_write_latency: @parallel_settings_gui.lie_write_latency,
63
- parallel_read_latency: @parallel_settings_gui.lie_read_latency.text,
64
- parallel_page_size: @parallel_settings_gui.lie_page_size.text,
65
- parallel_total_size: @parallel_settings_gui.lie_total_size.text,
66
- parallel_chip: @chip.chip_id
67
- )
68
- Qt::MessageBox.new(Qt::MessageBox::Information, 'Succes', 'Parallel parameters created successfully').exec
69
- rescue Exception => msg
70
- logger = Logger.new($logFilePath)
71
- logger.error msg
72
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when saving the parallel parameters. Consult the log for more details').exec
73
- end
74
-
75
- def update
76
- if @parallel_settings_gui.rbn_8b.isChecked
77
- word_size = 0
78
- else
79
- word_size = 1
80
- end
81
- if @chip_settings.parallel_page_size != @parallel_settings_gui.lie_page_size
82
- @chip_settings.update(parallel_page_size: @parallel_settings_gui.lie_page_size.text)
83
- end
84
- if @chip_settings.parallel_total_size != @parallel_settings_gui.lie_total_size
85
- @chip_settings.update(parallel_total_size: @parallel_settings_gui.lie_total_size.text)
86
- end
87
- if @chip_settings.parallel_read_latency != @parallel_settings_gui.lie_read_latency
88
- @chip_settings.update(parallel_read_latency: @parallel_settings_gui.lie_read_latency.text)
89
- end
90
- if @chip_settings.parallel_write_latency != @parallel_settings_gui.lie_write_latency
91
- @chip_settings.update(parallel_write_latency: @parallel_settings_gui.lie_write_latency.text)
92
- end
93
- if @chip_settings.parallel_word_size != word_size
94
- @chip_settings.update(parallel_word_size: word_size)
95
- end
96
- Qt::MessageBox.new(Qt::MessageBox::Information, 'Succes', 'Parallel parameters saved successfully').exec
97
- rescue Exception => msg
98
- logger = Logger.new($logFilePath)
99
- logger.error msg
100
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when saving the parallel parameters. Consult the log for more details').exec
101
- end
102
- end
@@ -1,138 +0,0 @@
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 '../../HardsploitAPI/HardsploitAPI'
9
- require_relative '../../gui/gui_generic_export'
10
-
11
- class Spi_export < Qt::Widget
12
- slots 'export()'
13
- slots 'select_export_file()'
14
-
15
- def initialize(api, chip)
16
- super()
17
- @spi_export_gui = Ui_Generic_export.new
18
- centerWindow(self)
19
- @spi_export_gui.setupUi(self)
20
- @spi_export_gui.lbl_chip.setText(chip.chip_reference)
21
- inputRestrict(@spi_export_gui.lie_start, 0)
22
- inputRestrict(@spi_export_gui.lie_stop, 0)
23
- @api = api
24
- @chip_settings = Spi.find_by(spi_chip: chip.chip_id)
25
- @speeds = {
26
- '25.00' => 3,
27
- '18.75' => 4,
28
- '15.00' => 5,
29
- '12.50' => 6,
30
- '10.71' => 7,
31
- '9.38' => 8,
32
- '7.50' => 10,
33
- '5.00' => 15,
34
- '3.95' => 19,
35
- '3.00' => 25,
36
- '2.03' => 37,
37
- '1.00' => 75,
38
- '0.50' => 150,
39
- '0.29' => 255
40
- }
41
- end
42
-
43
- def select_export_file
44
- @filepath = Qt::FileDialog.getSaveFileName(self, tr('Select a file'), '/', tr('Bin file (*.bin)'))
45
- unless @filepath.nil?
46
- $file = File.open("#{@filepath}", 'w')
47
- @spi_export_gui.btn_export.setEnabled(true)
48
- @spi_export_gui.btn_full_export.setEnabled(true)
49
- end
50
- rescue Exception => msg
51
- logger = Logger.new($logFilePath)
52
- logger.error msg
53
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while openning the export file. Consult the logs for more details').exec
54
- end
55
-
56
- def close_file
57
- unless $file.nil?
58
- $file.close
59
- end
60
- rescue Exception => msg
61
- logger = Logger.new($logFilePath)
62
- logger.error msg
63
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while closing the export file. Consult the logs for more details').exec
64
- end
65
-
66
- def export
67
- if sender.objectName == 'btn_full_export'
68
- return 0 if control_export_settings('full').zero?
69
- else
70
- return 0 if control_export_settings('partial').zero?
71
- end
72
- Firmware.new(@api, 'SPI')
73
- $pgb = Progress_bar.new("SPI: Exporting...")
74
- $pgb.show
75
- if sender.objectName == 'btn_full_export'
76
- @api.spi_Generic_Dump(@chip_settings.spi_mode, @speeds[@chip_settings.spi_frequency], @chip_settings.spi_command_read, 0, @chip_settings.spi_total_size - 1, @chip_settings.spi_total_size.to_i)
77
- close_file
78
- control_export_result('full', @chip_settings.spi_total_size - 1)
79
- else
80
- @api.spi_Generic_Dump(@chip_settings.spi_mode, @speeds[@chip_settings.spi_frequency], @chip_settings.spi_command_read, @spi_export_gui.lie_start.text.to_i, @spi_export_gui.lie_stop.text.to_i, @chip_settings.spi_total_size.to_i)
81
- close_file
82
- control_export_result('partial', @spi_export_gui.lie_stop.text.to_i)
83
- end
84
- @spi_export_gui.btn_export.setEnabled(false)
85
- @spi_export_gui.btn_full_export.setEnabled(false)
86
- rescue Exception => msg
87
- logger = Logger.new($logFilePath)
88
- logger.error msg
89
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while full export operation. Consult the logs for more details').exec
90
- end
91
-
92
- def control_export_result(type, stop)
93
- if type == 'partial'
94
- toCompare = ((stop - @spi_export_gui.lie_start.text.to_i) + 1)
95
- else
96
- toCompare = @chip_settings.spi_total_size
97
- end
98
- file_size = File.size(@filepath)
99
- if toCompare != file_size
100
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Error', 'Dump error: Size does not match').exec
101
- end
102
- end
103
-
104
- def control_export_settings(type)
105
- if @chip_settings.nil?
106
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI settings', 'No settings saved for this chip').exec
107
- return 0
108
- end
109
- if @chip_settings.spi_command_read.nil? || @chip_settings.spi_frequency.nil?
110
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI settings', 'Read command or frequency settings missing').exec
111
- return 0
112
- end
113
- if @chip_settings.spi_mode.nil?
114
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI setting', 'Mode setting missing').exec
115
- return 0
116
- end
117
- if type == 'full'
118
- if @chip_settings.spi_total_size.zero? || @chip_settings.spi_total_size.nil?
119
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Empty field', 'Full size setting missing or equal 0').exec
120
- return 0
121
- end
122
- else
123
- if @spi_export_gui.lie_start.text.empty? || @spi_export_gui.lie_stop.text.empty?
124
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Empty field', 'Start and stop address must be filled').exec
125
- return 0
126
- end
127
- if @spi_export_gui.lie_start.text.to_i > @spi_export_gui.lie_stop.text.to_i
128
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Wrong value', 'Start address must be inforior to the stop address').exec
129
- return 0
130
- end
131
- if @spi_export_gui.lie_start.text.to_i > (@chip_settings.spi_total_size - 1) || @spi_export_gui.lie_stop.text.to_i > (@chip_settings.spi_total_size - 1)
132
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Wrong value', 'Start and stop address must be inforior to the chip total size').exec
133
- return 0
134
- end
135
- end
136
- return 1
137
- end
138
- end
@@ -1,113 +0,0 @@
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 '../../HardsploitAPI/HardsploitAPI'
9
- require_relative '../../gui/gui_generic_import'
10
-
11
- class Spi_import < Qt::Widget
12
- slots 'import()'
13
- slots 'select_import_file()'
14
-
15
- def initialize(api, chip)
16
- super()
17
- @spi_import_gui = Ui_Generic_import.new
18
- centerWindow(self)
19
- @spi_import_gui.setupUi(self)
20
- @spi_import_gui.lbl_chip.setText(chip.chip_reference)
21
- inputRestrict(@spi_import_gui.lie_start, 0)
22
- @api = api
23
- @chip = chip
24
- @chip_settings = Spi.find_by(spi_chip: chip.chip_id)
25
- @speeds = {
26
- '25.00' => 3,
27
- '18.75' => 4,
28
- '15.00' => 5,
29
- '12.50' => 6,
30
- '10.71' => 7,
31
- '9.38' => 8,
32
- '7.50' => 10,
33
- '5.00' => 15,
34
- '3.95' => 19,
35
- '3.00' => 25,
36
- '2.03' => 37,
37
- '1.00' => 75,
38
- '0.50' => 150,
39
- '0.29' => 255
40
- }
41
- end
42
-
43
- def select_import_file
44
- @filepath = Qt::FileDialog.getOpenFileName(self, tr('Select a file'), '/', tr('Bin file (*.bin)'))
45
- @spi_import_gui.btn_import.setEnabled(true) unless @filepath.nil?
46
- rescue Exception => msg
47
- logger = Logger.new($logFilePath)
48
- logger.error msg
49
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while openning the export file. Consult the logs for more details').exec
50
- end
51
-
52
- def import
53
- return 0 if control_import_settings.zero?
54
- start = @spi_import_gui.lie_start.text.to_i
55
- Firmware.new(@api, 'SPI')
56
- $pgb = Progress_bar.new("SPI: Importing...")
57
- $pgb.show
58
- if @chip_settings.spi_is_flash.zero?
59
- flash = false
60
- else
61
- flash = true
62
- end
63
- @api.spi_Generic_Import(@chip_settings.spi_mode, @speeds[@chip_settings.spi_frequency], start, @chip_settings.spi_page_size, @chip_settings.spi_total_size, @filepath, @chip_settings.spi_command_write, @chip_settings.spi_write_page_latency/1000.0, @chip_settings.spi_command_write_enable, @chip_settings.spi_command_erase, @chip_settings.spi_erase_time, flash)
64
- rescue Exception => msg
65
- logger = Logger.new($logFilePath)
66
- logger.error msg
67
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while partial import operation. Consult the logs for more details').exec
68
- end
69
-
70
- def control_import_settings
71
- @chip_settings = Spi.find_by(spi_chip: @chip.chip_id)
72
- if @chip_settings.nil?
73
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI settings', 'No settings saved for this chip').exec
74
- return 0
75
- end
76
- if @chip_settings.spi_total_size.nil? || @chip_settings.spi_page_size.nil?
77
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI settings', 'Total size or page size missing').exec
78
- return 0
79
- end
80
- if @chip_settings.spi_command_read.nil? || @chip_settings.spi_frequency.nil?
81
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI settings', 'Read command or frequency missing').exec
82
- return 0
83
- end
84
- if @chip_settings.spi_command_write.nil?
85
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI settings', 'Write command missing').exec
86
- return 0
87
- end
88
- if @chip_settings.spi_write_page_latency.nil?
89
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI setting', 'SPI write page latency missing').exec
90
- return 0
91
- end
92
- if @chip_settings.spi_is_flash.nil?
93
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI setting', 'SPI flash nature missing').exec
94
- return 0
95
- else
96
- if @chip_settings.spi_is_flash == 1
97
- if @chip_settings.spi_erase_time.nil? || @chip_settings.spi_command_erase.nil?
98
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI setting', 'SPI erase time or command missing').exec
99
- return 0
100
- end
101
- end
102
- end
103
- if @chip_settings.spi_mode.nil?
104
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing SPI setting', 'Mode missing').exec
105
- return 0
106
- end
107
- if @spi_import_gui.lie_start.text.empty?
108
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'Missing start address', 'Please fill the Start address field').exec
109
- return 0
110
- end
111
- return 1
112
- end
113
- end
@@ -1,134 +0,0 @@
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_spi_settings'
9
- class Spi_settings < Qt::Widget
10
- slots 'save_settings()'
11
-
12
- def initialize(chip)
13
- super()
14
- @spi_settings_gui = Ui_Spi_settings.new
15
- centerWindow(self)
16
- @spi_settings_gui.setupUi(self)
17
- @spi_settings_gui.lbl_chip.setText(chip.chip_reference)
18
- inputRestrict(@spi_settings_gui.lie_total_size, 0)
19
- inputRestrict(@spi_settings_gui.lie_page_size, 0)
20
- inputRestrict(@spi_settings_gui.lie_write_page_latency, 0)
21
- inputRestrict(@spi_settings_gui.lie_cmd_read, 0)
22
- inputRestrict(@spi_settings_gui.lie_cmd_write, 0)
23
- inputRestrict(@spi_settings_gui.lie_cmd_write_enable, 0)
24
- inputRestrict(@spi_settings_gui.lie_cmd_erase, 0)
25
- inputRestrict(@spi_settings_gui.lie_erase_time, 0)
26
- @chip_settings = Spi.find_by(spi_chip: chip.chip_id)
27
- @chip = chip
28
- feed_settings_form
29
- end
30
-
31
- def save_settings
32
- if @chip_settings.nil?
33
- create
34
- else
35
- @chip_settings = Spi.find_by(spi_chip: @chip.chip_id)
36
- update
37
- end
38
- end
39
-
40
- def feed_settings_form
41
- unless @chip_settings.nil?
42
- @spi_settings_gui.cbx_mode.setCurrentIndex(@spi_settings_gui.cbx_mode.findText(@chip_settings.spi_mode.to_s))
43
- @spi_settings_gui.cbx_frequency.setCurrentIndex(@spi_settings_gui.cbx_frequency.findText(@chip_settings.spi_frequency))
44
- @spi_settings_gui.lie_cmd_read.setText(@chip_settings.spi_command_read.to_s)
45
- @spi_settings_gui.lie_cmd_write.setText(@chip_settings.spi_command_write.to_s)
46
- @spi_settings_gui.lie_write_page_latency.setText(@chip_settings.spi_write_page_latency.to_s)
47
- @spi_settings_gui.lie_cmd_write_enable.setText(@chip_settings.spi_command_write_enable.to_s)
48
- @spi_settings_gui.lie_cmd_erase.setText(@chip_settings.spi_command_erase.to_s)
49
- @spi_settings_gui.lie_erase_time.setText(@chip_settings.spi_erase_time.to_s)
50
- @spi_settings_gui.lie_page_size.setText(@chip_settings.spi_page_size.to_s)
51
- @spi_settings_gui.lie_total_size.setText(@chip_settings.spi_total_size.to_s)
52
- if @chip_settings.spi_is_flash.zero?
53
- @spi_settings_gui.rbn_no.setChecked(true)
54
- else
55
- @spi_settings_gui.rbn_yes.setChecked(true)
56
- end
57
- end
58
- rescue Exception => msg
59
- logger = Logger.new($logFilePath)
60
- logger.error msg
61
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error while loading the form. Consult the log for more details').exec
62
- end
63
-
64
- def is_flash?
65
- if @spi_settings_gui.rbn_no.isChecked
66
- return 0
67
- else
68
- return 1
69
- end
70
- end
71
-
72
- def create
73
- @chip_settings = Spi.create(
74
- spi_mode: @spi_settings_gui.cbx_mode.currentText,
75
- spi_frequency: @spi_settings_gui.cbx_frequency.currentText,
76
- spi_write_page_latency: @spi_settings_gui.lie_write_page_latency.text,
77
- spi_command_read: @spi_settings_gui.lie_cmd_read.text,
78
- spi_command_write: @spi_settings_gui.lie_cmd_write.text,
79
- spi_command_write_enable: @spi_settings_gui.lie_cmd_write_enable.text,
80
- spi_command_erase: @spi_settings_gui.lie_cmd_erase.text,
81
- spi_erase_time: @spi_settings_gui.lie_erase_time.text,
82
- spi_is_flash: is_flash?,
83
- spi_page_size: @spi_settings_gui.lie_page_size.text,
84
- spi_total_size: @spi_settings_gui.lie_total_size.text,
85
- spi_chip: @chip.chip_id
86
- )
87
- Qt::MessageBox.new(Qt::MessageBox::Information, 'Succes', 'SPI parameters created successfully').exec
88
- rescue Exception => msg
89
- logger = Logger.new($logFilePath)
90
- logger.error msg
91
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when saving the SPI parameters. Consult the log for more details').exec
92
- end
93
-
94
- def update
95
- if @chip_settings.spi_mode != @spi_settings_gui.cbx_mode.currentText.to_i
96
- @chip_settings.update(spi_mode: @spi_settings_gui.cbx_mode.currentText.to_i)
97
- end
98
- if @chip_settings.spi_frequency != @spi_settings_gui.cbx_frequency.currentText
99
- @chip_settings.update(spi_frequency: @spi_settings_gui.cbx_frequency.currentText)
100
- end
101
- if @chip_settings.spi_write_page_latency != @spi_settings_gui.lie_write_page_latency.text
102
- @chip_settings.update(spi_write_page_latency: @spi_settings_gui.lie_write_page_latency.text)
103
- end
104
- if @chip_settings.spi_command_read != @spi_settings_gui.lie_cmd_read.text
105
- @chip_settings.update(spi_command_read: @spi_settings_gui.lie_cmd_read.text)
106
- end
107
- if @chip_settings.spi_command_write != @spi_settings_gui.lie_cmd_write.text
108
- @chip_settings.update(spi_command_write: @spi_settings_gui.lie_cmd_write.text)
109
- end
110
- if @chip_settings.spi_command_write_enable != @spi_settings_gui.lie_cmd_write_enable.text
111
- @chip_settings.update(spi_command_write_enable: @spi_settings_gui.lie_cmd_write_enable.text)
112
- end
113
- if @chip_settings.spi_command_erase != @spi_settings_gui.lie_cmd_erase.text
114
- @chip_settings.update(spi_command_erase: @spi_settings_gui.lie_cmd_erase.text)
115
- end
116
- if @chip_settings.spi_erase_time != @spi_settings_gui.lie_erase_time.text
117
- @chip_settings.update(spi_erase_time: @spi_settings_gui.lie_erase_time.text)
118
- end
119
- if @chip_settings.spi_page_size != @spi_settings_gui.lie_page_size.text
120
- @chip_settings.update(spi_page_size: @spi_settings_gui.lie_page_size.text)
121
- end
122
- if @chip_settings.spi_total_size != @spi_settings_gui.lie_total_size.text
123
- @chip_settings.update(spi_total_size: @spi_settings_gui.lie_total_size.text)
124
- end
125
- if @chip_settings.spi_is_flash != is_flash?
126
- @chip_settings.update(spi_is_flash: is_flash?)
127
- end
128
- Qt::MessageBox.new(Qt::MessageBox::Information, 'Succes', 'SPI parameters saved successfully').exec
129
- rescue Exception => msg
130
- logger = Logger.new($logFilePath)
131
- logger.error msg
132
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when saving the SPI parameters. Consult the log for more details').exec
133
- end
134
- end