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
@@ -11,64 +11,64 @@ class Export_manager < Qt::Widget
11
11
 
12
12
  def initialize(bus, result, spiDataSended = [])
13
13
  super()
14
- @em = Ui_Export_manager.new
14
+ @view = Ui_Export_manager.new
15
15
  centerWindow(self)
16
- @em.setupUi(self)
16
+ @view.setupUi(self)
17
17
  @bus = bus
18
18
  # Check the bus type to adapt the table column
19
19
  if bus == 'SPI'
20
20
  create_result_table('SPI')
21
- @em.cbx_export.hide
22
- @em.tbl_result.setRowCount(result.length)
21
+ @view.cbx_export.hide
22
+ @view.tbl_result.setRowCount(result.length)
23
23
  result.length.times do |i|
24
- @em.tbl_result.setItem(i, 0, Qt::TableWidgetItem.new(spiDataSended[i].to_s))
25
- @em.tbl_result.setItem(i, 1, Qt::TableWidgetItem.new(result[i].to_s))
24
+ @view.tbl_result.setItem(i, 0, Qt::TableWidgetItem.new(spiDataSended[i].to_s))
25
+ @view.tbl_result.setItem(i, 1, Qt::TableWidgetItem.new(result[i].to_s))
26
26
  end
27
- @em.tbl_result.resizeColumnsToContents
28
- @em.tbl_result.resizeRowsToContents
29
- @em.tbl_result.horizontalHeader.stretchLastSection = true
27
+ @view.tbl_result.resizeColumnsToContents
28
+ @view.tbl_result.resizeRowsToContents
29
+ @view.tbl_result.horizontalHeader.stretchLastSection = true
30
30
  else
31
31
  create_result_table('I2C')
32
- @em.tbl_result.setRowCount(result.length / 2)
32
+ @view.tbl_result.setRowCount(result.length / 2)
33
33
  (0..result.length - 1).step(2).each_with_index do |i, v|
34
34
  case result[i]
35
35
  when 0
36
- @em.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Write'))
37
- @em.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('ACK'))
38
- @em.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
36
+ @view.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Write'))
37
+ @view.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('ACK'))
38
+ @view.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
39
39
  when 1
40
- @em.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Read'))
41
- @em.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('ACK'))
42
- @em.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
40
+ @view.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Read'))
41
+ @view.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('ACK'))
42
+ @view.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
43
43
  when 2
44
- @em.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Write'))
45
- @em.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('NACK'))
46
- @em.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
44
+ @view.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Write'))
45
+ @view.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('NACK'))
46
+ @view.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
47
47
  else
48
- @em.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Write'))
49
- @em.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('NACK'))
50
- @em.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
48
+ @view.tbl_result.setItem(v, 0, Qt::TableWidgetItem.new('Write'))
49
+ @view.tbl_result.setItem(v, 1, Qt::TableWidgetItem.new('NACK'))
50
+ @view.tbl_result.setItem(v, 2, Qt::TableWidgetItem.new(result[i + 1].to_s))
51
51
  end
52
52
  end
53
- @em.tbl_result.resizeColumnsToContents
54
- @em.tbl_result.resizeRowsToContents
55
- @em.tbl_result.horizontalHeader.stretchLastSection = true
53
+ @view.tbl_result.resizeColumnsToContents
54
+ @view.tbl_result.resizeRowsToContents
55
+ @view.tbl_result.horizontalHeader.stretchLastSection = true
56
56
  end
57
57
  end
58
58
 
59
59
  def create_result_table(bus)
60
60
  if bus == 'SPI'
61
- @em.tbl_result.insertColumn(0)
62
- @em.tbl_result.setHorizontalHeaderItem(0, Qt::TableWidgetItem.new('Data send'))
63
- @em.tbl_result.insertColumn(1)
64
- @em.tbl_result.setHorizontalHeaderItem(1, Qt::TableWidgetItem.new('Data receive'))
61
+ @view.tbl_result.insertColumn(0)
62
+ @view.tbl_result.setHorizontalHeaderItem(0, Qt::TableWidgetItem.new('Data send'))
63
+ @view.tbl_result.insertColumn(1)
64
+ @view.tbl_result.setHorizontalHeaderItem(1, Qt::TableWidgetItem.new('Data receive'))
65
65
  else
