hardsploit_gui 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/lib/Hardsploit_gui.rb +4 -5
  3. data/lib/class/Chip_clone.rb +70 -0
  4. data/lib/class/Chip_editor.rb +1 -0
  5. data/lib/class/Chip_management.rb +73 -52
  6. data/lib/class/ErrorMsg.rb +1 -0
  7. data/lib/class/Firmware.rb +1 -1
  8. data/lib/class/Progress_bar.rb +1 -1
  9. data/lib/class/Wire_helper.rb +6 -3
  10. data/lib/class/{I2C → i2c}/I2c_command.rb +0 -0
  11. data/lib/class/{I2C/I2c_export.rb → i2c/I2c_read.rb} +15 -15
  12. data/lib/class/{I2C → i2c}/I2c_scanner.rb +2 -1
  13. data/lib/class/{I2C → i2c}/I2c_settings.rb +1 -0
  14. data/lib/class/{I2C/I2c_import.rb → i2c/I2c_write.rb} +13 -12
  15. data/lib/class/{PARALLEL/Parallel_export.rb → parallel/Parallel_read.rb} +17 -18
  16. data/lib/class/{PARALLEL → parallel}/Parallel_settings.rb +0 -0
  17. data/lib/class/{PARALLEL/Parallel_import.rb → parallel/Parallel_write.rb} +11 -10
  18. data/lib/class/{SPI/Spi_export.rb → spi/Spi_read.rb} +15 -15
  19. data/lib/class/{SPI → spi}/Spi_settings.rb +0 -0
  20. data/lib/class/{SPI → spi}/Spi_sniffer.rb +2 -1
  21. data/lib/class/{SPI/Spi_import.rb → spi/Spi_write.rb} +13 -12
  22. data/lib/class/swd/Swd.rb +10 -10
  23. data/lib/class/swd/Swd_scanner.rb +2 -1
  24. data/lib/class/uart/Uart_baudrate.rb +1 -1
  25. data/lib/class/uart/Uart_console.rb +1 -1
  26. data/lib/class/uart/Uart_settings.rb +1 -0
  27. data/lib/db/development.sqlite3 +0 -0
  28. data/lib/gui/gui_chip_clone.rb +87 -0
  29. data/lib/gui/gui_chip_editor.rb +349 -349
  30. data/lib/gui/gui_chip_management.rb +378 -377
  31. data/lib/gui/gui_command_editor.rb +219 -219
  32. data/lib/gui/gui_export.rb +132 -132
  33. data/lib/gui/gui_export_manager.rb +93 -93
  34. data/lib/gui/gui_generic_commands.rb +202 -202
  35. data/lib/gui/gui_generic_read.rb +185 -0
  36. data/lib/gui/gui_generic_write.rb +142 -0
  37. data/lib/gui/gui_i2c_command.rb +116 -116
  38. data/lib/gui/gui_i2c_settings.rb +242 -230
  39. data/lib/gui/gui_import.rb +131 -131
  40. data/lib/gui/gui_parallel_settings.rb +195 -195
  41. data/lib/gui/gui_progress_bar.rb +85 -85
  42. data/lib/gui/gui_signal_mapper.rb +121 -121
  43. data/lib/gui/gui_signal_scanner.rb +146 -146
  44. data/lib/gui/gui_spi_settings.rb +313 -313
  45. data/lib/gui/gui_spi_sniffer.rb +112 -112
  46. data/lib/gui/gui_swd_settings.rb +166 -166
  47. data/lib/gui/gui_uart_baudrate.rb +114 -114
  48. data/lib/gui/gui_uart_console.rb +164 -164
  49. data/lib/gui/gui_uart_settings.rb +243 -243
  50. data/lib/gui/gui_wire_helper.rb +99 -99
  51. data/lib/gui_designer/compile_to_ruby.sh +14 -0
  52. data/lib/gui_designer/gui_chip_clone.ui +96 -0
  53. data/lib/gui_designer/gui_chip_management.ui +25 -22
  54. data/lib/gui_designer/{gui_generic_export.ui → gui_generic_read.ui} +152 -72
  55. data/lib/gui_designer/{gui_generic_import.ui → gui_generic_write.ui} +47 -47
  56. data/lib/gui_designer/gui_i2c_settings.ui +68 -60
  57. data/lib/hardsploit-api/Examples/swdProgrammer.rb +76 -0
  58. data/lib/hardsploit-api/Examples/testI2C.rb +183 -0
  59. data/lib/hardsploit-api/Examples/testNRF24L01.rb +122 -0
  60. data/lib/hardsploit-api/Examples/testParralel.rb +84 -0
  61. data/lib/hardsploit-api/Examples/testSPI.rb +113 -0
  62. data/lib/hardsploit-api/Examples/testSPISniffer.rb +91 -0
  63. data/lib/hardsploit-api/Examples/testSWD.rb +224 -0
  64. data/lib/hardsploit-api/Examples/testUARTBufferOverflow.rb +113 -0
  65. data/lib/hardsploit-api/Examples/testUARTConsole.rb +74 -0
  66. data/lib/hardsploit-api/Examples/testUARTFuzzer.rb +109 -0
  67. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
  68. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
  69. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
  70. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd +0 -0
  71. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
  72. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/TEST/TEST_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_TEST_INTERACT.rpd +0 -0
  73. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd +0 -0
  74. data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/VersionFPGA.rb +0 -0
  75. data/lib/{Firmwares → hardsploit-api/Firmwares}/UC/HARDSPLOIT_FIRMWARE_UC.bin +0 -0
  76. data/lib/{Firmwares → hardsploit-api/Firmwares}/UC/VersionUC.rb +0 -0
  77. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI.rb +0 -0
  78. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_CONSTANT.rb +0 -0
  79. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_ERROR.rb +0 -0
  80. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_FIRMWARE.rb +0 -0
  81. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_PROGRESS.rb +0 -0
  82. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_USB_COMMUNICATION.rb +0 -0
  83. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/I2C/HardsploitAPI_I2C.rb +0 -0
  84. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/NO_MUX_PARALLEL_MEMORY/HardsploitAPI_NO_MUX_PARALLEL_MEMORY.rb +0 -0
  85. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/NRF24L01/HardsploitAPI_NRF24L01.rb +0 -0
  86. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SPI/HardsploitAPI_SPI.rb +0 -0
  87. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER.rb +0 -0
  88. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD.rb +0 -0
  89. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD_DEBUG.rb +0 -0
  90. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD_MEM_AP.rb +0 -0
  91. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD_STM32.rb +0 -0
  92. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/TEST/HardsploitAPI_TEST_INTERACT.rb +0 -0
  93. data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/UART/HardsploitAPI_UART.rb +0 -0
  94. data/lib/hardsploit-api/LICENSE.txt +674 -0
  95. data/lib/hardsploit-api/README.md +22 -0
  96. data/lib/hardsploit-api/TRADEMARK +3 -0
  97. data/lib/logs/error.log +80 -0
  98. metadata +65 -49
  99. data/lib/gui/gui_generic_export.rb +0 -164
  100. data/lib/gui/gui_generic_import.rb +0 -142
  101. data/lib/gui/gui_spi_import.rb +0 -126
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33cac9a06b6835cd33abb3a2b9937152f2d9d0f1
4
- data.tar.gz: 0cd2a410c28964b3cbd40be6a1ccfe533e4d7fa7
3
+ metadata.gz: 801459f50d14a2e5b5d94fb574cd6163e630b1ae
4
+ data.tar.gz: 5fa96b5a0281ce5557a14701b2e121e92a4fa861
5
5
  SHA512:
