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
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/ruby
2
+ #===================================================
3
+ # Hardsploit API - By Opale Security
4
+ # www.opale-security.com || www.hardsploit.io
5
+ # License: GNU General Public License v3
6
+ # License URI: http://www.gnu.org/licenses/gpl.txt
7
+ #===================================================
8
+ require 'io/console'
9
+ require_relative '../HardsploitAPI/Core/HardsploitAPI'
10
+ require_relative '../HardsploitAPI/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER'
11
+
12
+ def callbackInfo(receiveData)
13
+ #print receiveData + "\n"
14
+ end
15
+
16
+ def callbackData(receiveData)
17
+ if receiveData != nil then
18
+ puts "received #{receiveData.size}"
19
+ p receiveData
20
+ else
21
+ puts "ISSUE BECAUSE DATA IS NIL"
22
+ end
23
+ end
24
+
25
+ def callbackSpeedOfTransfert(receiveData)
26
+ #puts "Speed : #{receiveData}"
27
+ end
28
+
29
+ def callbackProgress(percent:,startTime:,endTime:)
30
+ print "\r\e[#{31}mUpload of FPGA firmware in progress : #{percent}%\e[0m"
31
+ #puts "Progress : #{percent}% Start@ #{startTime} Stop@ #{endTime}"
32
+ #puts "Elasped time #{(endTime-startTime).round(4)} sec"
33
+ end
34
+
35
+ #puts "Number of hardsploit detected :#{HardsploitAPI.getNumberOfBoardAvailable}"
36
+
37
+ HardsploitAPI.callbackInfo = method(:callbackInfo)
38
+ HardsploitAPI.callbackData = method(:callbackData)
39
+ HardsploitAPI.callbackSpeedOfTransfert = method(:callbackSpeedOfTransfert)
40
+ HardsploitAPI.callbackProgress = method(:callbackProgress)
41
+ HardsploitAPI.id = 0 # id of hardsploit 0 for the first one, 1 for the second etc
42
+
43
+ HardsploitAPI.instance.getAllVersions
44
+
45
+ if ARGV[0] != "nofirmware" then
46
+ HardsploitAPI.instance.loadFirmware("SPI_SNIFFER")
47
+ end
48
+
49
+ @spi = HardsploitAPI_SPI_SNIFFER.new(mode:0,sniff:HardsploitAPI::SPISniffer::MOSI) # MISO MOSI MISO_MOSI
50
+
51
+ sleep(0.5)
52
+ def spiCustomCommand
53
+ i = '.'
54
+ while 1
55
+ i == "." ? i = ".." : i = "." #just to have a toggle in console to keep alive the console
56
+ begin
57
+ result = @spi.spi_receive_available_data
58
+
59
+ #if half a simple array, if fullduplex first item -> an array of MISO and second array -> an array of MOSI
60
+ case @spi.sniff
61
+ when HardsploitAPI::SPISniffer::MISO
62
+ puts "MISO : #{result}"
63
+ when HardsploitAPI::SPISniffer::MOSI
64
+ puts "MOSI : #{result}"
65
+ else
66
+ puts "MOSI : #{result[0]}"
67
+ puts "MISO : #{result[1]}"
68
+ end
69
+
70
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
71
+ puts "Hardsploit not found"
72
+ rescue HardsploitAPI::ERROR::USB_ERROR
73
+ puts i
74
+ #Ignore time out because we read in continous
75
+ end
76
+ end
77
+ end
78
+
79
+ while true
80
+ char = STDIN.getch
81
+ puts char
82
+ if char == "\u0003"
83
+ puts "Finished"
84
+ exit
85
+
86
+ elsif char == "i" then
87
+ spiCustomCommand
88
+ elsif char == "p" then
89
+ HardsploitAPI.instance.loadFirmware("SPI")
90
+ end
91
+ end
@@ -0,0 +1,224 @@
1
+ #!/usr/local/bin/ruby
2
+ #===================================================
3
+ # Hardsploit API - By Opale Security
4
+ # www.opale-security.com || www.hardsploit.io
5
+ # License: GNU General Public License v3
6
+ # License URI: http://www.gnu.org/licenses/gpl.txt
7
+ #===================================================
8
+ require 'io/console'
9
+ require_relative '../HardsploitAPI/Core/HardsploitAPI'
10
+ require_relative '../HardsploitAPI/Modules/SWD/HardsploitAPI_SWD'
11
+
12
+ def callbackInfo(receiveData)
13
+ #print receiveData + "\n"
14
+ end
15
+
16
+ def callbackData(receiveData)
17
+ if receiveData != nil then
18
+ puts "received #{receiveData.size}"
19
+ p receiveData
20
+ else
21
+ puts "ISSUE BECAUSE DATA IS NIL"
22
+ end
23
+ end
24
+
25
+ def callbackSpeedOfTransfert(receiveData)
26
+ #puts "Speed : #{receiveData}"
27
+ end
28
+ def callbackProgress(percent:,startTime:,endTime:)
29
+ print "\r\e[#{31}mUpload of FPGA firmware in progress : #{percent}%\e[0m"
30
+ #puts "Progress : #{percent}% Start@ #{startTime} Stop@ #{endTime}"
31
+ #puts "Elasped time #{(endTime-startTime).round(4)} sec"
32
+ end
33
+ puts "Number of hardsploit detected :#{HardsploitAPI.getNumberOfBoardAvailable}"
34
+ HardsploitAPI.callbackInfo = method(:callbackInfo)
35
+ HardsploitAPI.callbackData = method(:callbackData)
36
+ HardsploitAPI.callbackSpeedOfTransfert = method(:callbackSpeedOfTransfert)
37
+ HardsploitAPI.callbackProgress = method(:callbackProgress)
38
+ HardsploitAPI.id = 0 # id of hardsploit 0 for the first one, 1 for the second etc
39
+
40
+ HardsploitAPI.instance.getAllVersions
41
+
42
+ if ARGV[0] != "nofirmware" then
43
+ HardsploitAPI.instance.loadFirmware("SWD")
44
+ end
45
+
46
+ #The current API version
47
+ #p HardsploitAPI::VERSION::API
48
+ def swdCustomRead
49
+ begin
50
+ swd = HardsploitAPI_SWD.new(
51
+ memory_start_address: "0x08000000",
52
+ memory_size_address: "0x1FFFF7E0",
53
+ cpu_id_address: "0xE000ED00",
54
+ device_id_address: "0x1FFFF7E8"
55
+ )
56
+ #TO OBTAIN ID CODE
57
+ code = swd.obtainCodes
58
+ puts "DP.IDCODE: #{code[:DebugPortId].to_s(16)} "
59
+ #puts "AP.IDCODE: #{code[:AccessPortId].to_s(16)} "
60
+ #puts "CPU ID : #{code[:CpuId].to_s(16)} "
61
+ # puts "DEVICE ID : #{code[:DeviceId].to_s(16)}"
62
+ rescue
63
+ puts "MCU NOT FOUND"
64
+ #puts "Read ARM Register"
65
+ #swd.readRegs
66
+
67
+ #puts "stop"
68
+ #swd.stop
69
+
70
+ #TO DUMP FLASH
71
+ #swd.dumpFlash('dumdp.bin')
72
+ #swd.erase
73
+ # ERASE FLASH !!!!!!!!!! AND WRITE THE CONTENT OF THE FILE ON THE FLASH
74
+ #swd.writeFlash('dumdp2.bin')
75
+
76
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
77
+ puts "Hardsploit not found"
78
+ rescue HardsploitAPI::ERROR::USB_ERROR
79
+ puts "USB ERRROR"
80
+ end
81
+ end
82
+ def swdCustomWrite
83
+ begin
84
+
85
+ swd = HardsploitAPI_SWD.new(
86
+ memory_start_address: "0x08000000",
87
+ memory_size_address: "0x1FFFF7E0",
88
+ cpu_id_address: "0xE000ED00",
89
+ device_id_address: "0x1FFFF7E8"
90
+ )
91
+ #TO OBTAIN ID CODE
92
+ code = swd.obtainCodes
93
+ puts "DP.IDCODE: #{code[:DebugPortId].to_s(16)} "
94
+ puts "AP.IDCODE: #{code[:AccessPortId].to_s(16)} "
95
+ puts "CPU ID : #{code[:CpuId].to_s(16)} "
96
+
97
+ #TO DUMP FLASH
98
+ #swd.dumpFlash('dumdp.bin')
99
+ #swd.erase
100
+ # ERASE FLASH !!!!!!!!!! AND WRITE THE CONTENT OF THE FILE ON THE FLASH
101
+ swd.writeFlash('dumdp2.bin')
102
+ #unhalt
103
+ #swd.stop
104
+
105
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
106
+ puts "Hardsploit not found"
107
+ rescue HardsploitAPI::ERROR::USB_ERROR
108
+ puts "USB ERRROR"
109
+ end
110
+ end
111
+
112
+ while true
113
+ char = STDIN.getch
114
+ puts char
115
+ if char == "\u0003"
116
+ puts "Finished"
117
+ exit
118
+
119
+ elsif char == "z" then
120
+ crossvalue = Array.new
121
+ #Default wiring
122
+ for i in 0..63
123
+ crossvalue.push i
124
+ end
125
+ crossvalue[1] = HardsploitAPI.getSignalId(signal:"SWD_CLK")
126
+ crossvalue[2] = HardsploitAPI.getSignalId(signal:"SWD_IO")
127
+
128
+ crossvalue[0] = 2
129
+
130
+ p crossvalue
131
+ HardsploitAPI.instance.setCrossWiring(value:crossvalue)
132
+
133
+ puts "cross SWAP"
134
+ HardsploitAPI.instance.signalHelpingWiring(signal:"SWD_CLK")
135
+ elsif char == "e" then
136
+ crossvalue = Array.new
137
+ #Default wiring
138
+ for i in 0..63
139
+ crossvalue.push i
140
+ end
141
+
142
+ crossvalue[0] = 2
143
+ crossvalue[1] = HardsploitAPI.getSignalId(signal:"SWD_IO")
144
+ crossvalue[2] = HardsploitAPI.getSignalId(signal:"SWD_CLK")
145
+
146
+ p crossvalue
147
+ HardsploitAPI.instance.setCrossWiring(value:crossvalue)
148
+ puts "cross Normal"
149
+
150
+ HardsploitAPI.instance.signalHelpingWiring(signal:"SWD_CLK")
151
+ # TEST POUR LE BUG DE CROSS WIRING PRESS M
152
+ elsif char == 'm'
153
+ # 0 = CLK
154
+ # 1 = IO
155
+ swd = HardsploitAPI_SWD.new(
156
+ memory_start_address: "0x08000000",
157
+ memory_size_address: "0x1FFFF7E0",
158
+ cpu_id_address: "0xE000ED00",
159
+ device_id_address: "0x1FFFF7E8"
160
+ )
161
+ base_crossvalue = Array.new
162
+ for i in 0..63
163
+ base_crossvalue.push i
164
+ end
165
+ crossvalue = Array.new(base_crossvalue)
166
+ crossvalue[0] = 2
167
+ crossvalue[1] = 3
168
+ crossvalue[2] = 1
169
+ crossvalue[3] = 0
170
+ HardsploitAPI.instance.setCrossWiring(value:crossvalue)
171
+ result = swd.obtainCodes
172
+ #for i in 0..63
173
+ # crossvalue = Array.new(base_crossvalue)
174
+ # crossvalue[i] = 0
175
+ # crossvalue[0] = i
176
+ # crossvalue[i.next] = 1
177
+ # crossvalue[1] = i.next
178
+ # p crossvalue
179
+ # HardsploitAPI.instance.setCrossWiring(value:crossvalue)
180
+ # result = swd.obtainCodes
181
+ # p result unless result.nil?
182
+ # char = 'r'
183
+ # p "Branchement suivant"
184
+ # while char != 'n'
185
+ # char = STDIN.getch
186
+ # p "Next"
187
+ # end
188
+ #end
189
+ elsif char == "i" then
190
+ crossvalue = Array.new
191
+ #Default wiring
192
+ for i in 0..63
193
+ crossvalue.push i
194
+ end
195
+ #HardsploitAPI.instance.stopFPGA
196
+ #sleep(1)
197
+ #HardsploitAPI.instance.startFPGA
198
+ #sleep(1)
199
+ HardsploitAPI.instance.setCrossWiring(value:crossvalue)
200
+
201
+ swd.find(numberOfConnectedPinFromA0:2)
202
+ elsif char == "w" then
203
+ HardsploitAPI.instance.setStatutLed(led:HardsploitAPI::USB_COMMAND::GREEN_LED,state:true);
204
+ elsif char == "x" then
205
+ HardsploitAPI.instance.setStatutLed(led:HardsploitAPI::USB_COMMAND::GREEN_LED,state:false);
206
+ elsif char == "f" then
207
+ swdCustomRead
208
+ elsif char == "g" then
209
+ swdCustomWrite
210
+
211
+ elsif char == "1" then
212
+ puts "Read @ 0x20000000 "
213
+ p swd.read_mem32(0x20000000,3)
214
+ #p swd.read_mem8(0x20000000,4)
215
+
216
+ elsif char == "2" then
217
+ puts "Write @ 0x20000000 "
218
+ swd.write_mem32(0x20000000,[11,11,11,11,11,11,11,11,11,11,11,11])
219
+ swd.write_mem8(0x20000000,[1,2,3,4,5,6,7,8,9,10,14,12])
220
+
221
+ elsif char == "p" then
222
+ HardsploitAPI.instance.loadFirmware("SWD")
223
+ end
224
+ end
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/ruby
2
+ #===================================================
3
+ # Hardsploit API - By Opale Security
4
+ # www.opale-security.com || www.hardsploit.io
5
+ # License: GNU General Public License v3
6
+ # License URI: http://www.gnu.org/licenses/gpl.txt
7
+ #===================================================
8
+ require 'io/console'
9
+ require_relative '../HardsploitAPI/Core/HardsploitAPI'
10
+ require_relative '../HardsploitAPI/Modules/UART/HardsploitAPI_UART'
11
+
12
+ def callbackInfo(receiveData)
13
+ #print receiveData + "\n"
14
+ end
15
+
16
+ def callbackData(receiveData)
17
+ if receiveData != nil then
18
+ puts "received #{receiveData.size}"
19
+ p receiveData
20
+ end
21
+ end
22
+
23
+ def callbackSpeedOfTransfert(receiveData)
24
+ #puts "Speed : #{receiveData}"
25
+ end
26
+ def callbackProgress(percent:,startTime:,endTime:)
27
+ print "\r\e[#{31}mUpload of FPGA firmware in progress : #{percent}%\e[0m"
28
+ #puts "Progress : #{percent}% Start@ #{startTime} Stop@ #{endTime}"
29
+ #puts "Elasped time #{(endTime-startTime).round(4)} sec"
30
+ end
31
+
32
+ #puts "Number of hardsploit detected :#{HardsploitAPI.getNumberOfBoardAvailable}"
33
+
34
+ HardsploitAPI.callbackInfo = method(:callbackInfo)
35
+ HardsploitAPI.callbackData = method(:callbackData)
36
+ HardsploitAPI.callbackSpeedOfTransfert = method(:callbackSpeedOfTransfert)
37
+ HardsploitAPI.callbackProgress = method(:callbackProgress)
38
+ HardsploitAPI.id = 0 # id of hardsploit 0 for the first one, 1 for the second etc
39
+
40
+ HardsploitAPI.instance.getAllVersions
41
+
42
+ if ARGV[0] != "nofirmware" then
43
+ HardsploitAPI.instance.loadFirmware("UART")
44
+ end
45
+ @uart = HardsploitAPI_UART.new(baud_rate:57600, word_width:8,use_parity_bit:0,parity_type:0,nb_stop_bits:1,idle_line_level:1)
46
+ puts "Effective baudrate #{@uart.baud_rate}"
47
+
48
+ Thread.new{uartCustomRead()}
49
+ puts "Reading :"
50
+
51
+ def uartCustomSend
52
+ begin
53
+ #Send 32 bytes
54
+ payload = Array.new
55
+ for i in 0..35
56
+ payload.push 0x40
57
+ end
58
+ #Address OpenDoor
59
+ payload.push 0xFD
60
+ payload.push 0x29
61
+
62
+ payload.push 13 #Carriage return
63
+ @uart.write(payload:payload)
64
+ puts payload.pack("C*")
65
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
66
+ puts "Hardsploit not found"
67
+ rescue HardsploitAPI::ERROR::USB_ERROR
68
+ puts "USB ERRROR"
69
+ end
70
+ end
71
+
72
+ def uartCustomRead
73
+ while 1
74
+ begin
75
+ tab = @uart.sendAndReceived
76
+ print tab.pack('c*')
77
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
78
+ puts "Hardsploit not found"
79
+ rescue HardsploitAPI::ERROR::USB_ERROR
80
+ puts "USB ERRROR"
81
+ end
82
+ sleep(0.2)
83
+ end
84
+ end
85
+
86
+ while true
87
+ char = STDIN.getch
88
+ puts char
89
+ if char == "\u0003"
90
+ puts "Finished"
91
+ exit
92
+
93
+ elsif char == "e" then
94
+ puts "enableMeasureBaudRate"
95
+ @uart.enableMeasureBaudRate
96
+
97
+ elsif char == "d" then
98
+ puts "disableMeasureBaudRate"
99
+ @uart.disableMeasureBaudRate
100
+
101
+ elsif char == "b" then
102
+ p @uart.measureBaudRate
103
+ elsif char == "s" then
104
+ puts "uartCustomSend"
105
+ uartCustomSend
106
+ elsif char == "r" then
107
+ #Thread.new{uartCustomRead()}
108
+ uartCustomRead()
109
+ elsif char == "p" then
110
+ print "Upload Firmware check : #{HardsploitAPI.instance.uploadFirmware(pathFirmware:File.expand_path(File.dirname(__FILE__)) + "/../../HARDSPLOIT-VHDL/Firmware/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd",checkFirmware:false)}\n"
111
+ @uart.setSettings
112
+ end
113
+ end
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/ruby
2
+ #===================================================
3
+ # Hardsploit API - By Opale Security
4
+ # www.opale-security.com || www.hardsploit.io
5
+ # License: GNU General Public License v3
6
+ # License URI: http://www.gnu.org/licenses/gpl.txt
7
+ #===================================================
8
+ require 'io/console'
9
+ require_relative '../HardsploitAPI/Core/HardsploitAPI'
10
+ require_relative '../HardsploitAPI/Modules/UART/HardsploitAPI_UART'
11
+
12
+ def callbackInfo(receiveData)
13
+ #print receiveData + "\n"
14
+ end
15
+
16
+ def callbackData(receiveData)
17
+ if receiveData != nil then
18
+ puts "received #{receiveData.size}"
19
+ p receiveData
20
+ end
21
+ end
22
+
23
+ def callbackSpeedOfTransfert(receiveData)
24
+ #puts "Speed : #{receiveData}"
25
+ end
26
+ def callbackProgress(percent:,startTime:,endTime:)
27
+ print "\r\e[#{31}mUpload of FPGA firmware in progress : #{percent}%\e[0m"
28
+ #puts "Progress : #{percent}% Start@ #{startTime} Stop@ #{endTime}"
29
+ #puts "Elasped time #{(endTime-startTime).round(4)} sec"
30
+ end
31
+
32
+ #puts "Number of hardsploit detected :#{HardsploitAPI.getNumberOfBoardAvailable}"
33
+
34
+ HardsploitAPI.callbackInfo = method(:callbackInfo)
35
+ HardsploitAPI.callbackData = method(:callbackData)
36
+ HardsploitAPI.callbackSpeedOfTransfert = method(:callbackSpeedOfTransfert)
37
+ HardsploitAPI.callbackProgress = method(:callbackProgress)
38
+ HardsploitAPI.id = 0 # id of hardsploit 0 for the first one, 1 for the second etc
39
+
40
+ HardsploitAPI.instance.getAllVersions
41
+
42
+ if ARGV[0] != "nofirmware" then
43
+ HardsploitAPI.instance.loadFirmware("UART")
44
+ end
45
+
46
+ @uart = HardsploitAPI_UART.new(baud_rate:57600, word_width:8,use_parity_bit:0,parity_type:0,nb_stop_bits:2,idle_line_level:1)
47
+ puts "\nEffective baudrate #{@uart.baud_rate} \n"
48
+ Thread.new{uartCustomRead()}
49
+ puts "Start reading :\n\n"
50
+
51
+ def uartCustomRead
52
+ while 1
53
+ begin
54
+ tab = @uart.sendAndReceived
55
+ print tab.pack('c*')
56
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
57
+ puts "Hardsploit not found"
58
+ rescue HardsploitAPI::ERROR::USB_ERROR
59
+ puts "USB ERRROR"
60
+ end
61
+ sleep(0.1)
62
+ end
63
+ end
64
+
65
+ while true
66
+ char = STDIN.getch
67
+ if char == "\u0003"
68
+ puts "Finished"
69
+ exit
70
+ else
71
+ @uart.write(payload:[char.ord])
72
+ print char
73
+ end
74
+ end