66
- @em.tbl_result.insertColumn(0)
67
- @em.tbl_result.setHorizontalHeaderItem(0, Qt::TableWidgetItem.new('R/W'))
68
- @em.tbl_result.insertColumn(1)
69
- @em.tbl_result.setHorizontalHeaderItem(1, Qt::TableWidgetItem.new('(N)ACK)'))
70
- @em.tbl_result.insertColumn(2)
71
- @em.tbl_result.setHorizontalHeaderItem(2, Qt::TableWidgetItem.new('DATA'))
66
+ @view.tbl_result.insertColumn(0)
67
+ @view.tbl_result.setHorizontalHeaderItem(0, Qt::TableWidgetItem.new('R/W'))
68
+ @view.tbl_result.insertColumn(1)
69
+ @view.tbl_result.setHorizontalHeaderItem(1, Qt::TableWidgetItem.new('(N)ACK)'))
70
+ @view.tbl_result.insertColumn(2)
71
+ @view.tbl_result.setHorizontalHeaderItem(2, Qt::TableWidgetItem.new('DATA'))
72
72
  end
73
73
  end
74
74
 
@@ -76,7 +76,7 @@ class Export_manager < Qt::Widget
76
76
  result_file = Qt::FileDialog.getSaveFileName(self, tr('Create a file'), '/', tr('All files (*)'))
77
77
  unless result_file.nil?
78
78
  if @bus == 'I2C'
79
- if @em.cbx_export.currentIndex == 0
79
+ if @view.cbx_export.currentIndex == 0
80
80
  save_i2c_csv(result_file)
81
81
  else
82
82
  save_i2c(result_file)
@@ -94,8 +94,8 @@ class Export_manager < Qt::Widget
94
94
  def save_i2c_csv(result_file)
95
95
  CSV.open("#{result_file}.csv", 'wb', :col_sep => ';') do |csv|
96
96
  csv << ['R/W', '(N)ACK', 'DATA']
97
- @em.tbl_result.rowCount.times do |i|
98
- csv << [@em.tbl_result.item(i, 0).text, @em.tbl_result.item(i, 1).text, @em.tbl_result.item(i, 2).text]
97
+ @view.tbl_result.rowCount.times do |i|
98
+ csv << [@view.tbl_result.item(i, 0).text, @view.tbl_result.item(i, 1).text, @view.tbl_result.item(i, 2).text]
99
99
  end
100
100
  end
101
101
  end
@@ -103,9 +103,9 @@ class Export_manager < Qt::Widget
103
103
  def save_i2c(result_file)
104
104
  file = File.open("#{result_file}", 'w')
105
105
  result = []
106
- @em.tbl_result.rowCount.times do |i|
107
- if @em.tbl_result.item(i, 0).text == 'Read' && @em.tbl_result.item(i, 1).text == 'ACK'
108
- result.push(@em.tbl_result.item(i, 2).text.to_i)
106
+ @view.tbl_result.rowCount.times do |i|
107
+ if @view.tbl_result.item(i, 0).text == 'Read' && @view.tbl_result.item(i, 1).text == 'ACK'
108
+ result.push(@view.tbl_result.item(i, 2).text.to_i)
109
109
  end
110
110
  end
111
111
  file.write(result.pack('C*'))
@@ -115,8 +115,8 @@ class Export_manager < Qt::Widget
115
115
  def save_spi(result_file)
116
116
  file = File.open("#{result_file}", 'w')
117
117
  result = []
118
- @em.tbl_result.rowCount.times do |i|
119
- result.push(@em.tbl_result.item(i, 1).text.to_i)
118
+ @view.tbl_result.rowCount.times do |i|
119
+ result.push(@view.tbl_result.item(i, 1).text.to_i)
120
120
  end
121
121
  file.write(result.pack('C*'))
122
122
  file.close
@@ -6,24 +6,65 @@
6
6
  #===================================================
7
7
 
8
8
  class Firmware
