hardsploit_gui 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/Hardsploit_gui.rb +4 -5
- data/lib/class/Chip_clone.rb +70 -0
- data/lib/class/Chip_editor.rb +1 -0
- data/lib/class/Chip_management.rb +73 -52
- data/lib/class/ErrorMsg.rb +1 -0
- data/lib/class/Firmware.rb +1 -1
- data/lib/class/Progress_bar.rb +1 -1
- data/lib/class/Wire_helper.rb +6 -3
- data/lib/class/{I2C → i2c}/I2c_command.rb +0 -0
- data/lib/class/{I2C/I2c_export.rb → i2c/I2c_read.rb} +15 -15
- data/lib/class/{I2C → i2c}/I2c_scanner.rb +2 -1
- data/lib/class/{I2C → i2c}/I2c_settings.rb +1 -0
- data/lib/class/{I2C/I2c_import.rb → i2c/I2c_write.rb} +13 -12
- data/lib/class/{PARALLEL/Parallel_export.rb → parallel/Parallel_read.rb} +17 -18
- data/lib/class/{PARALLEL → parallel}/Parallel_settings.rb +0 -0
- data/lib/class/{PARALLEL/Parallel_import.rb → parallel/Parallel_write.rb} +11 -10
- data/lib/class/{SPI/Spi_export.rb → spi/Spi_read.rb} +15 -15
- data/lib/class/{SPI → spi}/Spi_settings.rb +0 -0
- data/lib/class/{SPI → spi}/Spi_sniffer.rb +2 -1
- data/lib/class/{SPI/Spi_import.rb → spi/Spi_write.rb} +13 -12
- data/lib/class/swd/Swd.rb +10 -10
- data/lib/class/swd/Swd_scanner.rb +2 -1
- data/lib/class/uart/Uart_baudrate.rb +1 -1
- data/lib/class/uart/Uart_console.rb +1 -1
- data/lib/class/uart/Uart_settings.rb +1 -0
- data/lib/db/development.sqlite3 +0 -0
- data/lib/gui/gui_chip_clone.rb +87 -0
- data/lib/gui/gui_chip_editor.rb +349 -349
- data/lib/gui/gui_chip_management.rb +378 -377
- data/lib/gui/gui_command_editor.rb +219 -219
- data/lib/gui/gui_export.rb +132 -132
- data/lib/gui/gui_export_manager.rb +93 -93
- data/lib/gui/gui_generic_commands.rb +202 -202
- data/lib/gui/gui_generic_read.rb +185 -0
- data/lib/gui/gui_generic_write.rb +142 -0
- data/lib/gui/gui_i2c_command.rb +116 -116
- data/lib/gui/gui_i2c_settings.rb +242 -230
- data/lib/gui/gui_import.rb +131 -131
- data/lib/gui/gui_parallel_settings.rb +195 -195
- data/lib/gui/gui_progress_bar.rb +85 -85
- data/lib/gui/gui_signal_mapper.rb +121 -121
- data/lib/gui/gui_signal_scanner.rb +146 -146
- data/lib/gui/gui_spi_settings.rb +313 -313
- data/lib/gui/gui_spi_sniffer.rb +112 -112
- data/lib/gui/gui_swd_settings.rb +166 -166
- data/lib/gui/gui_uart_baudrate.rb +114 -114
- data/lib/gui/gui_uart_console.rb +164 -164
- data/lib/gui/gui_uart_settings.rb +243 -243
- data/lib/gui/gui_wire_helper.rb +99 -99
- data/lib/gui_designer/compile_to_ruby.sh +14 -0
- data/lib/gui_designer/gui_chip_clone.ui +96 -0
- data/lib/gui_designer/gui_chip_management.ui +25 -22
- data/lib/gui_designer/{gui_generic_export.ui → gui_generic_read.ui} +152 -72
- data/lib/gui_designer/{gui_generic_import.ui → gui_generic_write.ui} +47 -47
- data/lib/gui_designer/gui_i2c_settings.ui +68 -60
- data/lib/hardsploit-api/Examples/swdProgrammer.rb +76 -0
- data/lib/hardsploit-api/Examples/testI2C.rb +183 -0
- data/lib/hardsploit-api/Examples/testNRF24L01.rb +122 -0
- data/lib/hardsploit-api/Examples/testParralel.rb +84 -0
- data/lib/hardsploit-api/Examples/testSPI.rb +113 -0
- data/lib/hardsploit-api/Examples/testSPISniffer.rb +91 -0
- data/lib/hardsploit-api/Examples/testSWD.rb +224 -0
- data/lib/hardsploit-api/Examples/testUARTBufferOverflow.rb +113 -0
- data/lib/hardsploit-api/Examples/testUARTConsole.rb +74 -0
- data/lib/hardsploit-api/Examples/testUARTFuzzer.rb +109 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/TEST/TEST_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_TEST_INTERACT.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/FPGA/VersionFPGA.rb +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/UC/HARDSPLOIT_FIRMWARE_UC.bin +0 -0
- data/lib/{Firmwares → hardsploit-api/Firmwares}/UC/VersionUC.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_CONSTANT.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_ERROR.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_FIRMWARE.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_PROGRESS.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Core/HardsploitAPI_USB_COMMUNICATION.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/I2C/HardsploitAPI_I2C.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/NO_MUX_PARALLEL_MEMORY/HardsploitAPI_NO_MUX_PARALLEL_MEMORY.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/NRF24L01/HardsploitAPI_NRF24L01.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SPI/HardsploitAPI_SPI.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD_DEBUG.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD_MEM_AP.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/SWD/HardsploitAPI_SWD_STM32.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/TEST/HardsploitAPI_TEST_INTERACT.rb +0 -0
- data/lib/{HardsploitAPI → hardsploit-api/HardsploitAPI}/Modules/UART/HardsploitAPI_UART.rb +0 -0
- data/lib/hardsploit-api/LICENSE.txt +674 -0
- data/lib/hardsploit-api/README.md +22 -0
- data/lib/hardsploit-api/TRADEMARK +3 -0
- data/lib/logs/error.log +80 -0
- metadata +65 -49
- data/lib/gui/gui_generic_export.rb +0 -164
- data/lib/gui/gui_generic_import.rb +0 -142
- 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
|