6
- metadata.gz: 2356ccef654cc626ba4ab9b23e50708727f73233d0b46d92e61a0ac11f468f8b2d4a4faf03995f6a383289ef4eb6a110e47940bfc8a979d19209dc0557936e30
7
- data.tar.gz: 1ec86ba60d5fffe6c512c6bf0709a595ad24f702507fbc521e9dfc5c7dfe341c1c335c33f1d78946272be9a7302b5b66c7a3a8053d5c9bfab080cc08525d996b
6
+ metadata.gz: f57c188bc439fe59bb84b655be76781915b3873c8ca3d020a7cb7a17b9ad3436fa8f8f382fc602d897639a7cbc25706fa5fa2394f9d246e1a8429d182c3df109
7
+ data.tar.gz: e716df40ec6768c808ab85e357facac2be65a54a3174af8b3de3b9a24e7f64ff9661d618764d040621d16b3b94bb136bb2e538d1ce8cfbc91a26870abe59792f
@@ -11,14 +11,14 @@ require 'active_record'
11
11
  require_relative 'db/database.rb'
12
12
  require_relative 'gui/gui_chip_management'
13
13
  require_relative 'class/Chip_management'
14
- require_relative 'HardsploitAPI/Core/HardsploitAPI'
15
- require_relative 'Firmwares/UC/VersionUC'
16
- require_relative 'Firmwares/FPGA/VersionFPGA'
14
+ require_relative 'hardsploit-api/HardsploitAPI/Core/HardsploitAPI'
15
+ require_relative 'hardsploit-api/Firmwares/UC/VersionUC'
16
+ require_relative 'hardsploit-api/Firmwares/FPGA/VersionFPGA'
17
17
  include VersionFPGA::VERSION_FPGA