9
- def initialize(api, firmware)
10
- if $currentFirmware != firmware
9
+ def initialize(firmware)
10
+ unless $currentFirmware == firmware
11
+ unless $currentFirmware == 'uC'
12
+ $pgb = Progress_bar.new("Upload firmware :")
13
+ $pgb.show
14
+ end
15
+ base_path = File.expand_path(File.dirname(__FILE__)) + '/../Firmwares/FPGA/'
11
16
  case firmware
12
17
  when 'I2C'
13
- p "Upload Firmware check : #{api.uploadFirmware(File.expand_path(File.dirname(__FILE__)) + "/../Firmware/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd", false)}"
18
+ firmware_path = base_path + 'I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd'
19
+ HardsploitAPI.instance.uploadFirmware(pathFirmware: firmware_path, checkFirmware: false)
14
20
  when 'SPI'
15
- p "Upload Firmware check : #{api.uploadFirmware(File.expand_path(File.dirname(__FILE__)) + '/../Firmware/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd', false)}"
16
- when 'Parallel'
17
- p "Upload Firmware check : #{api.uploadFirmware(File.expand_path(File.dirname(__FILE__)) + "/../Firmware/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd", false)}"
21
+ firmware_path = base_path + 'SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd'
22
+ HardsploitAPI.instance.uploadFirmware(pathFirmware: firmware_path, checkFirmware: false)
23
+ when 'SPI_SNIFFER'
24
+ firmware_path = base_path + 'SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd'
25
+ HardsploitAPI.instance.uploadFirmware(pathFirmware: firmware_path, checkFirmware: false)
26
+ when 'PARALLEL'
27
+ firmware_path = base_path + 'PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd'
28
+ HardsploitAPI.instance.uploadFirmware(pathFirmware: firmware_path, checkFirmware: false)
18
29
  when 'SWD'
19
- p "Upload Firmware check : #{api.uploadFirmware(File.expand_path(File.dirname(__FILE__)) + "/../Firmware/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd", false)}"
30
+ firmware_path = base_path + 'SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd'
31
+ HardsploitAPI.instance.uploadFirmware(pathFirmware: firmware_path, checkFirmware: false)
32
+ when 'UART'
33
+ firmware_path = base_path + 'UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd'
34
+ HardsploitAPI.instance.uploadFirmware(pathFirmware: firmware_path, checkFirmware: false)
35
+ when 'uC'
36
+ msg = Qt::MessageBox.new
37
+ msg.setWindowTitle("Microcontroller update")
38
+ msg.setText("Hardsploit must be in bootloader mode and dfu-util package must be installed in order to continue. Proceed ?")
39
+ msg.setIcon(Qt::MessageBox::Question)
40
+ msg.setStandardButtons(Qt::MessageBox::Cancel | Qt::MessageBox::Ok)
41
+ msg.setDefaultButton(Qt::MessageBox::Cancel)
42
+ if msg.exec == Qt::MessageBox::Ok
43
+ system("dfu-util -D 0483:df11 -a 0 -s 0x08000000 -R --download #{File.expand_path(File.dirname(__FILE__))}'/../Firmware/UC/HARDSPLOIT_FIRMWARE_UC.bin'")
44
+ end
20
45
  end
21
- $currentFirmware = firmware
46
+ $currentFirmware = firmware unless firmware == 'uC'
47
+ firmware = "SPI" if firmware == "SPI_SNIFFER"
48
+ $pgb.close
22
49
  sleep(2)
23
50
  end
51
+
52
+ case firmware
53
+ when 'PARALLEL', 'SWD', 'UART', 'I2C', 'SPI'
54
+ # CrossWiring
55
+ crossvalue = []
56
+ for i in 0..63
57
+ crossvalue.push i
58
+ end
59
+ pin_group = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
60
+ Bus.find_by(name: firmware).signalls.each do |s|
61
+ hardsploit_pin_number = pin_group.index(s.pin[0]) * 8 + s.pin[1].to_i
62
+ crossvalue[hardsploit_pin_number] = HardsploitAPI.getSignalId(signal: s.name)
63
+ crossvalue[HardsploitAPI.getSignalId(signal: s.name)] = hardsploit_pin_number
64
+ end
65
+ HardsploitAPI.instance.setCrossWiring(value: crossvalue)
66
+ end
24
67
  rescue Exception => msg
