Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hak5
GitHub Repository: hak5/usbrubberducky-payloads
Path: blob/master/payloads/extensions/translate.txt
2968 views
1
EXTENSION TRANSLATE
2
REM VERSION 1.1
3
REM AUTHOR: Korben
4
5
REM_BLOCK DOCUMENTATION
6
This extension acts as a library or collection of helper functions
7
to work with converting variables in your payloads.
8
WHY:
9
Of the many ways to get information about the state of your payload
10
is by injecting static strings effectively as debugging prints
11
However, given the non-static nature of payloads using variables in
12
DuckyScript 3.0 - the ability to decode variables during payload
13
execution and print (inject) representations of their current state
14
can often be a critically helpful development and debugging tool.
15
16
Available Functions:
17
DEFAULT:
18
TRANSLATE_INT() - var to decimal string - set $INPUT prior to call
19
EXTENDED: (enabled using the #INCLUDE defines below):
20
TRANSLATE_HEX() - var to hexidecimal string - set $INPUT prior to call
21
TRANSLATE_BINARY() - var to binary string - set $INPUT prior to call
22
TRANSLATE_BOOL() - var to boolean string - set $INPUT prior to call
23
24
USAGE:
25
set $INPUT to desired var
26
call the correct translate_ function for the expected data type e.g.
27
VAR $myVar = 1234
28
$INPUT = $myVar
29
TRANSLATE_INT()
30
REM the above code will inject 1234
31
END_REM
32
33
REM CONFIGURATION:
34
DEFINE #INCLUDE_TRANSLATE_HEX FALSE
35
DEFINE #INCLUDE_TRANSLATE_BOOL FALSE
36
DEFINE #INCLUDE_TRANSLATE_BINARY FALSE
37
DEFINE #INCLUDE_SWAP_ENDIAN FALSE
38
39
REM Append ENTER after translation
40
VAR $AS_STRINGLN = TRUE
41
42
DEFINE #PRINT_INT 0
43
DEFINE #PRINT_HEX 1
44
VAR $DIGIT_PRINT_MODE = #PRINT_INT
45
VAR $D = 0
46
VAR $IN = 0
47
VAR $INPUT = 0
48
VAR $MOD = 0
49
VAR $P = FALSE
50
51
REM REQUIRED for INT/HEX - convert int to char
52
FUNCTION PRINTDIGIT()
53
IF ($D == 0) THEN
54
STRING 0
55
ELSE IF ($D == 1) THEN
56
STRING 1
57
ELSE IF ($D == 2) THEN
58
STRING 2
59
ELSE IF ($D == 3) THEN
60
STRING 3
61
ELSE IF ($D == 4) THEN
62
STRING 4
63
ELSE IF ($D == 5) THEN
64
STRING 5
65
ELSE IF ($D == 6) THEN
66
STRING 6
67
ELSE IF ($D == 7) THEN
68
STRING 7
69
ELSE IF ($D == 8) THEN
70
STRING 8
71
ELSE IF ($D == 9) THEN
72
STRING 9
73
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_HEX
74
ELSE IF ($DIGIT_PRINT_MODE == #PRINT_HEX) THEN
75
IF ($D == 10) THEN
76
STRING A
77
ELSE IF ($D == 11) THEN
78
STRING B
79
ELSE IF ($D == 12) THEN
80
STRING C
81
ELSE IF ($D == 13) THEN
82
STRING D
83
ELSE IF ($D == 14) THEN
84
STRING E
85
ELSE IF ($D == 15) THEN
86
STRING F
87
END_IF
88
END_IF_DEFINED
89
ELSE
90
STRING ?
91
END_IF
92
END_FUNCTION
93
94
REM REQUIRED for INT/HEX- consumes a character / place from the input
95
FUNCTION CONSUME()
96
$D = 0
97
WHILE ($INPUT >= $MOD)
98
$D = ($D + 1)
99
$INPUT = ($INPUT - $MOD)
100
END_WHILE
101
IF (($D > 0) || ($P == TRUE)) THEN
102
$P = TRUE
103
PRINTDIGIT()
104
END_IF
105
END_FUNCTION
106
107
IF_DEFINED_TRUE #INCLUDE_SWAP_ENDIAN
108
REM ENDIAN SWAPPER helper, (useful for working with VID/PID)
109
FUNCTION SWAP_ENDIAN()
110
$INPUT = ((($INPUT >> 8) & 0x00FF) | (($INPUT << 8) & 0xFF00))
111
END_FUNCTION
112
END_IF_DEFINED
113
114
115
REM Translates a variable of presumed integer type and attempts to convert
116
REM and inject a DECIMAL string representation
117
FUNCTION TRANSLATE_INT()
118
$DIGIT_PRINT_MODE = #PRINT_INT
119
$P = FALSE
120
IF ( $INPUT >= 10000) THEN
121
$MOD = 10000
122
CONSUME()
123
END_IF
124
IF (($INPUT >= 1000) || ($P == TRUE)) THEN
125
$MOD = 1000
126
CONSUME()
127
END_IF
128
IF (($INPUT >= 100) || ($P == TRUE)) THEN
129
$MOD = 100
130
CONSUME()
131
END_IF
132
IF (($INPUT >= 10) || ($P == TRUE)) THEN
133
$MOD = 10
134
CONSUME()
135
END_IF()
136
$D = $INPUT
137
PRINTDIGIT()
138
IF $AS_STRINGLN THEN
139
ENTER
140
END_IF
141
END_FUNCTION
142
143
REM Translates a variable of presumed boolean type and attempts to convert
144
REM and inject a BOOLEAN string representation
145
REM TO ENABLE SET INCLUDE_TRANSLATE_BOOL to TRUE before compiling
146
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_BOOL
147
FUNCTION TRANSLATE_BOOL()
148
IF $INPUT THEN
149
STRING TRUE
150
ELSE
151
STRING FALSE
152
END_IF
153
IF $AS_STRINGLN THEN
154
ENTER
155
END_IF
156
END_FUNCTION
157
END_IF_DEFINED
158
159
REM Translates a variable of presumed integer type and attempts to convert
160
REM and inject a HEX string representation
161
REM TO ENABLE SET INCLUDE_TRANSLATE_HEX to TRUE before compiling
162
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_HEX
163
FUNCTION TRANSLATE_HEX()
164
$DIGIT_PRINT_MODE = #PRINT_HEX
165
VAR $chars = 0
166
VAR $d1 = 0
167
VAR $d2 = 0
168
VAR $d3 = 0
169
VAR $d4 = 0
170
WHILE ($INPUT > 0)
171
IF ($chars == 0) THEN
172
$d1 = ($INPUT % 16)
173
ELSE IF ($chars == 1) THEN
174
$d2 = ($INPUT % 16)
175
ELSE IF ($chars == 2) THEN
176
$d3 = ($INPUT % 16)
177
ELSE IF ($chars == 3) THEN
178
$d4 = ($INPUT % 16)
179
END_IF
180
$chars = ($chars + 1)
181
$INPUT = ($INPUT / 16)
182
END_WHILE
183
VAR $i = 0
184
STRING 0x
185
IF ($chars == 0) THEN
186
STRING 0x0000
187
ELSE IF ($chars == 1) THEN
188
STRING 000
189
$D = $d1
190
PRINTDIGIT()
191
ELSE IF ($chars == 2) THEN
192
STRING 00
193
$D = $d2
194
PRINTDIGIT()
195
$D = $d1
196
PRINTDIGIT()
197
ELSE IF ($chars == 3) THEN
198
STRING 0
199
$D = $d3
200
PRINTDIGIT()
201
$D = $d2
202
PRINTDIGIT()
203
$D = $d1
204
PRINTDIGIT()
205
ELSE IF ($chars == 4) THEN
206
STRING 0
207
$D = $d4
208
PRINTDIGIT()
209
$D = $d3
210
PRINTDIGIT()
211
$D = $d2
212
PRINTDIGIT()
213
$D = $d1
214
PRINTDIGIT()
215
END_IF
216
IF $AS_STRINGLN THEN
217
ENTER
218
END_IF
219
END_FUNCTION
220
END_IF_DEFINED
221
222
REM Translates a variable of presumed integer type and attempts to convert
223
REM and inject a BINARY string representation
224
REM TO ENABLE SET INCLUDE_TRANSLATE_BINARY to TRUE before compiling
225
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_BINARY
226
FUNCTION TRANSLATE_BINARY()
227
VAR $I = 16
228
WHILE ( $I > 0 )
229
$I = ($I - 1)
230
IF (($INPUT & 0x8000) == 0 ) THEN
231
STRING 0
232
ELSE
233
STRING 1
234
END_IF
235
$INPUT = ($INPUT << 1)
236
END_WHILE
237
IF $AS_STRINGLN THEN
238
ENTER
239
END_IF
240
END_FUNCTION
241
END_IF_DEFINED
242
END_EXTENSION
243
244