18
18
  include VersionUC::VERSION_UC
19
19
 
20
20
  class Hardsploit_gui
21
- VERSION = "2.4.0"
21
+ VERSION = "2.5.0"
22
22
  def initialize
23
23
  HardsploitAPI.callbackInfo = method(:callbackInfo)
24
24
  HardsploitAPI.callbackData = method(:callbackData)
@@ -28,7 +28,6 @@ class Hardsploit_gui
28
28
  $currentFirmware = nil
29
29
  $logFilePath = File.expand_path(File.dirname(__FILE__)) + "/logs/error.log"
30
30
  $dbFilePath = File.expand_path(File.dirname(__FILE__)) + "/db/hs.db"
31
- # Launch GUI
32
31
  Qt::Application.new(ARGV) do
33
32
  $app = self
34
33
  w = Chip_management.new(VERSION)
@@ -0,0 +1,70 @@
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_chip_clone'
9
+ class Chip_clone < Qt::Widget
10
+ slots 'clone()'
11
+
12
+ def initialize(parent, chip)
13
+ super()
14
+ @parent = parent
15
+ @chip = chip
16
+ @view = Ui_Chip_clone.new
17
+ centerWindow(self)
18
+ @view.setupUi(self)
19
+ inputRestrict(@view.lie_reference, 2)
20
+ end
21
+
22
+ def clone
23
+ #Chip
24
+ clone = @chip.dup
25
+ clone.reference = @view.lie_reference.text
26
+ clone.save
27
+ #Pins
28
+ @chip.pins.each do |pin|
29
+ npin = pin.dup
30
+ npin.chip_id = clone.id
31
+ npin.save
32
+ end
33
+ #Setting(s)
34
+ unless @chip.parallel_setting.nil?
35
+ clone.parralel_setting = @chip.parallel_setting.dup
36
+ clone.parralel_setting.save
37
+ end
38
+ unless @chip.spi_setting.nil?
39
+ clone.spi_setting = @chip.spi_setting.dup
40
+ clone.spi_setting.save
41
+ end
42
+ unless @chip.i2c_setting.nil?
43
+ clone.i2c_setting = @chip.i2c_setting.dup
44
+ clone.i2c_setting.save
45
+ end
46
+ unless @chip.swd_setting.nil?
47
+ clone.swd_setting = @chip.swd_setting.dup
48
+ clone.swd_setting.save
49
+ end
50
+ unless @chip.uart_setting.nil?
51
+ clone.uart_setting = @chip.uart_setting.dup
52
+ clone.uart_setting.save
53
+ end
54
+ #Command(s) and cmd bytes
55
+ unless @chip.commands.nil?
56
+ @chip.commands.each do |cmd|
57
+ clone_cmd = cmd.dup
58
+ clone_cmd.chip_id = clone.id
59
+ clone_cmd.save
60
+ cmd.bytes.each do |byte|
61
+ clone_byte = byte.dup
62
+ clone_byte.command_id = clone_cmd.id
63
+ clone_byte.save
64
+ end
65
+ end
66
+ end
67
+ @parent.feed_chip_array
68
+ self.close
69
+ end
70
+ end
@@ -23,6 +23,7 @@ class Chip_editor < Qt::Widget
23
23
  @view.setupUi(self)