25
- logger = Logger.new($logFilePath)
26
- logger.error msg
27
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error while loading the firmware. Consult the log for more details').exec
68
+ ErrorMsg.new.unknown(msg)
28
69
  end
29
70
  end
@@ -5,64 +5,161 @@
5
5
  # License URI: http://www.gnu.org/licenses/gpl.txt
6
6
  #===================================================
7
7
 
8
- require_relative '../HardsploitAPI/HardsploitAPI'
9
8
  require_relative '../gui/gui_generic_commands'
10
9
  require_relative '../gui/gui_export_manager'
11
- require_relative '../class/I2C/I2c_command'
12
- require_relative '../class/Export_manager'
13
- require_relative '../class/Command_editor'
14
10
 
15
-
16
- class Generic_commands < Qt::Widget
11
+ class Generic_commands < Qt::MainWindow
17
12
  slots 'feed_cmd_array()'
18
- slots 'exec_action()'
19
- slots 'open_cmd_form()'
13
+ slots 'execute()'
14
+ slots 'create()'
15
+ slots 'edit()'
16
+ slots 'delete()'
17
+ slots 'template()'
18
+ slots 'concatenate()'
20
19
 
21
- def initialize(api, chip, bus_name)
20
+ def initialize(chip, bus_name)
22
21
  super()
23
- @generic_command_gui = Ui_Generic_commands.new
22
+ @view = Ui_Generic_commands.new
24
23
  centerWindow(self)
25
- @generic_command_gui.setupUi(self)
26
- @generic_command_gui.lbl_chip.setText(chip.chip_reference)
27
- @generic_command_gui.lbl_search.setPixmap(Qt::Pixmap.new('images/search.png'))
28
- inputRestrict(@generic_command_gui.lie_search, 2)
29
- @generic_command_gui.check_result.setChecked(true)
30
- @api = api
24
+ @view.setupUi(self)
25
+ @view.lbl_chip.setText(chip.reference)
26
+ @view.lbl_search.setPixmap(Qt::Pixmap.new('images/search.png'))
27
+ inputRestrict(@view.lie_search, 2)
31
28
  @chip = chip
32
29
  @bus_name = bus_name
33
- @bus_id = Bus.find_by(bus_name: bus_name).bus_id
30
+ @bus_id = Bus.find_by(name: bus_name).id
34
31
  select_chip_settings(bus_name)
35
32
  feed_cmd_array
36
33
  end
37
34
 
