Path: blob/master/payloads/library/general/DuckyCave-Game/payload.txt
2968 views
REM Title: Ducky Cave1REM Author: Hak5's Korben (@notkorben) w. tweaks by @Hak5Darren2REM Description: Do you have what it takes to be a Ducky Cave champion?3REM This incredible Keystroke Injection game for the new USB Rubber Ducky4REM shows off the power of DuckyScript 3.0 while testing your skills!5REM6REM Usage: Open notepad or similar, deploy payload.7REM Use CAPSLOCK to navigate randomly generated cave!8REM Post your score on Twitter to enter the points-don't-matter leaderboard!9REM10REM Note: Requires target which reflects lock keys & new USB Rubber Ducky11REM12ATTACKMODE HID STORAGE13LED_G14DELAY 100015STRINGLN QUACK! Hello world!16ENTER17DELAY 120018STRINGLN _ _ _ USB _ _ _19STRINGLN __(.)< __(.)> __(.)= Rubber >(.)__ <(.)__ =(.)__20STRINGLN \___) \___) \___) Ducky! (___/ (___/ (___/21ENTER22STRINGLN * Documentation: https://docs.hak5.org23STRINGLN * Community: https://community.hak5.org24STRINGLN * Payloads: https://payloads.hak5.org25DELAY 120026ENTER27STRINGLN Press CAPSLOCK 5 times for fun! (Windows/Linux)28WAIT_FOR_CAPS_CHANGE29LED_OFF30WAIT_FOR_CAPS_CHANGE31LED_G32WAIT_FOR_CAPS_CHANGE33LED_OFF34WAIT_FOR_CAPS_CHANGE35LED_G36WAIT_FOR_CAPS_CHANGE37LED_R38STRINGLN ___ _ ___ _ _39STRINGLN | \ _ _ __| |___ _ / __|__ ___ _____ | | |40STRINGLN | |) | || / _| / / || | (__/ _` \ V / -_)|_|_|41STRINGLN |___/ \_,_\__|_\_\\_, |\___\__,_|\_/\___|(_)_)42STRINGLN |__/43DEFINE RIGHT 044DEFINE LEFT 145DEFINE GAME_MAX_WIDTH 4046DEFINE GAME_SPEED 5047VAR $mode = RIGHT48VAR $lock_state = FALSE49VAR $score = 050VAR $running = TRUE51VAR $direction_changes = 052VAR $D = 053VAR $INPUT = 054VAR $MOD = 055VAR $P = FALSE56FUNCTION PRINTDIGIT()57IF ($D == 0) THEN58STRING 059ELSE IF ($D == 1) THEN60STRING 161ELSE IF ($D == 2) THEN62STRING 263ELSE IF ($D == 3) THEN64STRING 365ELSE IF ($D == 4) THEN66STRING 467ELSE IF ($D == 5) THEN68STRING 569ELSE IF ($D == 6) THEN70STRING 671ELSE IF ($D == 7) THEN72STRING 773ELSE IF ($D == 8) THEN74STRING 875ELSE IF ($D == 9) THEN76STRING 977ELSE78STRING ?79END_IF80END_FUNCTION81FUNCTION CONSUME()82$D = 083WHILE ($INPUT >= $MOD)84$D = ($D + 1)85$INPUT = ($INPUT - $MOD)86END_WHILE87IF (($D > 0) || ($P == TRUE)) THEN88$P = TRUE89PRINTDIGIT()90END_IF91END_FUNCTION92FUNCTION TRANSLATE_INT()93$P = FALSE94IF ( $INPUT >= 10000) THEN95$MOD = 1000096CONSUME()97END_IF98IF (($INPUT >= 1000) || ($P == TRUE)) THEN99$MOD = 1000100CONSUME()101END_IF102IF (($INPUT >= 100) || ($P == TRUE)) THEN103$MOD = 100104CONSUME()105END_IF106IF (($INPUT >= 10) || ($P == TRUE)) THEN107$MOD = 10108CONSUME()109END_IF()110$D = $INPUT111PRINTDIGIT()112END_FUNCTION113FUNCTION TRANSLATE_BOOL()114IF ($INPUT == TRUE) THEN115STRING TRUE116ELSE IF ($INPUT == FALSE) THEN117STRING FALSE118ELSE119STRING ?120END_IF121ENTER122END_FUNCTION123VAR $CD = 3124FUNCTION COUNTDOWN()125WHILE ( $CD > 0 )126STRING .127$CD = ($CD - 1)128DELAY 1000129END_WHILE130END_FUNCTION131FUNCTION ENSURE_CAPS_OFF()132IF ($_CAPSLOCK_ON == TRUE) THEN133CAPSLOCK134END_IF135END_FUNCTION136FUNCTION init()137$_RANDOM_MIN = 9138$_RANDOM_MAX = 19139VAR $l_wall = $_RANDOM_INT140$_RANDOM_MIN = 20141$_RANDOM_MAX = 29142VAR $player = $_RANDOM_INT143$_RANDOM_MIN = 30144$_RANDOM_MAX = 40145VAR $r_wall = $_RANDOM_INT146END_FUNCTION147FUNCTION check_input()148VAR $changed = FALSE149IF ($_CAPSLOCK_ON != $lock_state) THEN150$lock_state = $_CAPSLOCK_ON151$direction_changes = ($direction_changes + 1)152IF ($mode == RIGHT) THEN153$mode = LEFT154ELSE155$mode = RIGHT156END_IF157END_IF158END_FUNCTION159FUNCTION end_game()160LED_R161$running = FALSE162END_FUNCTION163FUNCTION move_walls()164$_RANDOM_MIN = 0165$_RANDOM_MAX = 100166VAR $CHANCE = $_RANDOM_INT167IF ($CHANCE > 45) THEN168IF ($l_wall < GAME_MAX_WIDTH) THEN169$l_wall = ($l_wall + 1)170REM STRING l+171END_IF172ELSE173IF ($l_wall > 0) THEN174$l_wall = ($l_wall - 1)175REM STRING l-176ELSE177$l_wall = ($l_wall + 1)178END_IF179END_IF180$CHANCE = $_RANDOM_INT181IF ($CHANCE > 45) THEN182IF ($r_wall > 0) THEN183$r_wall = ($r_wall - 1)184REM STRING r-185END_IF186ELSE187IF ($r_wall < GAME_MAX_WIDTH) THEN188$r_wall = ($r_wall + 1)189REM STRING r+190ELSE191$r_wall = ($r_wall - 1)192END_IF193END_IF194REM ENTER195END_FUNCTION196FUNCTION move_player()197IF ($mode == RIGHT) THEN198IF ($player < GAME_MAX_WIDTH) THEN199$player = ($player + 1)200END_IF201ELSE IF ($mode == LEFT) THEN202IF ($player > 0) THEN203$player = ($player - 1)204END_IF205END_IF206END_FUNCTION207FUNCTION draw()208IF (($player <= $l_wall) || ($player >= $r_wall)) THEN209end_game()210STRING BONK211RETURN 0212END_IF213VAR $l_inside_whitespace = (($player - $l_wall) - 1)214VAR $r_inside_whitespace = (($r_wall - $player) - 1)215IF ($l_wall > 1) THEN216VAR $l_outside_whitespace = ($l_wall - 1)217WHILE ($l_outside_whitespace > 0)218SPACE219$l_outside_whitespace = ($l_outside_whitespace - 1)220END_WHILE221END_IF222STRING |223WHILE ($l_inside_whitespace > 0)224SPACE225$l_inside_whitespace = ($l_inside_whitespace - 1)226END_WHILE227IF ($mode == RIGHT) THEN228STRING >229ELSE IF ($mode == LEFT) THEN230STRING <231END_IF232WHILE ($r_inside_whitespace > 0)233SPACE234$r_inside_whitespace = ($r_inside_whitespace - 1)235END_WHILE236STRING |237ENTER238$score = ($score + 1)239RETURN 0240END_FUNCTION241FUNCTION run()242check_input()243move_walls()244check_input()245move_player()246check_input()247draw()248END_FUNCTION249FUNCTION play_cave()250WHILE TRUE251ENSURE_CAPS_OFF()252$score = 0253LED_G254STRING Game Starting in 3s255$CD = 3256COUNTDOWN()257ENTER258STRING GOOD LUCK!259ENTER260init()261WHILE ($running == TRUE)262DELAY GAME_SPEED263run()264END_WHILE265ENSURE_CAPS_OFF()266ENTER267STRING Left wall:268SPACE269$INPUT = $l_wall270TRANSLATE_INT()271ENTER272STRING Right wall:273SPACE274$INPUT = $r_wall275TRANSLATE_INT()276ENTER277STRING Player position:278SPACE279$INPUT = $player280TRANSLATE_INT()281ENTER282STRING Player Moves:283SPACE284$INPUT = $direction_changes285TRANSLATE_INT()286ENTER287STRING GAME OVER. SCORE:288SPACE289$INPUT = $score290TRANSLATE_INT()291ENTER292STRING https://twitter.com/intent/tweet?text=I%20scored%20293$INPUT = $score294TRANSLATE_INT()295STRING %20in%20DuckyCave%20with%20my%20USB%20Rubber%20Ducky%21%20&url=https://hak5.org/duckycave&hashtags=DuckyCave&via=hak5296ENTER297ENTER298STRINGLN Shall we play again? Press CAPS to restart.299WAIT_FOR_CAPS_CHANGE300$running = TRUE301DELAY 100302END_WHILE303END_FUNCTION304BUTTON_DEF305end_game()306END_BUTTON307play_cave()308309310