24
24
  @parent = parent
25
25
  @chip = chip
26
+ @action = action
26
27
 
27
28
  inputRestrict(@view.lie_pack_name, 2)
28
29
  inputRestrict(@view.lie_pack_pin, 0)
@@ -46,12 +46,25 @@ class Chip_management < Qt::MainWindow
46
46
  feed_type_cbx
47
47
  @console = Console.new(@view.tbl_console)
48
48
  @versionGUI = versionGUI
49
+ @hardsploit_board_status = Qt::Label.new
50
+ statusBar.addWidget(@hardsploit_board_status);
49
51
  check_hardsploit_connection
50
52
  rescue Exception => msg
51
53
  ErrorMsg.new.unknown(msg)
52
54
  return false
53
55
  end
54
56
 
57
+ def set_hs_board_status(connected)
58
+ if connected
59
+ @hardsploit_board_status.setText("Hardsploit board: connected " +
60
+ "- version #{HardsploitAPI.instance.getVersionNumber} " +
61
+ "- api V#{HardsploitAPI::VERSION::API}"
62
+ )
63
+ else
64
+ @hardsploit_board_status.setText("Hardsploit board: disconnected");
65
+ end
66
+ end
67
+
55
68
  def feed_type_cbx
56
69
  Manufacturer.all.each do |m|
57
70
  @view.cbx_manufacturer.addItem(m.name)
@@ -109,9 +122,9 @@ class Chip_management < Qt::MainWindow
109
122
  edit_lvl = Qt::TreeWidgetItem.new
110
123
  edit_lvl.setText(0, "Edit")
111
124
  parent_node.addChild(edit_lvl)
112
- template_lvl = Qt::TreeWidgetItem.new
113
- template_lvl.setText(0, "Template")
114
- parent_node.addChild(template_lvl)
125
+ clone_lvl = Qt::TreeWidgetItem.new
126
+ clone_lvl.setText(0, "Clone")
127
+ parent_node.addChild(clone_lvl)
115
128
  delete_lvl = Qt::TreeWidgetItem.new
116
129
  delete_lvl.setText(0, "Delete")
117
130
  parent_node.addChild(delete_lvl)
@@ -137,12 +150,12 @@ class Chip_management < Qt::MainWindow
137
150
  detect_lvl = Qt::TreeWidgetItem.new
138
151
  detect_lvl.setText(0, "Detect")
139
152
  parent_node.addChild(detect_lvl)
140
- import_lvl = Qt::TreeWidgetItem.new
141
- import_lvl.setText(0, "Import")
142
- parent_node.addChild(import_lvl)
143
- export_lvl = Qt::TreeWidgetItem.new
144
- export_lvl.setText(0, "Dump")
145
- parent_node.addChild(export_lvl)
153
+ write_lvl = Qt::TreeWidgetItem.new
154
+ write_lvl.setText(0, "Write")
155
+ parent_node.addChild(write_lvl)
156
+ read_lvl = Qt::TreeWidgetItem.new
157
+ read_lvl.setText(0, "Read")
158
+ parent_node.addChild(read_lvl)
146
159
  erase_lvl = Qt::TreeWidgetItem.new
