hardsploit_gui 2.2 → 2.3

Sign up to get free protection for your applications and to get access to all the features.
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