Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hak5
GitHub Repository: hak5/usbrubberducky-payloads
Path: blob/master/payloads/library/general/DuckyCave-Game/payload.txt
2968 views
1
REM Title: Ducky Cave
2
REM Author: Hak5's Korben (@notkorben) w. tweaks by @Hak5Darren
3
REM Description: Do you have what it takes to be a Ducky Cave champion?
4
REM This incredible Keystroke Injection game for the new USB Rubber Ducky
5
REM shows off the power of DuckyScript 3.0 while testing your skills!
6
REM
7
REM Usage: Open notepad or similar, deploy payload.
8
REM Use CAPSLOCK to navigate randomly generated cave!
9
REM Post your score on Twitter to enter the points-don't-matter leaderboard!
10
REM
11
REM Note: Requires target which reflects lock keys & new USB Rubber Ducky
12
REM
13
ATTACKMODE HID STORAGE
14
LED_G
15
DELAY 1000
16
STRINGLN QUACK! Hello world!
17
ENTER
18
DELAY 1200
19
STRINGLN _ _ _ USB _ _ _
20
STRINGLN __(.)< __(.)> __(.)= Rubber >(.)__ <(.)__ =(.)__
21
STRINGLN \___) \___) \___) Ducky! (___/ (___/ (___/
22
ENTER
23
STRINGLN * Documentation: https://docs.hak5.org
24
STRINGLN * Community: https://community.hak5.org
25
STRINGLN * Payloads: https://payloads.hak5.org
26
DELAY 1200
27
ENTER
28
STRINGLN Press CAPSLOCK 5 times for fun! (Windows/Linux)
29
WAIT_FOR_CAPS_CHANGE
30
LED_OFF
31
WAIT_FOR_CAPS_CHANGE
32
LED_G
33
WAIT_FOR_CAPS_CHANGE
34
LED_OFF
35
WAIT_FOR_CAPS_CHANGE
36
LED_G
37
WAIT_FOR_CAPS_CHANGE
38
LED_R
39
STRINGLN ___ _ ___ _ _
40
STRINGLN | \ _ _ __| |___ _ / __|__ ___ _____ | | |
41
STRINGLN | |) | || / _| / / || | (__/ _` \ V / -_)|_|_|
42
STRINGLN |___/ \_,_\__|_\_\\_, |\___\__,_|\_/\___|(_)_)
43
STRINGLN |__/
44
DEFINE RIGHT 0
45
DEFINE LEFT 1
46
DEFINE GAME_MAX_WIDTH 40
47
DEFINE GAME_SPEED 50
48
VAR $mode = RIGHT
49
VAR $lock_state = FALSE
50
VAR $score = 0
51
VAR $running = TRUE
52
VAR $direction_changes = 0
53
VAR $D = 0
54
VAR $INPUT = 0
55
VAR $MOD = 0
56
VAR $P = FALSE
57
FUNCTION PRINTDIGIT()
58
IF ($D == 0) THEN
59
STRING 0
60
ELSE IF ($D == 1) THEN
61
STRING 1
62
ELSE IF ($D == 2) THEN
63
STRING 2
64
ELSE IF ($D == 3) THEN
65
STRING 3
66
ELSE IF ($D == 4) THEN
67
STRING 4
68
ELSE IF ($D == 5) THEN
69
STRING 5
70
ELSE IF ($D == 6) THEN
71
STRING 6
72
ELSE IF ($D == 7) THEN
73
STRING 7
74
ELSE IF ($D == 8) THEN
75
STRING 8
76
ELSE IF ($D == 9) THEN
77
STRING 9
78
ELSE
79
STRING ?
80
END_IF
81
END_FUNCTION
82
FUNCTION CONSUME()
83
$D = 0
84
WHILE ($INPUT >= $MOD)
85
$D = ($D + 1)
86
$INPUT = ($INPUT - $MOD)
87
END_WHILE
88
IF (($D > 0) || ($P == TRUE)) THEN
89
$P = TRUE
90
PRINTDIGIT()
91
END_IF
92
END_FUNCTION
93
FUNCTION TRANSLATE_INT()
94
$P = FALSE
95
IF ( $INPUT >= 10000) THEN
96
$MOD = 10000
97
CONSUME()
98
END_IF
99
IF (($INPUT >= 1000) || ($P == TRUE)) THEN
100
$MOD = 1000
101
CONSUME()
102
END_IF
103
IF (($INPUT >= 100) || ($P == TRUE)) THEN
104
$MOD = 100
105
CONSUME()
106
END_IF
107
IF (($INPUT >= 10) || ($P == TRUE)) THEN
108
$MOD = 10
109
CONSUME()
110
END_IF()
111
$D = $INPUT
112
PRINTDIGIT()
113
END_FUNCTION
114
FUNCTION TRANSLATE_BOOL()
115
IF ($INPUT == TRUE) THEN
116
STRING TRUE
117
ELSE IF ($INPUT == FALSE) THEN
118
STRING FALSE
119
ELSE
120
STRING ?
121
END_IF
122
ENTER
123
END_FUNCTION
124
VAR $CD = 3
125
FUNCTION COUNTDOWN()
126
WHILE ( $CD > 0 )
127
STRING .
128
$CD = ($CD - 1)
129
DELAY 1000
130
END_WHILE
131
END_FUNCTION
132
FUNCTION ENSURE_CAPS_OFF()
133
IF ($_CAPSLOCK_ON == TRUE) THEN
134
CAPSLOCK
135
END_IF
136
END_FUNCTION
137
FUNCTION init()
138
$_RANDOM_MIN = 9
139
$_RANDOM_MAX = 19
140
VAR $l_wall = $_RANDOM_INT
141
$_RANDOM_MIN = 20
142
$_RANDOM_MAX = 29
143
VAR $player = $_RANDOM_INT
144
$_RANDOM_MIN = 30
145
$_RANDOM_MAX = 40
146
VAR $r_wall = $_RANDOM_INT
147
END_FUNCTION
148
FUNCTION check_input()
149
VAR $changed = FALSE
150
IF ($_CAPSLOCK_ON != $lock_state) THEN
151
$lock_state = $_CAPSLOCK_ON
152
$direction_changes = ($direction_changes + 1)
153
IF ($mode == RIGHT) THEN
154
$mode = LEFT
155
ELSE
156
$mode = RIGHT
157
END_IF
158
END_IF
159
END_FUNCTION
160
FUNCTION end_game()
161
LED_R
162
$running = FALSE
163
END_FUNCTION
164
FUNCTION move_walls()
165
$_RANDOM_MIN = 0
166
$_RANDOM_MAX = 100
167
VAR $CHANCE = $_RANDOM_INT
168
IF ($CHANCE > 45) THEN
169
IF ($l_wall < GAME_MAX_WIDTH) THEN
170
$l_wall = ($l_wall + 1)
171
REM STRING l+
172
END_IF
173
ELSE
174
IF ($l_wall > 0) THEN
175
$l_wall = ($l_wall - 1)
176
REM STRING l-
177
ELSE
178
$l_wall = ($l_wall + 1)
179
END_IF
180
END_IF
181
$CHANCE = $_RANDOM_INT
182
IF ($CHANCE > 45) THEN
183
IF ($r_wall > 0) THEN
184
$r_wall = ($r_wall - 1)
185
REM STRING r-
186
END_IF
187
ELSE
188
IF ($r_wall < GAME_MAX_WIDTH) THEN
189
$r_wall = ($r_wall + 1)
190
REM STRING r+
191
ELSE
192
$r_wall = ($r_wall - 1)
193
END_IF
194
END_IF
195
REM ENTER
196
END_FUNCTION
197
FUNCTION move_player()
198
IF ($mode == RIGHT) THEN
199
IF ($player < GAME_MAX_WIDTH) THEN
200
$player = ($player + 1)
201
END_IF
202
ELSE IF ($mode == LEFT) THEN
203
IF ($player > 0) THEN
204
$player = ($player - 1)
205
END_IF
206
END_IF
207
END_FUNCTION
208
FUNCTION draw()
209
IF (($player <= $l_wall) || ($player >= $r_wall)) THEN
210
end_game()
211
STRING BONK
212
RETURN 0
213
END_IF
214
VAR $l_inside_whitespace = (($player - $l_wall) - 1)
215
VAR $r_inside_whitespace = (($r_wall - $player) - 1)
216
IF ($l_wall > 1) THEN
217
VAR $l_outside_whitespace = ($l_wall - 1)
218
WHILE ($l_outside_whitespace > 0)
219
SPACE
220
$l_outside_whitespace = ($l_outside_whitespace - 1)
221
END_WHILE
222
END_IF
223
STRING |
224
WHILE ($l_inside_whitespace > 0)
225
SPACE
226
$l_inside_whitespace = ($l_inside_whitespace - 1)
227
END_WHILE
228
IF ($mode == RIGHT) THEN
229
STRING >
230
ELSE IF ($mode == LEFT) THEN
231
STRING <
232
END_IF
233
WHILE ($r_inside_whitespace > 0)
234
SPACE
235
$r_inside_whitespace = ($r_inside_whitespace - 1)
236
END_WHILE
237
STRING |
238
ENTER
239
$score = ($score + 1)
240
RETURN 0
241
END_FUNCTION
242
FUNCTION run()
243
check_input()
244
move_walls()
245
check_input()
246
move_player()
247
check_input()
248
draw()
249
END_FUNCTION
250
FUNCTION play_cave()
251
WHILE TRUE
252
ENSURE_CAPS_OFF()
253
$score = 0
254
LED_G
255
STRING Game Starting in 3s
256
$CD = 3
257
COUNTDOWN()
258
ENTER
259
STRING GOOD LUCK!
260
ENTER
261
init()
262
WHILE ($running == TRUE)
263
DELAY GAME_SPEED
264
run()
265
END_WHILE
266
ENSURE_CAPS_OFF()
267
ENTER
268
STRING Left wall:
269
SPACE
270
$INPUT = $l_wall
271
TRANSLATE_INT()
272
ENTER
273
STRING Right wall:
274
SPACE
275
$INPUT = $r_wall
276
TRANSLATE_INT()
277
ENTER
278
STRING Player position:
279
SPACE
280
$INPUT = $player
281
TRANSLATE_INT()
282
ENTER
283
STRING Player Moves:
284
SPACE
285
$INPUT = $direction_changes
286
TRANSLATE_INT()
287
ENTER
288
STRING GAME OVER. SCORE:
289
SPACE
290
$INPUT = $score
291
TRANSLATE_INT()
292
ENTER
293
STRING https://twitter.com/intent/tweet?text=I%20scored%20
294
$INPUT = $score
295
TRANSLATE_INT()
296
STRING %20in%20DuckyCave%20with%20my%20USB%20Rubber%20Ducky%21%20&url=https://hak5.org/duckycave&hashtags=DuckyCave&via=hak5
297
ENTER
298
ENTER
299
STRINGLN Shall we play again? Press CAPS to restart.
300
WAIT_FOR_CAPS_CHANGE
301
$running = TRUE
302
DELAY 100
303
END_WHILE
304
END_FUNCTION
305
BUTTON_DEF
306
end_game()
307
END_BUTTON
308
play_cave()
309
310