147
160
  erase_lvl.setText(0, "Erase")
148
161
  parent_node.addChild(erase_lvl)
@@ -153,12 +166,12 @@ class Chip_management < Qt::MainWindow
153
166
  cmd_lvl = Qt::TreeWidgetItem.new
154
167
  cmd_lvl.setText(0, "Commands")
155
168
  parent_node.addChild(cmd_lvl)
156
- import_lvl = Qt::TreeWidgetItem.new
157
- import_lvl.setText(0, "Import")
158
- parent_node.addChild(import_lvl)
159
- export_lvl = Qt::TreeWidgetItem.new
160
- export_lvl.setText(0, "Export")
161
- parent_node.addChild(export_lvl)
169
+ write_lvl = Qt::TreeWidgetItem.new
170
+ write_lvl.setText(0, "Write")
171
+ parent_node.addChild(write_lvl)
172
+ read_lvl = Qt::TreeWidgetItem.new
173
+ read_lvl.setText(0, "Read")
174
+ parent_node.addChild(read_lvl)
162
175
  sniffer_lvl = Qt::TreeWidgetItem.new
163
176
  sniffer_lvl.setText(0, "Sniffer")
164
177
  parent_node.addChild(sniffer_lvl)
@@ -172,23 +185,23 @@ class Chip_management < Qt::MainWindow
172
185
  cmd_lvl = Qt::TreeWidgetItem.new
173
186
  cmd_lvl.setText(0, "Commands")
174
187
  parent_node.addChild(cmd_lvl)
175
- import_lvl = Qt::TreeWidgetItem.new
176
- import_lvl.setText(0, "Import")
177
- parent_node.addChild(import_lvl)
178
- export_lvl = Qt::TreeWidgetItem.new
179
- export_lvl.setText(0, "Export")
180
- parent_node.addChild(export_lvl)
188
+ write_lvl = Qt::TreeWidgetItem.new
189
+ write_lvl.setText(0, "Write")
190
+ parent_node.addChild(write_lvl)
191
+ read_lvl = Qt::TreeWidgetItem.new
192
+ read_lvl.setText(0, "Read")
193
+ parent_node.addChild(read_lvl)
181
194
  when 'PARALLEL'
182
195
  settings_lvl = Qt::TreeWidgetItem.new
183
196
  settings_lvl.setText(0, "Settings")
184
197
  parent_node.addChild(settings_lvl)
185
198
  # Not implemented yet
186
- #import_lvl = Qt::TreeWidgetItem.new
187
- #import_lvl.setText(0, "Import")
188
- #parent_node.addChild(import_lvl)
189
- export_lvl = Qt::TreeWidgetItem.new
190
- export_lvl.setText(0, "Export")
191
- parent_node.addChild(export_lvl)
199
+ #write_lvl = Qt::TreeWidgetItem.new
200
+ #write_lvl.setText(0, "write")
201
+ #parent_node.addChild(write_lvl)
202
+ read_lvl = Qt::TreeWidgetItem.new
203
+ read_lvl.setText(0, "Read")
204
+ parent_node.addChild(read_lvl)
192
205
  end
193
206
  return parent_node
194
207
  end
@@ -250,7 +263,7 @@ class Chip_management < Qt::MainWindow
250
263
  case item.text(0)
251
264
  when 'Wiring' ; wire_chip
252
265
  when 'Edit' ; edit_chip
253
- when 'Template' ; add_chip
266
+ when 'Clone' ; clone_chip
254
267
  when 'Delete' ; delete_chip
255
268
  end
256
269
  else
@@ -268,8 +281,8 @@ class Chip_management < Qt::MainWindow
268
281
  case spi_module
269
282
  when 'Settings' ; Spi_settings.new(@chip_clicked).show
270
283
  when 'Commands' ; Generic_commands.new(@chip_clicked, 'SPI').show
