Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hak5
GitHub Repository: hak5/usbrubberducky-payloads
Path: blob/master/payloads/examples/Example_Payloads/konami_cave.txt
2968 views
1
REM Boots as STORAGE, starts a game of cave in a text editor after konami code
2
REM COMPATABILITY:
3
REM DuckyScript 3.0
4
5
REM TARGET:
6
REM Any host that will reflect CAPSLOCK
7
8
REM DEPLOYMENT:
9
REM Plug in Ducky. To Start a game of cave:
10
REM Open PayloadStudio Console, notepad or text editor, make sure cursor is active there
11
REM Press the button on the Ducky
12
REM Press CAPSLOCK on the host machine lock 5 times
13
REM Press the Duck button to confirm and start game
14
REM Good luck!
15
16
ATTACKMODE STORAGE
17
LED_G
18
WAIT_FOR_BUTTON_PRESS
19
LED_OFF
20
ATTACKMODE HID STORAGE
21
LED_G
22
WAIT_FOR_CAPS_CHANGE
23
LED_OFF
24
WAIT_FOR_CAPS_CHANGE
25
LED_G
26
WAIT_FOR_CAPS_CHANGE
27
LED_OFF
28
WAIT_FOR_CAPS_CHANGE
29
LED_G
30
WAIT_FOR_CAPS_CHANGE
31
LED_R
32
WAIT_FOR_BUTTON_PRESS
33
LED_G
34
35
DEFINE RIGHT 0
36
DEFINE LEFT 1
37
DEFINE GAME_MAX_WIDTH 40
38
DEFINE GAME_SPEED 200
39
VAR $mode = RIGHT
40
VAR $lock_state = FALSE
41
VAR $score = 0
42
VAR $running = TRUE
43
VAR $direction_changes = 0
44
45
VAR $D = 0
46
VAR $INPUT = 0
47
VAR $MOD = 0
48
VAR $P = FALSE
49
FUNCTION PRINTDIGIT()
50
IF ($D == 0) THEN
51
STRING 0
52
ELSE IF ($D == 1) THEN
53
STRING 1
54
ELSE IF ($D == 2) THEN
55
STRING 2
56
ELSE IF ($D == 3) THEN
57
STRING 3
58
ELSE IF ($D == 4) THEN
59
STRING 4
60
ELSE IF ($D == 5) THEN
61
STRING 5
62
ELSE IF ($D == 6) THEN
63
STRING 6
64
ELSE IF ($D == 7) THEN
65
STRING 7
66
ELSE IF ($D == 8) THEN
67
STRING 8
68
ELSE IF ($D == 9) THEN
69
STRING 9
70
ELSE
71
STRING ?
72
END_IF
73
END_FUNCTION
74
FUNCTION CONSUME()
75
$D = 0
76
WHILE ($INPUT >= $MOD)
77
$D = ($D + 1)
78
$INPUT = ($INPUT - $MOD)
79
END_WHILE
80
IF (($D > 0) || ($P == TRUE)) THEN
81
$P = TRUE
82
PRINTDIGIT()
83
END_IF
84
END_FUNCTION
85
FUNCTION TRANSLATE_INT()
86
$P = FALSE
87
IF ( $INPUT >= 10000) THEN
88
$MOD = 10000
89
CONSUME()
90
END_IF
91
IF (($INPUT >= 1000) || ($P == TRUE)) THEN
92
$MOD = 1000
93
CONSUME()
94
END_IF
95
IF (($INPUT >= 100) || ($P == TRUE)) THEN
96
$MOD = 100
97
CONSUME()
98
END_IF
99
IF (($INPUT >= 10) || ($P == TRUE)) THEN
100
$MOD = 10
101
CONSUME()
102
END_IF()
103
$D = $INPUT
104
PRINTDIGIT()
105
ENTER
106
END_FUNCTION
107
FUNCTION TRANSLATE_BOOL()
108
IF ($INPUT == TRUE) THEN
109
STRING TRUE
110
ELSE IF ($INPUT == FALSE) THEN
111
STRING FALSE
112
ELSE
113
STRING ?
114
END_IF
115
ENTER
116
END_FUNCTION
117
118
VAR $CD = 3
119
FUNCTION COUNTDOWN()
120
WHILE ( $CD > 0 )
121
STRING .
122
$CD = ($CD - 1)
123
DELAY 1000
124
END_WHILE
125
END_FUNCTION
126
127
FUNCTION ENSURE_CAPS_OFF()
128
IF ($_CAPSLOCK_ON == TRUE) THEN
129
CAPSLOCK
130
END_IF
131
END_FUNCTION
132
133
FUNCTION init()
134
$_RANDOM_MIN = 9
135
$_RANDOM_MAX = 19
136
VAR $l_wall = $_RANDOM_INT
137
$_RANDOM_MIN = 20
138
$_RANDOM_MAX = 29
139
VAR $player = $_RANDOM_INT
140
$_RANDOM_MIN = 30
141
$_RANDOM_MAX = 40
142
VAR $r_wall = $_RANDOM_INT
143
END_FUNCTION
144
145
FUNCTION check_input()
146
VAR $changed = FALSE
147
IF ($_CAPSLOCK_ON != $lock_state) THEN
148
$lock_state = $_CAPSLOCK_ON
149
$direction_changes = ($direction_changes + 1)
150
IF ($mode == RIGHT) THEN
151
$mode = LEFT
152
ELSE
153
$mode = RIGHT
154
END_IF
155
END_IF
156
END_FUNCTION
157
158
FUNCTION end_game()
159
LED_R
160
$running = FALSE
161
END_FUNCTION
162
163
FUNCTION move_walls()
164
$_RANDOM_MIN = 0
165
$_RANDOM_MAX = 100
166
VAR $CHANCE = $_RANDOM_INT
167
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
182
$CHANCE = $_RANDOM_INT
183
IF ($CHANCE > 45) THEN
184
IF ($r_wall > 0) THEN
185
$r_wall = ($r_wall - 1)
186
REM STRING r-
187
END_IF
188
ELSE
189
IF ($r_wall < GAME_MAX_WIDTH) THEN
190
$r_wall = ($r_wall + 1)
191
REM STRING r+
192
ELSE
193
$r_wall = ($r_wall - 1)
194
END_IF
195
END_IF
196
REM ENTER
197
END_FUNCTION
198
199
FUNCTION move_player()
200
IF ($mode == RIGHT) THEN
201
IF ($player < GAME_MAX_WIDTH) THEN
202
$player = ($player + 1)
203
END_IF
204
ELSE IF ($mode == LEFT) THEN
205
IF ($player > 0) THEN
206
$player = ($player - 1)
207
END_IF
208
END_IF
209
END_FUNCTION
210
211
FUNCTION draw()
212
IF (($player <= $l_wall) || ($player >= $r_wall)) THEN
213
end_game()
214
STRING BONK
215
RETURN 0
216
END_IF
217
218
VAR $l_inside_whitespace = (($player - $l_wall) - 1)
219
VAR $r_inside_whitespace = (($r_wall - $player) - 1)
220
IF ($l_wall > 1) THEN
221
VAR $l_outside_whitespace = ($l_wall - 1)
222
WHILE ($l_outside_whitespace > 0)
223
SPACE
224
$l_outside_whitespace = ($l_outside_whitespace - 1)
225
END_WHILE
226
END_IF
227
STRING |
228
WHILE ($l_inside_whitespace > 0)
229
SPACE
230
$l_inside_whitespace = ($l_inside_whitespace - 1)
231
END_WHILE
232
IF ($mode == RIGHT) THEN
233
STRING >
234
ELSE IF ($mode == LEFT) THEN
235
STRING <
236
END_IF
237
WHILE ($r_inside_whitespace > 0)
238
SPACE
239
$r_inside_whitespace = ($r_inside_whitespace - 1)
240
END_WHILE
241
STRING |
242
ENTER
243
$score = ($score + 1)
244
RETURN 0
245
END_FUNCTION
246
247
FUNCTION run()
248
check_input()
249
move_walls()
250
check_input()
251
move_player()
252
check_input()
253
draw()
254
END_FUNCTION
255
256
FUNCTION play_cave()
257
WHILE TRUE
258
ENSURE_CAPS_OFF()
259
$score = 0
260
LED_G
261
ENTER
262
STRING Game Starting in 3s
263
$CD = 3
264
COUNTDOWN()
265
ENTER
266
STRING GOOD LUCK!
267
ENTER
268
ENTER
269
init()
270
WHILE ($running == TRUE)
271
DELAY GAME_SPEED
272
run()
273
END_WHILE
274
ENSURE_CAPS_OFF()
275
ENTER
276
STRING Left wall
277
$INPUT = $l_wall
278
TRANSLATE_INT()
279
STRING Right wall:
280
$INPUT = $r_wall
281
TRANSLATE_INT()
282
STRING Player position:
283
$INPUT = $player
284
TRANSLATE_INT()
285
STRING GAME OVER. SCORE:
286
$INPUT = $score
287
TRANSLATE_INT()
288
STRING Player Moves:
289
$INPUT = $direction_changes
290
TRANSLATE_INT()
291
DELAY 1000
292
STRING Press CAPS to play again.
293
WAIT_FOR_CAPS_CHANGE
294
$running = TRUE
295
DELAY 100
296
END_WHILE
297
END_FUNCTION
298
299
BUTTON_DEF
300
end_game()
301
END_BUTTON
302
303
play_cave()
304