35
+ def contextMenuEvent(event)
36
+ if @view.tbl_cmd.currentItem.nil?
37
+ return false
38
+ else
39
+ return false if @view.tbl_cmd.currentItem.column == 1
40
+ menu = Qt::Menu.new(self)
41
+ menu.addAction(@view.actionExecute)
42
+ menu.addAction(@view.actionEdit)
43
+ menu.addAction(@view.actionTemplate)
44
+ menu.addAction(@view.actionDelete)
45
+ menu.addAction(@view.actionConcatenate)
46
+ menu.exec(event.globalPos())
47
+ end
48
+ end
49
+
50
+ def execute
51
+ return ErrorMsg.new.hardsploit_not_found unless HardsploitAPI.getNumberOfBoardAvailable > 0
52
+ return ErrorMsg.new.no_cmd_selected if @view.tbl_cmd.currentItem.nil?
53
+ cmd_array = prepare_cmd
54
+ result = exec_cmd(@bus_name, cmd_array)
55
+ if @view.check_result.isChecked && result != false
56
+ export_manager = Export_manager.new(@bus_name, result, cmd_array)
57
+ export_manager.setWindowModality(Qt::ApplicationModal)
58
+ export_manager.show
59
+ end
60
+ end
61
+
62
+ def create
63
+ if @bus_name == 'I2C'
64
+ cmdBase = I2c_command.new(@chip, @bus_id, self)
65
+ else
66
+ cmdBase = Command_editor.new(0, nil, @chip, @bus_id, self)
67
+ end
68
+ cmdBase.show
69
+ end
70
+
71
+ def edit
72
+ return ErrorMsg.new.no_cmd_selected if @view.tbl_cmd.currentItem.nil?
73
+ cmdBase = Command_editor.new(2, @view.tbl_cmd.currentItem.text, @chip, @bus_id, self)
74
+ cmdBase.show
75
+ end
76
+
77
+ def template
78
+ return ErrorMsg.new.no_cmd_selected if @view.tbl_cmd.currentItem.nil?
79
+ cmdBase = Command_editor.new(1, @view.tbl_cmd.currentItem.text, @chip, @bus_id, self)
80
+ cmdBase.show
81
+ end
82
+
83
+ def delete
84
+ return ErrorMsg.new.no_cmd_selected if @view.tbl_cmd.currentItem.nil?
85
+ msg = Qt::MessageBox.new
86
+ msg.setWindowTitle('Delete command')
87
+ msg.setText('Confirm the delete command action ?')
88
+ msg.setIcon(Qt::MessageBox::Question)
89
+ msg.setStandardButtons(Qt::MessageBox::Cancel | Qt::MessageBox::Ok)
90
+ msg.setDefaultButton(Qt::MessageBox::Cancel)
91
+ if msg.exec == Qt::MessageBox::Ok
92
+ @chip.commands.find_by(name: @view.tbl_cmd.currentItem.text).destroy
93
+ feed_cmd_array
94
+ end
95
+ end
96
+
97
+ def concatenate
98
+ return ErrorMsg.new.concat_disallow unless @bus_name == "I2C"
99
+ return ErrorMsg.new.concat_nbr unless @view.tbl_cmd.selectedItems.count == 2
100
+ cmd1 = Command.find_by(name: @view.tbl_cmd.selectedItems[0].text)
101
+ cmd2 = Command.find_by(name: @view.tbl_cmd.selectedItems[1].text)
102
+ return false unless check_concatenation_size(cmd1.bytes, cmd2.bytes)
103
+
104
+ cmd_1 = @view.tbl_cmd.selectedItems[0].text
105
+ cmd_2 = @view.tbl_cmd.selectedItems[1].text
106
+ cmd = Command.create(
107
+ name: 'New concatenation',
108
+ description: "Concatenation of #{cmd1.name} and #{cmd2.name} commands",
109
+ bus_id: @bus_id,
110
+ chip_id: @chip.id
111
+ )
112
+ unless check_for_errors(cmd)
113
+ cmd1.bytes.each do |b1|
114
+ byte1 = Byte.create(
115
+ index: b1.index,
116
+ value: b1.value,
117
+ description: b1.description,
118
+ iteration: b1.iteration,
119
+ command_id: Command.last.id
120
+ )
121
+ check_for_errors(byte1)
122
+ end
123
+ cmd2.bytes.each do |b2|
124
+ byte2 = Byte.create(
125
+ index: Byte.last.index + 1,
126
+ value: b2.value,
127
+ description: b2.description,
128
+ iteration: b2.iteration,
129
+ command_id: Command.last.id
130
+ )
131
+ check_for_errors(byte2)
132
+ end
133
+ feed_cmd_array
134
+ end
135
+ end
136
+
38
137
  def feed_cmd_array
39
- @generic_command_gui.tbl_cmd.clearContents
40
- cmd = @chip.cmd.where(cmd_bus: @bus_id)
41
- unless @generic_command_gui.lie_search.text.empty?
42
- cmd = cmd.where('cmd_name LIKE ?', "%#{@generic_command_gui.lie_search.text}%")
138
+ @view.tbl_cmd.clearContents
139
+ cmd = @chip.commands.where(bus_id: @bus_id)
140
+ unless @view.lie_search.text.empty?
141
+ cmd = cmd.where('name LIKE ?', "%#{@view.lie_search.text}%")
43
142
  end
44
- @generic_command_gui.tbl_cmd.setRowCount(cmd.count);
143
+ @view.tbl_cmd.setRowCount(cmd.count);
45
144
  cmd.to_enum.with_index(0).each do |c, i|
46
- it1 = Qt::TableWidgetItem.new(c.cmd_name)
145
+ it1 = Qt::TableWidgetItem.new(c.name)
47
146
  it1.setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled)
48
- it2 = Qt::TableWidgetItem.new(c.cmd_desc)
147
+ it2 = Qt::TableWidgetItem.new(c.description)
49
148
  it2.setFlags(Qt::ItemIsEnabled)