271
- when 'Import' ; Spi_import.new(@chip_clicked).show
272
- when 'Export' ; Spi_export.new(@chip_clicked).show
284
+ when 'Write' ; Spi_write.new(@chip_clicked).show
285
+ when 'Read' ; Spi_read.new(@chip_clicked).show
273
286
  when 'Sniffer' ; Spi_sniffer.new(@chip_clicked).show
274
287
  end
275
288
  end
@@ -279,31 +292,39 @@ class Chip_management < Qt::MainWindow
279
292
  when 'Settings' ; I2c_settings.new(@chip_clicked).show
280
293
  when 'PIN Scanner' ; I2c_scanner.new.show
281
294
  when 'Commands' ; Generic_commands.new(@chip_clicked, 'I2C').show
282
- when 'Import' ; I2c_import.new(@chip_clicked).show
283
- when 'Export' ; I2c_export.new(@chip_clicked).show
295
+ when 'Write' ; I2c_write.new(@chip_clicked).show
296
+ when 'Read' ; I2c_read.new(@chip_clicked).show
284
297
  end
285
298
  end
286
299
 
287
300
  def load_parallel_module(parallel_module)
288
301
  case parallel_module
289
302
  when 'Settings' ; Parallel_settings.new(@chip_clicked).show
290
- when 'Import' ; Parallel_import.new(@chip_clicked).show
291
- when 'Export' ; Parallel_export.new(@chip_clicked).show
303
+ when 'Write' ; Parallel_write.new(@chip_clicked).show
304
+ when 'Read' ; Parallel_read.new(@chip_clicked).show
292
305
  end
293
306
  end
294
307
 
295
308
  def load_swd_module(swd_module)
296
309
  case swd_module
297
- when 'Settings' ; Swd_settings.new(@chip_clicked).show
298
- when 'PIN Scanner' ; Swd_scanner.new.show
299
- when 'Detect' ; Swd.new(@chip_clicked, @console).detect
300
- when 'Import'
310
+ when 'Settings'; Swd_settings.new(@chip_clicked).show
311
+ when 'PIN Scanner'
312
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
313
+ Swd_scanner.new.show
314
+ when 'Detect'
315
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
316
+ Swd.new(@chip_clicked, @console).detect
317
+ when 'Write'
318
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
301
319
  filepath = Qt::FileDialog.getOpenFileName(self, tr('Select a file'), '/')
302
- Swd.new(@chip_clicked, @console).import(filepath) unless filepath.nil?
303
- when 'Dump'
320
+ Swd.new(@chip_clicked, @console).write(filepath) unless filepath.nil?
321
+ when 'Read'
322
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
304
323
  filepath = Qt::FileDialog.getSaveFileName(self, tr('Select a file'), '/')
305
- Swd.new(@chip_clicked, @console).export(filepath) unless filepath.nil?
306
- when 'Erase' ; Swd.new(@chip_clicked, @console).erase
324
+ Swd.new(@chip_clicked, @console).read(filepath) unless filepath.nil?
325
+ when 'Erase'
326
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
327
+ Swd.new(@chip_clicked, @console).erase
307
328
  end
308
329
  end
309
330
 
@@ -314,6 +335,7 @@ class Chip_management < Qt::MainWindow
314
335
  settingsUart.setWindowModality(Qt::ApplicationModal)
315
336
  settingsUart.show
316
337
  when 'Console'
338
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
317
339
  consoleUart = Uart_console.new(@chip_clicked)
318
340
  consoleUart.setWindowModality(Qt::ApplicationModal)
319
341
  consoleUart.show
@@ -321,16 +343,7 @@ class Chip_management < Qt::MainWindow
321
343
  end
322
344
 
323
345
  def add_chip
324
-
325
- if sender.objectName == 'tw_chip' or sender.objectName == 'actionTemplate'
326
- unless @chip_clicked.nil?
327
- add_chip = Chip_editor.new(self, @chip_clicked, 'temp')
328
- else
329
- ErrorMsg.new.no_chip_loaded
330
- end
331
- else
332
- add_chip = Chip_editor.new(self, 'none', 'new')
333
- end
346
+ add_chip = Chip_editor.new(self, 'none', 'new')
334
347
  add_chip.show
335
348
  end
336
349
 
@@ -340,6 +353,12 @@ class Chip_management < Qt::MainWindow
340
353
  edit_chip.show
341
354
  end
342
355
 
356
+ def clone_chip
357
+ return ErrorMsg.new.no_chip_loaded if @chip_clicked.nil?
358
+ clone_chip = Chip_clone.new(self, @chip_clicked)
359
+ clone_chip.show
360
+ end
361
+
343
362
  def delete_chip
344
363
  return ErrorMsg.new.no_chip_loaded if @chip_clicked.nil?
345
364
  msg = Qt::MessageBox.new
@@ -486,11 +505,13 @@ class Chip_management < Qt::MainWindow
486
505
  "BOARD : #{HardsploitAPI.instance.getVersionNumber}"
487
506
  )
488
507
  @console.print('Hardsploit ready to suck chip souls !')
508
+ set_hs_board_status(true)
489
509
  else
490
510
  @console.print(
491
511
  'Hardsploit board unconnected: '+
492
512
  'Wiring and command execution disabled'
493
513
  )
514
+ set_hs_board_status(false)
494
515
  end
495
516
  end
496
517
  end
@@ -302,6 +302,7 @@ class ErrorMsg
302
302
 
303
303
  # Unknown
304
304
  def unknown(msg)
305
+ Dir.mkdir('logs') unless File.exists?('logs')
305
306
  Logger.new($logFilePath).error(msg)