50
- @generic_command_gui.tbl_cmd.setItem(i, 0, it1);
51
- @generic_command_gui.tbl_cmd.setItem(i, 1, it2);
149
+ @view.tbl_cmd.setItem(i, 0, it1);
150
+ @view.tbl_cmd.setItem(i, 1, it2);
52
151
  end
53
- @generic_command_gui.tbl_cmd.resizeColumnsToContents
54
- @generic_command_gui.tbl_cmd.resizeRowsToContents
55
- @generic_command_gui.tbl_cmd.horizontalHeader.stretchLastSection = true
152
+ @view.tbl_cmd.resizeColumnsToContents
153
+ @view.tbl_cmd.resizeRowsToContents
154
+ @view.tbl_cmd.horizontalHeader.stretchLastSection = true
56
155
  rescue Exception => msg
57
- logger = Logger.new($logFilePath)
58
- logger.error msg
59
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error while loading the command array. Consult the log for more details').exec
156
+ ErrorMsg.new.unknown(msg)
60
157
  end
61
158
 
62
159
  def select_chip_settings(bus)
63
160
  case bus
64
161
  when 'SPI'
65
- @chip_settings = Spi.find_by(spi_chip: @chip.chip_id)
162
+ @chip_settings = SpiSetting.find_by(chip_id: @chip.id)
66
163
  @speeds = {
67
164
  '25.00' => 3,
68
165
  '18.75' => 4,
@@ -80,191 +177,84 @@ class Generic_commands < Qt::Widget
80
177
  '0.29' => 255
81
178
  }
82
179
  when 'I2C'
83
- @chip_settings = I2C.find_by(i2c_chip: @chip.chip_id)
84
- @generic_command_gui.cbx_action.insertItem(3, 'Concatenate')
180
+ @chip_settings = @chip.i2c_setting
85
181
  end
86
182
  end
87
183
 
88
- # Execute action
89
- def exec_action
90
- if @generic_command_gui.tbl_cmd.currentItem.nil?
91
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Missing command', 'Select a command in the array first').exec
92
- return 0
93
- end
94
- case @generic_command_gui.cbx_action.currentText
95
- when 'Execute'
96
- cmd_array = prepare_cmd
97
- result = exec_cmd(@bus_name, cmd_array)
98
- if @generic_command_gui.check_result.isChecked
99
- export_manager = Export_manager.new(@bus_name, result, cmd_array)
100
- export_manager.setWindowModality(Qt::ApplicationModal)
101
- export_manager.show
102
- end
103
- when 'Template'
104
- open_cmd_form(:option_1 => 'temp')
105
- when 'Edit'
106
- open_cmd_form(:option_1 => 'edit')
107
- when 'Concatenate'
108
- concatenate_cmds
109
- when 'Delete'
110
- delete_cmd
111
- else
112
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Wrong option', 'Please choose a correct action').exec
113
- end
114
- rescue Exception => msg
115
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while executing the action. Consult the logs for more details').exec
116
- logger = Logger.new($logFilePath)
117
- logger.error msg
118
- end
119
-
120
184
  def prepare_cmd
121
- byte_list = Byte.where(byte_cmd: Cmd.find_by(cmd_name: @generic_command_gui.tbl_cmd.currentItem.text))
122
- array_sent = Array.new
185
+ byte_list = Byte.where(command_id: Command.find_by(name: @view.tbl_cmd.currentItem.text))
186
+ packet = []
123
187
  byte_list.each do |bl|
124
- if bl.byte_iteration != 0 && !bl.byte_iteration.nil?
125
- for i in 1..bl.byte_iteration.to_i do
126
- array_sent.push(bl.byte_value.to_i(16))
127
- end
188
+ unless bl.iteration == 0 && bl.iteration.nil?
189
+ packet.push(bl.value.to_i(16))
128
190
  else
129
- array_sent.push(bl.byte_value.to_i(16))
191
+ for i in 1..bl.iteration.to_i do
192
+ packet.push(bl.value.to_i(16))
193
+ end
130
194
  end
131
195
  end
132
- return array_sent
133
- rescue Exception => msg
134
- logger = Logger.new($logFilePath)
135
- logger.error msg
136
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when preparing the command. Consult the log for more details').exec
196
+ return packet
137
197
  end