306
307
  Qt::MessageBox.new(
307
308
  Qt::MessageBox::Critical,
@@ -12,7 +12,7 @@ class Firmware
12
12
  $pgb = Progress_bar.new("Upload firmware :")
13
13
  $pgb.show
14
14
  end
15
- base_path = File.expand_path(File.dirname(__FILE__)) + '/../Firmwares/FPGA/'
15
+ base_path = File.expand_path(File.dirname(__FILE__)) + '/../hardsploit-api/Firmwares/FPGA/'
16
16
  case firmware
17
17
  when 'I2C'
18
18
  firmware_path = base_path + 'I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd'
@@ -14,7 +14,7 @@ class Progress_bar < Qt::Widget
14
14
  centerWindow(self)
15
15
  @pgb_ui.setupUi(self)
16
16
  self.update_status(status)
17
- @pgb_ui.lbl_close.setEnabled(false)
17
+ @pgb_ui.lbl_close.setEnabled(true)
18
18
  self.display_time("Total duration:")
19
19
  end
20
20
 
@@ -6,7 +6,7 @@
6
6
  #===================================================
7
7
 
8
8
  require_relative '../gui/gui_wire_helper'
9
- require_relative '../HardsploitAPI/Core/HardsploitAPI'
9
+ require_relative '../hardsploit-api/HardsploitAPI/Core/HardsploitAPI'
10
10
 
11
11
  class Wire_helper < Qt::Widget
12
12
  slots 'rotate_scene()'
@@ -158,7 +158,10 @@ class CustomItem < Qt::GraphicsTextItem
158
158
  pin.setColor
159
159
  pin.instance_variable_get('@signalTxt').clearFocus
160
160
  pin.instance_variable_get('@nbrTxt').clearFocus
161
- return false if @api_value == 'NA'
161
+ if @api_value.name == 'NA'
162
+ HardsploitAPI.instance.setWiringLeds(value: 0x0000000000000000)
163
+ return false
164
+ end
162
165
  pin_group = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
163
166
  hardsploit_pin_number = pin_group.index(@api_value.pin[0]) * 8 + @api_value.pin[1].to_i
164
167
  HardsploitAPI.instance.setWiringLeds(value: 2**hardsploit_pin_number)
@@ -196,7 +199,7 @@ class UniqPin
196
199
 
197
200
  @nbrTxt = CustomItem.new(pinNum.to_s)
198
201
  @nbrTxt.cursor = Qt::Cursor.new(Qt::PointingHandCursor)
199
- @nbrTxt.setPin(self, pinNum.to_s)
202
+ @nbrTxt.setPin(self, signal_name)
200
203
  @nbrTxt.setTextInteractionFlags(Qt::TextSelectableByMouse)
201
204
  @nbrTxt.setX(xNum)
202
205
  @nbrTxt.setY(yNum)
File without changes
@@ -5,15 +5,15 @@
5
5
  # License URI: http://www.gnu.org/licenses/gpl.txt
6
6
  #===================================================
7
7
 
8
- require_relative '../../gui/gui_generic_export'
9
- require_relative '../../HardsploitAPI/Modules/I2C/HardsploitAPI_I2C'
10
- class I2c_export < Qt::Widget
11
- slots 'export()'
12
- slots 'select_export_file()'
8
+ require_relative '../../gui/gui_generic_read'
9
+ require_relative '../../hardsploit-api/HardsploitAPI/Modules/I2C/HardsploitAPI_I2C'
10
+ class I2c_read < Qt::Widget
11
+ slots 'read()'
12
+ slots 'select_read_file()'
13
13
 
14
14
  def initialize(chip)
15
15
  super()
16
- @view = Ui_Generic_export.new
16
+ @view = Ui_Generic_read.new
17
17
  centerWindow(self)
18
18
  @view.setupUi(self)
19
19
  @view.lbl_chip.setText(chip.reference)
@@ -22,32 +22,32 @@ class I2c_export < Qt::Widget
22
22
  @chip = chip
23
23
  end
24
24
 
25
- def select_export_file
25
+ def select_read_file
26
26
  @filepath = Qt::FileDialog.getSaveFileName(self, tr('Select a file'), '/', tr('*.*'))
27
27
  unless @filepath.nil?
28
- @view.btn_export.setEnabled(true)
29
- @view.btn_full_export.setEnabled(true)
28
+ @view.btn_read.setEnabled(true)
30
29
  @view.lbl_selected_file.setText("#{@filepath.split("/").last}")
31
30
  end
32
31
  rescue Exception => msg
33
32
  ErrorMsg.new.unknown(msg)
34
33
  end
35
34
 
36
- def export
35
+ def read
36
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
37
37
  $file = File.open("#{@filepath}", 'w') unless @filepath.nil?
38
- if sender.objectName == 'btn_full_export'
39
- return false unless control_export_settings('full')
38
+ if @view.rbn_full.isChecked
39
+ return false unless control_read_settings('full')
40
40
  start = 0
41
41
  stop = @chip.i2c_setting.total_size - 1
42
42
  control = @chip.i2c_setting.total_size
43
43
  else
44
- return false unless control_export_settings('partial')
44
+ return false unless control_read_settings('partial')
45
45
  start = @view.lie_start.text.to_i
46
46
  stop = @view.lie_stop.text.to_i
47
47
  control = (stop - start) + 1
48
48
  end
49
49
  Firmware.new('I2C')
50
- $pgb = Progress_bar.new("I²C: Exporting...")
50
+ $pgb = Progress_bar.new("I²C: Reading...")
51
51
  $pgb.show
52
52
 
53
53
  if [40, 100, 400, 1000].include?(@chip.i2c_setting.frequency)
@@ -73,7 +73,7 @@ class I2c_export < Qt::Widget
73
73
  ErrorMsg.new.unknown(msg)
74
74
  end
75
75
 
76
- def control_export_settings(type)
76
+ def control_read_settings(type)
77
77
  return ErrorMsg.new.settings_missing if @chip.i2c_setting.nil?
78
78
  return ErrorMsg.new.frequency_missing if @chip.i2c_setting.frequency.nil?
79
79
  return ErrorMsg.new.mode_missing if @chip.i2c_setting.address_w.nil?