138
198
 
139
199
  def exec_cmd(bus, array_sent)
140
- Firmware.new(@api, @bus_name)
141
- case bus
142
- when 'SPI'
143
- return check_send_and_received_data(@api.spi_Interact(@chip_settings.spi_mode, @speeds[@chip_settings.spi_frequency], array_sent))
144
- when 'I2C'
145
- return check_send_and_received_data(@api.i2c_Interact(@chip_settings.i2c_frequency, array_sent))
146
- end
147
- rescue Exception => msg
148
- logger = Logger.new($logFilePath)
149
- logger.error msg
150
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when executing the command. Consult the log for more details').exec
151
- end
152
-
153
- def delete_cmd
154
- msg = Qt::MessageBox.new
155
- msg.setWindowTitle('Delete command')
156
- msg.setText('Confirm the delete command action ?')
157
- msg.setIcon(Qt::MessageBox::Question)
158
- msg.setStandardButtons(Qt::MessageBox::Cancel | Qt::MessageBox::Ok)
159
- msg.setDefaultButton(Qt::MessageBox::Cancel)
160
- if msg.exec == Qt::MessageBox::Ok
161
- @chip.cmd.find_by(cmd_name: @generic_command_gui.tbl_cmd.currentItem.text).destroy
162
- feed_cmd_array
163
- end
164
- rescue Exception => msg
165
- logger = Logger.new($logFilePath)
166
- logger.error msg
167
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when deleting the command. Consult the log for more details').exec
168
- end
169
-
170
- def concatenate_cmds
171
- if @generic_command_gui.tbl_cmd.selectedItems.count != 2
172
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Wrong selection', 'Select two commands in the table to concatenate them').exec
173
- return 0
174
- end
175
- bytesCmd1 = Byte.where(byte_cmd: Cmd.find_by(cmd_name: @generic_command_gui.tbl_cmd.selectedItems[0].text).cmd_id)
176
- bytesCmd2 = Byte.where(byte_cmd: Cmd.find_by(cmd_name: @generic_command_gui.tbl_cmd.selectedItems[1].text).cmd_id)
177
- if check_concatenation_size(bytesCmd1, bytesCmd2)
178
- # Save cmd
179
- cmd = Cmd.new
180
- cmd.cmd_name = 'New concatenation'
181
- cmd.cmd_desc = "Concatenation of #{@generic_command_gui.tbl_cmd.selectedItems[0].text} and #{@generic_command_gui.tbl_cmd.selectedItems[1].text} commands"
182
- cmd.cmd_bus = @bus_id
183
- cmd.cmd_chip = @chip.chip_id
184
- cmd.save
185
- # Save cmd bytes
186
- bytesCmd1.each do |b1|
187
- byte = Byte.new
188
- byte.byte_index = b1.byte_index
189
- byte.byte_value = b1.byte_value
190
- byte.byte_description = b1.byte_description
191
- byte.byte_iteration = b1.byte_iteration
192
- byte.byte_cmd = Cmd.ids.last
193
- byte.save
194
- end
195
- bytesCmd2.each do |b2|
196
- byte2 = Byte.new
197
- byte2.byte_index = Byte.last.byte_index + 1
198
- byte2.byte_value = b2.byte_value
199
- byte2.byte_description = b2.byte_description
200
- byte2.byte_iteration = b2.byte_iteration
201
- byte2.byte_cmd = Cmd.ids.last
202
- byte2.save
200
+ Firmware.new(bus)
201
+ case bus
202
+ when 'SPI'
203
+ spi = HardsploitAPI_SPI.new(
204
+ speed: @speeds[@chip.spi_setting.frequency],
205
+ mode: @chip.spi_setting.mode
206
+ )
207
+ return spi.spi_Interact(payload: array_sent)
208
+ when 'I2C'
209
+ if [40, 100, 400, 1000].include?(@chip.i2c_setting.frequency)
210
+ speed = 0 if @chip.i2c_setting.frequency == 100
211
+ speed = 1 if @chip.i2c_setting.frequency == 400
212
+ speed = 2 if @chip.i2c_setting.frequency == 1000
213
+ speed = 3 if @chip.i2c_setting.frequency == 40
214
+ i2c = HardsploitAPI_I2C.new(speed: speed)
203
215
  end
204
- feed_cmd_array
216
+ return i2c.i2c_Interact(payload: array_sent)
205
217
  end
218
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
219
+ ErrorMsg.new.hardsploit_not_found
220
+ return false
221
+ rescue HardsploitAPI::ERROR::USB_ERROR
222
+ ErrorMsg.new.usb_error
223
+ return false
206
224
  rescue Exception => msg
207
- logger = Logger.new($logFilePath)
208
- logger.error msg
209
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when concatenating the command. Consult the log for more details').exec
225
+ ErrorMsg.new.unknown(msg)
226
+ return false
210
227
  end
211
228
 
212
- def check_concatenation_size(bytesCmd1, bytesCmd2)
213
- checkSize = []
214
- bytesCmd1.each do |b1|
215
- checkSize.push(b1.byte_value)
229
+ def check_concatenation_size(bytes_cmd_1, bytes_cmd_2)
230
+ check_size = []
231
+ bytes_cmd_1.each do |b1|
232
+ check_size.push(b1.value)
216
233
  end
217
- bytesCmd2.each do |b2|
218
- checkSize.push(b2.byte_value)
234
+ bytes_cmd_2.each do |b2|
235
+ check_size.push(b2.value)
219
236
  end
220
237
  count = 0
221
238
  i = 0
222
- while i <= (checkSize.size) - 1 do
223
- lowByte = checkSize[i]
224
- highByte = checkSize[i + 1]
225
- commandType = checkSize[i + 2]
226
- count += (lowByte.to_i(16) + (highByte.to_i(16)<<8))
239
+ while i <= (check_size.size) - 1 do
240
+ lowByte = check_size[i]
241
+ highByte = check_size[i + 1]
242
+ commandType = check_size[i + 2]
243
+ count += (lowByte.to_i(16) + (highByte.to_i(16) << 8))
227
244
  if commandType.to_i(16) % 2 == 0 #WRITE
228
- i += ((lowByte.to_i(16) + (highByte.to_i(16)<<8)) + 3)
245
+ i += ((lowByte.to_i(16) + (highByte.to_i(16) << 8)) + 3)
229
246
  else #READ
230
247
  i = (i + 3)
231
248
  end
232
249
  end
233
250
  if count > 2000
234
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Command too big: unable to concatenate').exec
251
+ Qt::MessageBox.new(
252
+ Qt::MessageBox::Critical,
253
+ 'Critical error',
254
+ 'Command too big: unable to concatenate'
255
+ ).exec
235
256
  return false
236
257
  end
237
258
  return true
238
259
  end
239
-
240
- def open_cmd_form(options={})
241
- if options[:option_1].nil?
242
- if @bus_name == 'I2C'
243
- cmdBase = I2c_command.new(@api, @chip, @bus_id, self)
244
- else
245
- cmdBase = Command_editor.new(0, nil, @chip, @bus_id, self, @api)
246
- end
247
- else
248
- if options[:option_1] == 'temp'
249
- cmdBase = Command_editor.new(1, @generic_command_gui.tbl_cmd.currentItem.text, @chip, @bus_id, self, @api)
250
- else
251
- cmdBase = Command_editor.new(2, @generic_command_gui.tbl_cmd.currentItem.text, @chip, @bus_id, self, @api)
252
- end
253
- end
254
- cmdBase.setWindowModality(Qt::ApplicationModal)
255
- cmdBase.show
256
- end
257
-
258
- def check_send_and_received_data(value)
259
- case value
260
- when HardsploitAPI::USB_STATE::PACKET_IS_TOO_LARGE
261
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', "PACKET_IS_TOO_LARGE max: #{HardsploitAPI::USB::USB_TRAME_SIZE}").exec
262
- when HardsploitAPI::USB_STATE::ERROR_SEND
263
- Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'ERROR_SEND').exec
264
- when HardsploitAPI::USB_STATE::BUSY
265
- Qt::MessageBox.new(Qt::MessageBox::Warning, 'BUSY', 'Device busy').exec
266
- else
267
- return value
268
- end
269
- end
270
260
  end