From 98b6b70469b31dd592e200e62dc2bddabab54ad0 Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 19:56:17 +0000
Subject: [PATCH 1/7] Initial
---
.../Multi_HID_Pebbles/payloadNimDucky.txt | 885 ++++++++++++++++++
.../library/general/Multi_HID_Pebbles/pebbles | 159 ++++
.../general/Multi_HID_Pebbles/readme.md | 27 +
3 files changed, 1071 insertions(+)
create mode 100644 payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt
create mode 100644 payloads/library/general/Multi_HID_Pebbles/pebbles
create mode 100644 payloads/library/general/Multi_HID_Pebbles/readme.md
diff --git a/payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt b/payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt
new file mode 100644
index 0000000..676373a
--- /dev/null
+++ b/payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt
@@ -0,0 +1,885 @@
+ATTACKMODE HID STORAGE
+REM TITLE: Nim
+REM AUTHOR: Cribbit
+REM DESCRIPTION: play a game of nim with a ducky
+REM Props: Korben & Bert van Dam
+DELAY 2000
+EXTENSION TRANSLATE
+ REM VERSION 1.0
+
+ REM This extension acts as a library or collection of helper functions
+ REM to work with converting variables in your payloads.
+ REM WHY:
+ REM Of the many ways to get information about the state of your payload
+ REM is by injecting static strings effectively as debugging prints
+ REM However, given the non-static nature of payloads using variables in
+ REM DuckyScript 3.0 - the ability to decode variables during payload
+ REM execution and print (inject) representations of their current state
+ REM can often be a critically helpful development and debugging tool.
+
+ REM Available Functions:
+ REM TRANSLATE_INT() - var to decimal string - set $INPUT prior to call
+ REM TRANSLATE_HEX() - var to hexidecimal string - set $INPUT prior to call
+ REM TRANSLATE_BINARY() - var to binary string - set $INPUT prior to call
+ REM TRANSLATE_BOOL() - var to boolean string - set $INPUT prior to call
+
+ REM USAGE:
+ REM set $INPUT to desired var
+ REM call the correct translate_ function for the expected data type e.g.
+ REM VAR $myVar = 1234
+ REM $INPUT = $myVar
+ REM TRANSLATE_INT()
+ REM REM the above code will inject 1234
+
+ REM begin extension variables
+ DEFINE PRINT_INT 0
+ DEFINE PRINT_HEX 1
+ VAR $DIGIT_PRINT_MODE = PRINT_INT
+ VAR $D = 0
+ VAR $IN = 0
+ VAR $INPUT = 0
+ VAR $MOD = 0
+ VAR $P = FALSE
+ VAR $NL = TRUE
+ REM end extension variables
+
+ REM REQUIRED for INT/HEX - convert int to char
+ FUNCTION PRINTDIGIT()
+ IF ($D == 0) THEN
+ STRING 0
+ ELSE IF ($D == 1) THEN
+ STRING 1
+ ELSE IF ($D == 2) THEN
+ STRING 2
+ ELSE IF ($D == 3) THEN
+ STRING 3
+ ELSE IF ($D == 4) THEN
+ STRING 4
+ ELSE IF ($D == 5) THEN
+ STRING 5
+ ELSE IF ($D == 6) THEN
+ STRING 6
+ ELSE IF ($D == 7) THEN
+ STRING 7
+ ELSE IF ($D == 8) THEN
+ STRING 8
+ ELSE IF ($D == 9) THEN
+ STRING 9
+ ELSE IF ($DIGIT_PRINT_MODE == PRINT_HEX) THEN
+ IF ($D == 10) THEN
+ STRING A
+ ELSE IF ($D == 11) THEN
+ STRING B
+ ELSE IF ($D == 12) THEN
+ STRING C
+ ELSE IF ($D == 13) THEN
+ STRING D
+ ELSE IF ($D == 14) THEN
+ STRING E
+ ELSE IF ($D == 15) THEN
+ STRING F
+ END_IF
+ ELSE
+ STRING ?
+ END_IF
+ END_FUNCTION
+
+ REM REQUIRED for INT/HEX- consumes a character / place from the input
+ FUNCTION CONSUME()
+ $D = 0
+ WHILE ($INPUT >= $MOD)
+ $D = ($D + 1)
+ $INPUT = ($INPUT - $MOD)
+ END_WHILE
+ IF (($D > 0) || ($P == TRUE)) THEN
+ $P = TRUE
+ PRINTDIGIT()
+ END_IF
+ END_FUNCTION
+
+ REM ENDIAN SWAPPER helper, (useful for working with VID/PID)
+ FUNCTION SWAP_ENDIAN()
+ $INPUT = ((($INPUT >> 8) & 0x00FF) | (($INPUT << 8) & 0xFF00))
+ END_FUNCTION
+
+ REM Translates a variable of presumed integer type and attempts to convert
+ REM and inject a DECIMAL string representation
+ FUNCTION TRANSLATE_INT()
+ $DIGIT_PRINT_MODE = PRINT_INT
+ $P = FALSE
+ IF ( $INPUT >= 10000) THEN
+ $MOD = 10000
+ CONSUME()
+ END_IF
+ IF (($INPUT >= 1000) || ($P == TRUE)) THEN
+ $MOD = 1000
+ CONSUME()
+ END_IF
+ IF (($INPUT >= 100) || ($P == TRUE)) THEN
+ $MOD = 100
+ CONSUME()
+ END_IF
+ IF (($INPUT >= 10) || ($P == TRUE)) THEN
+ $MOD = 10
+ CONSUME()
+ END_IF()
+ $D = $INPUT
+ PRINTDIGIT()
+ IF $NL THEN
+ ENTER
+ END_IF
+ END_FUNCTION
+
+ REM Translates a variable of presumed boolean type and attempts to convert
+ REM and inject a BOOLEAN string representation
+ FUNCTION TRANSLATE_BOOL()
+ IF $INPUT THEN
+ STRING TRUE
+ ELSE
+ STRING FALSE
+ END_IF
+ IF $NL THEN
+ ENTER
+ END_IF
+ END_FUNCTION
+
+ REM Translates a variable of presumed integer type and attempts to convert
+ REM and inject a HEX string representation
+ FUNCTION TRANSLATE_HEX()
+ $DIGIT_PRINT_MODE = PRINT_HEX
+ VAR $chars = 0
+ VAR $d1 = 0
+ VAR $d2 = 0
+ VAR $d3 = 0
+ VAR $d4 = 0
+ WHILE ($INPUT > 0)
+ IF ($chars == 0) THEN
+ $d1 = ($INPUT % 16)
+ ELSE IF ($chars == 1) THEN
+ $d2 = ($INPUT % 16)
+ ELSE IF ($chars == 2) THEN
+ $d3 = ($INPUT % 16)
+ ELSE IF ($chars == 3) THEN
+ $d4 = ($INPUT % 16)
+ END_IF
+ $chars = ($chars + 1)
+ $INPUT = ($INPUT / 16)
+ END_WHILE
+ VAR $i = 0
+ STRING 0x
+ IF ($chars == 0) THEN
+ STRING 0x0000
+ ELSE IF ($chars == 1) THEN
+ STRING 000
+ $D = $d1
+ PRINTDIGIT()
+ ELSE IF ($chars == 2) THEN
+ STRING 00
+ $D = $d2
+ PRINTDIGIT()
+ $D = $d1
+ PRINTDIGIT()
+ ELSE IF ($chars == 3) THEN
+ STRING 0
+ $D = $d3
+ PRINTDIGIT()
+ $D = $d2
+ PRINTDIGIT()
+ $D = $d1
+ PRINTDIGIT()
+ ELSE IF ($chars == 4) THEN
+ STRING 0
+ $D = $d4
+ PRINTDIGIT()
+ $D = $d3
+ PRINTDIGIT()
+ $D = $d2
+ PRINTDIGIT()
+ $D = $d1
+ PRINTDIGIT()
+ END_IF
+ IF $NL THEN
+ ENTER
+ END_IF
+ END_FUNCTION
+
+ REM Translates a variable of presumed integer type and attempts to convert
+ REM and inject a BINARY string representation
+ FUNCTION TRANSLATE_BINARY()
+ VAR $I = 16
+ WHILE ( $I > 0 )
+ $I = ($I - 1)
+ IF (($INPUT & 0x8000) == 0 ) THEN
+ STRING 0
+ ELSE
+ STRING 1
+ END_IF
+ $INPUT = ($INPUT << 1)
+ END_WHILE
+ IF $NL THEN
+ ENTER
+ END_IF
+ END_FUNCTION
+END_EXTENSION
+REM Game Variables
+VAR $MAX = 21
+VAR $CAPS = $_CAPSLOCK_ON
+VAR $SCROLL = $_SCROLLLOCK_ON
+VAR $NUM = $_NUMLOCK_ON
+VAR $PEBBLES = $MAX
+VAR $TAKKEN = 0
+VAR $RUNNING = TRUE
+VAR $LASTPOS = 0
+VAR $ROW = 1
+VAR $COLUMN = 1
+VAR $changed = FALSE
+VAR $MOVE = 0
+REM Array Variables
+VAR $ARRAYINPUT = 0
+VAR $ARRAYOUTPUT = 0
+VAR $POS = 0
+VAR $WRITE = TRUE
+REM Array Item Variables
+VAR $ZERO = 0
+VAR $ONE = 0
+VAR $TWO = 0
+VAR $THREE = 0
+VAR $FOUR = 0
+VAR $FIVE = 0
+VAR $SIX = 0
+VAR $SEVEN = 0
+VAR $EIGHT = 0
+VAR $NINE = 0
+VAR $TEN = 0
+VAR $ELEVEN = 0
+VAR $TWELVE = 0
+VAR $THIRTEEN = 0
+VAR $FOURTEEN = 0
+VAR $FIFTEEN = 0
+VAR $SIXTEEN = 0
+VAR $SEVENTEEN = 0
+VAR $EIGHTEEN = 0
+VAR $NINETEEN = 0
+VAR $TWENTY = 0
+VAR $TWENTYONE = 0
+VAR $TWENTYTWO = 0
+VAR $TWENTYTHREE = 0
+VAR $TWENTYFOUR = 0
+VAR $TWENTYFIVE = 0
+VAR $TWENTYSIX = 0
+VAR $TWENTYSEVEN = 0
+VAR $TWENTYEIGHT = 0
+VAR $TWENTYNINE = 0
+VAR $THIRTY = 0
+VAR $THIRTYONE = 0
+VAR $THIRTYTWO = 0
+VAR $THIRTYTHREE = 0
+VAR $THIRTYFOUR = 0
+VAR $THIRTYFIVE = 0
+VAR $THIRTYSIX = 0
+VAR $THIRTYSEVEN = 0
+VAR $THIRTYEIGHT = 0
+VAR $THIRTYNINE = 0
+VAR $FORTY = 0
+VAR $FORTYONE = 0
+VAR $FORTYTWO = 0
+VAR $FORTYTHREE = 0
+VAR $FORTYFOUR = 0
+VAR $FORTYFIVE = 0
+VAR $FORTYSIX = 0
+VAR $FORTYSEVEN = 0
+VAR $FORTYEIGHT = 0
+VAR $FORTYNINE = 0
+VAR $FIFTY = 0
+VAR $FIFTYONE = 0
+VAR $FIFTYTWO = 0
+VAR $FIFTYTHREE = 0
+VAR $FIFTYFOUR = 0
+VAR $FIFTYFIVE = 0
+VAR $FIFTYSIX = 0
+VAR $FIFTYSEVEN = 0
+VAR $FIFTYEIGHT = 0
+VAR $FIFTYNINE = 0
+VAR $SIXTY = 0
+VAR $SIXTYONE = 0
+VAR $SIXTYTWO = 0
+
+FUNCTION ARRAY()
+ IF ( $POS == 0 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $ZERO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $ZERO
+ END_IF
+ ELSE IF ( $POS == 1 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $ONE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $ONE
+ END_IF
+ ELSE IF ( $POS == 2 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWO
+ END_IF
+ ELSE IF ( $POS == 3 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THREE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THREE
+ END_IF
+ ELSE IF ( $POS == 4 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FOUR = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FOUR
+ END_IF
+ ELSE IF ( $POS == 5 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIVE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIVE
+ END_IF
+ ELSE IF ( $POS == 6 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $SIX = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $SIX
+ END_IF
+ ELSE IF ( $POS == 7 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $SEVEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $SEVEN
+ END_IF
+ ELSE IF ( $POS == 8 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $EIGHT = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $EIGHT
+ END_IF
+ ELSE IF ( $POS == 9 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $NINE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $NINE
+ END_IF
+ ELSE IF ( $POS == 10 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TEN
+ END_IF
+ ELSE IF ( $POS == 11 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $ELEVEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $ELEVEN
+ END_IF
+ ELSE IF ( $POS == 12 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWELVE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWELVE
+ END_IF
+ ELSE IF ( $POS == 13 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTEEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTEEN
+ END_IF
+ ELSE IF ( $POS == 14 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FOURTEEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FOURTEEN
+ END_IF
+ ELSE IF ( $POS == 15 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTEEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTEEN
+ END_IF
+ ELSE IF ( $POS == 16 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $SIXTEEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $SIXTEEN
+ END_IF
+ ELSE IF ( $POS == 17 ) THEN
+ STRINGLN i'm in 17
+ IF ($WRITE == TRUE) THEN
+ STRING Pre:
+ $INPUT = $SEVENTEEN
+ TRANSLATE_INT()
+ STRING Input:
+ $INPUT = $ARRAYINPUT
+ TRANSLATE_INT()
+
+
+ $SEVENTEEN = $ARRAYINPUT
+
+
+ STRING Post:
+ $INPUT = $SEVENTEEN
+ TRANSLATE_INT()
+ ELSE
+ STRINGLN i'm read
+ $ARRAYOUTPUT = $SEVENTEEN
+ END_IF
+ ELSE IF ( $POS == 18 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $EIGHTEEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $EIGHTEEN
+ END_IF
+ ELSE IF ( $POS == 19 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $NINETEEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $NINETEEN
+ END_IF
+ ELSE IF ( $POS == 20 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTY = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTY
+ END_IF
+ ELSE IF ( $POS == 21 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYONE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYONE
+ END_IF
+ ELSE IF ( $POS == 22 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYTWO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYTWO
+ END_IF
+ ELSE IF ( $POS == 23 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYTHREE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYTHREE
+ END_IF
+ ELSE IF ( $POS == 24 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYFOUR = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYFOUR
+ END_IF
+ ELSE IF ( $POS == 25 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYFIVE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYFIVE
+ END_IF
+ ELSE IF ( $POS == 26 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYSIX = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYSIX
+ END_IF
+ ELSE IF ( $POS == 27 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYSEVEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYSEVEN
+ END_IF
+ ELSE IF ( $POS == 28 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYEIGHT = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYEIGHT
+ END_IF
+ ELSE IF ( $POS == 29 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $TWENTYNINE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $TWENTYNINE
+ END_IF
+ ELSE IF ( $POS == 30 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTY = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTY
+ END_IF
+ ELSE IF ( $POS == 31 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYONE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYONE
+ END_IF
+ ELSE IF ( $POS == 32 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYTWO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYTWO
+ END_IF
+ ELSE IF ( $POS == 33 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYTHREE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYTHREE
+ END_IF
+ ELSE IF ( $POS == 34 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYFOUR = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYFOUR
+ END_IF
+ ELSE IF ( $POS == 35 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYFIVE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYFIVE
+ END_IF
+ ELSE IF ( $POS == 36 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYSIX = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYSIX
+ END_IF
+ ELSE IF ( $POS == 37 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYSEVEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYSEVEN
+ END_IF
+ ELSE IF ( $POS == 38 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYEIGHT = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYEIGHT
+ END_IF
+ ELSE IF ( $POS == 39 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $THIRTYNINE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $THIRTYNINE
+ END_IF
+ ELSE IF ( $POS == 40 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTY = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTY
+ END_IF
+ ELSE IF ( $POS == 41 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYONE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYONE
+ END_IF
+ ELSE IF ( $POS == 42 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYTWO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYTWO
+ END_IF
+ ELSE IF ( $POS == 43 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYTHREE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYTHREE
+ END_IF
+ ELSE IF ( $POS == 44 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYFOUR = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYFOUR
+ END_IF
+ ELSE IF ( $POS == 45 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYFIVE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYFIVE
+ END_IF
+ ELSE IF ( $POS == 46 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYSIX = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYSIX
+ END_IF
+ ELSE IF ( $POS == 47 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYSEVEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYSEVEN
+ END_IF
+ ELSE IF ( $POS == 48 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYEIGHT = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYEIGHT
+ END_IF
+ ELSE IF ( $POS == 49 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FORTYNINE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FORTYNINE
+ END_IF
+ ELSE IF ( $POS == 50 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTY = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTY
+ END_IF
+ ELSE IF ( $POS == 51 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYONE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYONE
+ END_IF
+ ELSE IF ( $POS == 52 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYTWO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYTWO
+ END_IF
+ ELSE IF ( $POS == 53 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYTHREE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYTHREE
+ END_IF
+ ELSE IF ( $POS == 54 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYFOUR = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYFOUR
+ END_IF
+ ELSE IF ( $POS == 55 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYFIVE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYFIVE
+ END_IF
+ ELSE IF ( $POS == 56 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYSIX = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYSIX
+ END_IF
+ ELSE IF ( $POS == 57 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYSEVEN = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYSEVEN
+ END_IF
+ ELSE IF ( $POS == 58 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYEIGHT = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYEIGHT
+ END_IF
+ ELSE IF ( $POS == 59 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $FIFTYNINE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $FIFTYNINE
+ END_IF
+ ELSE IF ( $POS == 60 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $SIXTY = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $SIXTY
+ END_IF
+ ELSE IF ( $POS == 61 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $SIXTYONE = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $SIXTYONE
+ END_IF
+ ELSE IF ( $POS == 62 ) THEN
+ IF ($WRITE == TRUE) THEN
+ $SIXTYTWO = $ARRAYINPUT
+ ELSE
+ $ARRAYOUTPUT = $SIXTYTWO
+ END_IF
+ END_IF
+END_FUNCTION
+
+FUNCTION SETARRAY()
+ $COLUMN = 1
+ $WRITE = TRUE
+ WHILE ($COLUMN <= $MAX)
+ $ROW = 1
+ WHILE ($ROW <= 3)
+ $POS = (((($ROW-1)*$MAX)+$COLUMN)-1)
+ IF ($COLUMN > $ROW) THEN
+ $ARRAYINPUT = 1
+ ELSE
+ $ARRAYINPUT = 0
+ END_IF
+ ARRAY()
+ $ROW = ($ROW + 1)
+ END_WHILE
+ $COLUMN = ($COLUMN + 1)
+ END_WHILE
+END_FUNCTION
+
+
+FUNCTION READARRAY()
+ $COLUMN = 1
+ $WRITE = FALSE
+ WHILE ($COLUMN <= $MAX)
+ $ROW = 1
+ WHILE ($ROW <= 3)
+ $POS = (((($ROW-1)*$MAX)+$COLUMN)-1)
+ STRING Pos:
+ $INPUT = $POS
+ TRANSLATE_INT()
+ ARRAY()
+ STRING Array output:
+ $INPUT = $ARRAYOUTPUT
+ TRANSLATE_INT()
+ $ROW = ($ROW + 1)
+ END_WHILE
+ $COLUMN = ($COLUMN + 1)
+ END_WHILE
+END_FUNCTION
+
+FUNCTION ENSURE_CAPS_OFF()
+ IF ($_CAPSLOCK_ON == TRUE) THEN
+ CAPSLOCK
+ END_IF
+END_FUNCTION
+
+FUNCTION stop_game()
+ LED_R
+ $RUNNING = FALSE
+END_FUNCTION
+
+FUNCTION check_input()
+ $changed = FALSE
+ ENTER
+ ENSURE_CAPS_OFF()
+ STRING Take your pebbles
+ WHILE( $changed == FALSE)
+ IF ($CAPS != $_CAPSLOCK_ON) THEN
+ $CAPS = $_CAPSLOCK_ON
+ $TAKKEN = 1
+ $changed = TRUE
+ ELSE IF ($SCROLL != $_SCROLLLOCK_ON) THEN
+ $SCROLL = $_SCROLLLOCK_ON
+ $TAKKEN = 2
+ $changed = TRUE
+ ELSE IF ($NUM != $_NUMLOCK_ON)
+ $NUM = $_NUMLOCK_ON
+ $TAKKEN = 3
+ $changed = TRUE
+ END_IF
+ END_WHILE
+END_FUNCTION
+
+FUNCTION pebbles_left()
+ ENTER
+ ENSURE_CAPS_OFF()
+ STRING pebble left:
+ $INPUT = $PEBBLES
+ TRANSLATE_INT()
+END_FUNCTION
+
+
+FUNCTION run()
+ check_input()
+ ENSURE_CAPS_OFF()
+ IF ($PEBBLES <= $TAKKEN) THEN
+ ENTER
+ STRING I have won!
+ ENTER
+ STRING Commiserations better luck next time.
+ stop_game()
+ ELSE
+ $PEBBLES = ($PEBBLES - $TAKKEN)
+ pebbles_left()
+ REM our move
+ $WRITE = FALSE
+ $MOVE = 0
+ $ROW = 1
+ WHILE ($ROW <= 3)
+ $POS = (((($ROW -1)*$MAX)+$PEBBLES)-1)
+ REM TEST
+ STRING pos:
+ $INPUT = $POS
+ TRANSLATE_INT()
+ STRING 17:
+ $INPUT = $SEVENTEEN
+ TRANSLATE_INT()
+ REM END TEST
+
+ ARRAY()
+
+ REM TEST
+ STRING Array output:
+ $INPUT = $ARRAYOUTPUT
+ TRANSLATE_INT()
+ REM END TEST
+
+ IF ($ARRAYOUTPUT == 1) THEN
+ $MOVE = $ROW
+ $LASTPOS = $POS
+ END_IF
+ $ROW = ($ROW + 1)
+ END_WHILE
+ IF (($MOVE == 0) || (($PEBBLES - $MOVE) == 0)) THEN
+ ENTER
+ STRING Congratulations you have won!
+ ENTER
+ STRING I will learn from my mistake.
+ $WRITE = TRUE
+ $POS = $LASTPOS
+ $ARRAYINPUT = 0
+ ARRAY()
+ stop_game()
+ ELSE
+ $PEBBLES = ($PEBBLES - $MOVE)
+ ENTER
+ STRING I take:
+ $INPUT = $MOVE
+ TRANSLATE_INT()
+ pebbles_left()
+ END_IF
+ END_IF
+END_FUNCTION
+
+FUNCTION play_game()
+ STRINGLN generating brain please hold
+ SETARRAY()
+ REM READARRAY()
+ WHILE TRUE
+ ENSURE_CAPS_OFF()
+ $CAPS = $_CAPSLOCK_ON
+ $SCROLL = $_SCROLLLOCK_ON
+ $NUM = $_NUMLOCK_ON
+ $PEBBLES = $MAX
+ $TAKKEN = 0
+ LED_G
+ ENTER
+ STRINGLN Welcome to the game of NIM
+ STRINGLN You vs Me
+ STRINGLN You move first, the object of the game is not to take the last pebble
+ STRINGLN Caps lock = 1
+ STRINGLN Scroll lock = 2
+ STRINGLN and Num lock = 3
+ ENTER
+ pebbles_left()
+ WHILE ($RUNNING == TRUE)
+ run()
+ END_WHILE
+ DELAY 1000
+ ENTER
+ STRING Press CAPS to play again.
+ WAIT_FOR_CAPS_CHANGE
+ $RUNNING = TRUE
+ DELAY 100
+ END_WHILE
+END_FUNCTION
+
+BUTTON_DEF
+ stop_game()
+END_BUTTON
+
+play_game()
\ No newline at end of file
diff --git a/payloads/library/general/Multi_HID_Pebbles/pebbles b/payloads/library/general/Multi_HID_Pebbles/pebbles
new file mode 100644
index 0000000..86c0b6a
--- /dev/null
+++ b/payloads/library/general/Multi_HID_Pebbles/pebbles
@@ -0,0 +1,159 @@
+#!/bin/bash
+# Title: Pebbles
+# Description: Pebbles a game based off of Nim. Nim is a mathematical game of strategy in which two players take turns removing (or "nimming") objects from distinct heaps or piles. On each turn, a player must remove at least one object, and may remove upto 3 of objects off of the pile. The goal of the game is to avoid taking the last object.
+# Author: Cribbit
+# Version: 1.0
+# Category: General
+# Prop: Dragorn for his help with bash arrays and Bert van Dam's book on AI
+# Thanks: To Hak5 for their 20 year of passing knowledge out into the world and the Hak5 discord members for their friendship, knowledge and support.
+
+## Matches
+MATCH pebbles
+MATCH resetbrain
+
+## Fixed variables
+# location of charlog
+char=/root/loot/croc_char.log
+# where the array (it knowledge) is stored when not running
+brainFile=/root/loot/brain.hak
+# array of decisions
+# basiclly if it has a one it can choose this move.
+# because bash does not have a multi dimensional array we cheat a little and have 3 (largest number of pebbles that can be taken) times the total number of pebbles (21)
+# so 21 * 3 = 63 => [0..62]
+brainArray=( 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
+max=21
+pebbles=$max
+takken=0
+running=true
+lastpos=0
+row=1
+column=1
+move=0
+
+save_tofile () {
+ printf "%s\n" "${brainArray[@]}" > $brainFile
+}
+
+# check for brain file. if it exist loads
+# else save current
+if [ -e $brainFile ] && [[ "$LOOT" == "pebbles" ]]; then
+ mapfile -t brainArray < $brainFile
+else
+ save_tofile
+fi
+
+quack_line () {
+ if [[ $2 -eq 1 ]]; then
+ QUACK ENTER
+ fi
+ QUACK STRING "$1"
+ QUACK ENTER
+}
+
+quack_cmds () {
+ quack_line "Please take 1, 2 or 3 pebbles" 1
+}
+
+wait_input () {
+ # echo waiting
+ QUACK STRING "> "
+ cnt=$(wc -m "$char" | awk {'print $1'})
+ while : ; do
+ cnt2=$(wc -m "$char" | awk {'print $1'})
+ if [ "$cnt" -ne "$cnt2" ]; then
+ break
+ fi
+ sleep .5
+ done
+ tail -c 1 "$char"
+}
+
+check_input()
+{
+ while true; do
+ command=$( wait_input )
+ case $command in
+ 1 | 2 | 3 ) takken=$command
+ break ;;
+ q ) good_bye ;;
+ * ) quack_cmds ;;
+ esac
+ done
+}
+
+another_game()
+{
+ quack_line "Do you want another game (y/n)?" 1
+ while true; do
+ command=$( wait_input )
+ case $command in
+ y )
+ running=true
+ pebbles=$max
+ lastpos=0 ;;
+ break ;;
+ * ) good_bye ;;
+ esac
+ done
+}
+pebbles_left()
+{
+ QUACK ENTER
+ QUACK STRING pebbles left: $pebbles
+}
+
+good_bye () {
+ quack_line "Good Bye" 1
+ exit
+}
+
+run ()
+{
+ check_input
+ if [ "$pebbles" -le "$takken" ]; then
+ quack_line "I have won!" 1
+ quack_line "Commiserations better luck next time." 0
+ running=false
+ else
+ pebbles=$(($pebbles-$takken))
+ pebbles_left
+ move=0
+ for i in {1..3}
+ do
+ pos=$(((((i-1)*max)+pebbles)-1))
+ if [[ ${brainArray[$pos]} -eq 1 ]] ; then
+ move=$i
+ lastpos=$pos
+ fi
+ done
+ if [ "$move" -eq 0 -o ($(($pebbles - $move)) -eq 0) ] ; then
+ quack_line "Congratulations you have won!" 1
+ quack_line "I will learn from my mistake." 1
+ brainArray[$lastpos]=0
+ save_tofile
+ running=false
+ else
+ pebbles=$(($pebbles - $move))
+ quack_line "I take: $move" 1
+ pebbles_left
+ fi
+ fi
+}
+
+play_game()
+{
+ while true; do
+ quack_line "Welcome to the game of pebbles base off of the game NIM" 1
+ quack_line "You vs Me"
+ quack_line "You move first, the object of the game is not to take the last pebble"
+ pebbles_left
+ quack_cmds
+ while [ "$running" == true ]; do
+ run
+ done
+ QUACK DELAY 200
+ another_game
+ done
+}
+
+play_game
diff --git a/payloads/library/general/Multi_HID_Pebbles/readme.md b/payloads/library/general/Multi_HID_Pebbles/readme.md
new file mode 100644
index 0000000..6492b54
--- /dev/null
+++ b/payloads/library/general/Multi_HID_Pebbles/readme.md
@@ -0,0 +1,27 @@
+# :gem: Pebbles?
+- Author: Cribbit
+- Version: 1.0
+- Target: Mutli OS (GUI based text editior)
+- Category: General
+- Attackmode: HID
+- Props: Dragorn for his help with bash arrays and Bert van Dam's book on AI
+
+## :mag: Match
+pebbles
+
+## :book: Description
+Welcome to the game of pebbles base off of the game NIM.
+You vs the Croc.
+You move first, the object of the game is not to take the last pebble.
+
+So after loading onto your croc. Open up a text editor and type `pebbles`
+
+The more games you play the smarter the croc will seem to get.
+
+## :mag: Match
+resetbrain (play the game but resets any knowledge it has built up)
+
+## :placard: Change Log
+| Version | Changes |
+| ------- | --------------- |
+| 1.0 | Initial release |
\ No newline at end of file
From aab09966a44e7d26eb1a2184086d7cb6ff16a208 Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 19:56:56 +0000
Subject: [PATCH 2/7] Delete old ds code
---
.../Multi_HID_Pebbles/payloadNimDucky.txt | 885 ------------------
1 file changed, 885 deletions(-)
delete mode 100644 payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt
diff --git a/payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt b/payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt
deleted file mode 100644
index 676373a..0000000
--- a/payloads/library/general/Multi_HID_Pebbles/payloadNimDucky.txt
+++ /dev/null
@@ -1,885 +0,0 @@
-ATTACKMODE HID STORAGE
-REM TITLE: Nim
-REM AUTHOR: Cribbit
-REM DESCRIPTION: play a game of nim with a ducky
-REM Props: Korben & Bert van Dam
-DELAY 2000
-EXTENSION TRANSLATE
- REM VERSION 1.0
-
- REM This extension acts as a library or collection of helper functions
- REM to work with converting variables in your payloads.
- REM WHY:
- REM Of the many ways to get information about the state of your payload
- REM is by injecting static strings effectively as debugging prints
- REM However, given the non-static nature of payloads using variables in
- REM DuckyScript 3.0 - the ability to decode variables during payload
- REM execution and print (inject) representations of their current state
- REM can often be a critically helpful development and debugging tool.
-
- REM Available Functions:
- REM TRANSLATE_INT() - var to decimal string - set $INPUT prior to call
- REM TRANSLATE_HEX() - var to hexidecimal string - set $INPUT prior to call
- REM TRANSLATE_BINARY() - var to binary string - set $INPUT prior to call
- REM TRANSLATE_BOOL() - var to boolean string - set $INPUT prior to call
-
- REM USAGE:
- REM set $INPUT to desired var
- REM call the correct translate_ function for the expected data type e.g.
- REM VAR $myVar = 1234
- REM $INPUT = $myVar
- REM TRANSLATE_INT()
- REM REM the above code will inject 1234
-
- REM begin extension variables
- DEFINE PRINT_INT 0
- DEFINE PRINT_HEX 1
- VAR $DIGIT_PRINT_MODE = PRINT_INT
- VAR $D = 0
- VAR $IN = 0
- VAR $INPUT = 0
- VAR $MOD = 0
- VAR $P = FALSE
- VAR $NL = TRUE
- REM end extension variables
-
- REM REQUIRED for INT/HEX - convert int to char
- FUNCTION PRINTDIGIT()
- IF ($D == 0) THEN
- STRING 0
- ELSE IF ($D == 1) THEN
- STRING 1
- ELSE IF ($D == 2) THEN
- STRING 2
- ELSE IF ($D == 3) THEN
- STRING 3
- ELSE IF ($D == 4) THEN
- STRING 4
- ELSE IF ($D == 5) THEN
- STRING 5
- ELSE IF ($D == 6) THEN
- STRING 6
- ELSE IF ($D == 7) THEN
- STRING 7
- ELSE IF ($D == 8) THEN
- STRING 8
- ELSE IF ($D == 9) THEN
- STRING 9
- ELSE IF ($DIGIT_PRINT_MODE == PRINT_HEX) THEN
- IF ($D == 10) THEN
- STRING A
- ELSE IF ($D == 11) THEN
- STRING B
- ELSE IF ($D == 12) THEN
- STRING C
- ELSE IF ($D == 13) THEN
- STRING D
- ELSE IF ($D == 14) THEN
- STRING E
- ELSE IF ($D == 15) THEN
- STRING F
- END_IF
- ELSE
- STRING ?
- END_IF
- END_FUNCTION
-
- REM REQUIRED for INT/HEX- consumes a character / place from the input
- FUNCTION CONSUME()
- $D = 0
- WHILE ($INPUT >= $MOD)
- $D = ($D + 1)
- $INPUT = ($INPUT - $MOD)
- END_WHILE
- IF (($D > 0) || ($P == TRUE)) THEN
- $P = TRUE
- PRINTDIGIT()
- END_IF
- END_FUNCTION
-
- REM ENDIAN SWAPPER helper, (useful for working with VID/PID)
- FUNCTION SWAP_ENDIAN()
- $INPUT = ((($INPUT >> 8) & 0x00FF) | (($INPUT << 8) & 0xFF00))
- END_FUNCTION
-
- REM Translates a variable of presumed integer type and attempts to convert
- REM and inject a DECIMAL string representation
- FUNCTION TRANSLATE_INT()
- $DIGIT_PRINT_MODE = PRINT_INT
- $P = FALSE
- IF ( $INPUT >= 10000) THEN
- $MOD = 10000
- CONSUME()
- END_IF
- IF (($INPUT >= 1000) || ($P == TRUE)) THEN
- $MOD = 1000
- CONSUME()
- END_IF
- IF (($INPUT >= 100) || ($P == TRUE)) THEN
- $MOD = 100
- CONSUME()
- END_IF
- IF (($INPUT >= 10) || ($P == TRUE)) THEN
- $MOD = 10
- CONSUME()
- END_IF()
- $D = $INPUT
- PRINTDIGIT()
- IF $NL THEN
- ENTER
- END_IF
- END_FUNCTION
-
- REM Translates a variable of presumed boolean type and attempts to convert
- REM and inject a BOOLEAN string representation
- FUNCTION TRANSLATE_BOOL()
- IF $INPUT THEN
- STRING TRUE
- ELSE
- STRING FALSE
- END_IF
- IF $NL THEN
- ENTER
- END_IF
- END_FUNCTION
-
- REM Translates a variable of presumed integer type and attempts to convert
- REM and inject a HEX string representation
- FUNCTION TRANSLATE_HEX()
- $DIGIT_PRINT_MODE = PRINT_HEX
- VAR $chars = 0
- VAR $d1 = 0
- VAR $d2 = 0
- VAR $d3 = 0
- VAR $d4 = 0
- WHILE ($INPUT > 0)
- IF ($chars == 0) THEN
- $d1 = ($INPUT % 16)
- ELSE IF ($chars == 1) THEN
- $d2 = ($INPUT % 16)
- ELSE IF ($chars == 2) THEN
- $d3 = ($INPUT % 16)
- ELSE IF ($chars == 3) THEN
- $d4 = ($INPUT % 16)
- END_IF
- $chars = ($chars + 1)
- $INPUT = ($INPUT / 16)
- END_WHILE
- VAR $i = 0
- STRING 0x
- IF ($chars == 0) THEN
- STRING 0x0000
- ELSE IF ($chars == 1) THEN
- STRING 000
- $D = $d1
- PRINTDIGIT()
- ELSE IF ($chars == 2) THEN
- STRING 00
- $D = $d2
- PRINTDIGIT()
- $D = $d1
- PRINTDIGIT()
- ELSE IF ($chars == 3) THEN
- STRING 0
- $D = $d3
- PRINTDIGIT()
- $D = $d2
- PRINTDIGIT()
- $D = $d1
- PRINTDIGIT()
- ELSE IF ($chars == 4) THEN
- STRING 0
- $D = $d4
- PRINTDIGIT()
- $D = $d3
- PRINTDIGIT()
- $D = $d2
- PRINTDIGIT()
- $D = $d1
- PRINTDIGIT()
- END_IF
- IF $NL THEN
- ENTER
- END_IF
- END_FUNCTION
-
- REM Translates a variable of presumed integer type and attempts to convert
- REM and inject a BINARY string representation
- FUNCTION TRANSLATE_BINARY()
- VAR $I = 16
- WHILE ( $I > 0 )
- $I = ($I - 1)
- IF (($INPUT & 0x8000) == 0 ) THEN
- STRING 0
- ELSE
- STRING 1
- END_IF
- $INPUT = ($INPUT << 1)
- END_WHILE
- IF $NL THEN
- ENTER
- END_IF
- END_FUNCTION
-END_EXTENSION
-REM Game Variables
-VAR $MAX = 21
-VAR $CAPS = $_CAPSLOCK_ON
-VAR $SCROLL = $_SCROLLLOCK_ON
-VAR $NUM = $_NUMLOCK_ON
-VAR $PEBBLES = $MAX
-VAR $TAKKEN = 0
-VAR $RUNNING = TRUE
-VAR $LASTPOS = 0
-VAR $ROW = 1
-VAR $COLUMN = 1
-VAR $changed = FALSE
-VAR $MOVE = 0
-REM Array Variables
-VAR $ARRAYINPUT = 0
-VAR $ARRAYOUTPUT = 0
-VAR $POS = 0
-VAR $WRITE = TRUE
-REM Array Item Variables
-VAR $ZERO = 0
-VAR $ONE = 0
-VAR $TWO = 0
-VAR $THREE = 0
-VAR $FOUR = 0
-VAR $FIVE = 0
-VAR $SIX = 0
-VAR $SEVEN = 0
-VAR $EIGHT = 0
-VAR $NINE = 0
-VAR $TEN = 0
-VAR $ELEVEN = 0
-VAR $TWELVE = 0
-VAR $THIRTEEN = 0
-VAR $FOURTEEN = 0
-VAR $FIFTEEN = 0
-VAR $SIXTEEN = 0
-VAR $SEVENTEEN = 0
-VAR $EIGHTEEN = 0
-VAR $NINETEEN = 0
-VAR $TWENTY = 0
-VAR $TWENTYONE = 0
-VAR $TWENTYTWO = 0
-VAR $TWENTYTHREE = 0
-VAR $TWENTYFOUR = 0
-VAR $TWENTYFIVE = 0
-VAR $TWENTYSIX = 0
-VAR $TWENTYSEVEN = 0
-VAR $TWENTYEIGHT = 0
-VAR $TWENTYNINE = 0
-VAR $THIRTY = 0
-VAR $THIRTYONE = 0
-VAR $THIRTYTWO = 0
-VAR $THIRTYTHREE = 0
-VAR $THIRTYFOUR = 0
-VAR $THIRTYFIVE = 0
-VAR $THIRTYSIX = 0
-VAR $THIRTYSEVEN = 0
-VAR $THIRTYEIGHT = 0
-VAR $THIRTYNINE = 0
-VAR $FORTY = 0
-VAR $FORTYONE = 0
-VAR $FORTYTWO = 0
-VAR $FORTYTHREE = 0
-VAR $FORTYFOUR = 0
-VAR $FORTYFIVE = 0
-VAR $FORTYSIX = 0
-VAR $FORTYSEVEN = 0
-VAR $FORTYEIGHT = 0
-VAR $FORTYNINE = 0
-VAR $FIFTY = 0
-VAR $FIFTYONE = 0
-VAR $FIFTYTWO = 0
-VAR $FIFTYTHREE = 0
-VAR $FIFTYFOUR = 0
-VAR $FIFTYFIVE = 0
-VAR $FIFTYSIX = 0
-VAR $FIFTYSEVEN = 0
-VAR $FIFTYEIGHT = 0
-VAR $FIFTYNINE = 0
-VAR $SIXTY = 0
-VAR $SIXTYONE = 0
-VAR $SIXTYTWO = 0
-
-FUNCTION ARRAY()
- IF ( $POS == 0 ) THEN
- IF ($WRITE == TRUE) THEN
- $ZERO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $ZERO
- END_IF
- ELSE IF ( $POS == 1 ) THEN
- IF ($WRITE == TRUE) THEN
- $ONE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $ONE
- END_IF
- ELSE IF ( $POS == 2 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWO
- END_IF
- ELSE IF ( $POS == 3 ) THEN
- IF ($WRITE == TRUE) THEN
- $THREE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THREE
- END_IF
- ELSE IF ( $POS == 4 ) THEN
- IF ($WRITE == TRUE) THEN
- $FOUR = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FOUR
- END_IF
- ELSE IF ( $POS == 5 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIVE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIVE
- END_IF
- ELSE IF ( $POS == 6 ) THEN
- IF ($WRITE == TRUE) THEN
- $SIX = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $SIX
- END_IF
- ELSE IF ( $POS == 7 ) THEN
- IF ($WRITE == TRUE) THEN
- $SEVEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $SEVEN
- END_IF
- ELSE IF ( $POS == 8 ) THEN
- IF ($WRITE == TRUE) THEN
- $EIGHT = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $EIGHT
- END_IF
- ELSE IF ( $POS == 9 ) THEN
- IF ($WRITE == TRUE) THEN
- $NINE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $NINE
- END_IF
- ELSE IF ( $POS == 10 ) THEN
- IF ($WRITE == TRUE) THEN
- $TEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TEN
- END_IF
- ELSE IF ( $POS == 11 ) THEN
- IF ($WRITE == TRUE) THEN
- $ELEVEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $ELEVEN
- END_IF
- ELSE IF ( $POS == 12 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWELVE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWELVE
- END_IF
- ELSE IF ( $POS == 13 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTEEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTEEN
- END_IF
- ELSE IF ( $POS == 14 ) THEN
- IF ($WRITE == TRUE) THEN
- $FOURTEEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FOURTEEN
- END_IF
- ELSE IF ( $POS == 15 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTEEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTEEN
- END_IF
- ELSE IF ( $POS == 16 ) THEN
- IF ($WRITE == TRUE) THEN
- $SIXTEEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $SIXTEEN
- END_IF
- ELSE IF ( $POS == 17 ) THEN
- STRINGLN i'm in 17
- IF ($WRITE == TRUE) THEN
- STRING Pre:
- $INPUT = $SEVENTEEN
- TRANSLATE_INT()
- STRING Input:
- $INPUT = $ARRAYINPUT
- TRANSLATE_INT()
-
-
- $SEVENTEEN = $ARRAYINPUT
-
-
- STRING Post:
- $INPUT = $SEVENTEEN
- TRANSLATE_INT()
- ELSE
- STRINGLN i'm read
- $ARRAYOUTPUT = $SEVENTEEN
- END_IF
- ELSE IF ( $POS == 18 ) THEN
- IF ($WRITE == TRUE) THEN
- $EIGHTEEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $EIGHTEEN
- END_IF
- ELSE IF ( $POS == 19 ) THEN
- IF ($WRITE == TRUE) THEN
- $NINETEEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $NINETEEN
- END_IF
- ELSE IF ( $POS == 20 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTY = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTY
- END_IF
- ELSE IF ( $POS == 21 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYONE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYONE
- END_IF
- ELSE IF ( $POS == 22 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYTWO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYTWO
- END_IF
- ELSE IF ( $POS == 23 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYTHREE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYTHREE
- END_IF
- ELSE IF ( $POS == 24 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYFOUR = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYFOUR
- END_IF
- ELSE IF ( $POS == 25 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYFIVE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYFIVE
- END_IF
- ELSE IF ( $POS == 26 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYSIX = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYSIX
- END_IF
- ELSE IF ( $POS == 27 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYSEVEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYSEVEN
- END_IF
- ELSE IF ( $POS == 28 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYEIGHT = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYEIGHT
- END_IF
- ELSE IF ( $POS == 29 ) THEN
- IF ($WRITE == TRUE) THEN
- $TWENTYNINE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $TWENTYNINE
- END_IF
- ELSE IF ( $POS == 30 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTY = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTY
- END_IF
- ELSE IF ( $POS == 31 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYONE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYONE
- END_IF
- ELSE IF ( $POS == 32 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYTWO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYTWO
- END_IF
- ELSE IF ( $POS == 33 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYTHREE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYTHREE
- END_IF
- ELSE IF ( $POS == 34 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYFOUR = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYFOUR
- END_IF
- ELSE IF ( $POS == 35 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYFIVE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYFIVE
- END_IF
- ELSE IF ( $POS == 36 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYSIX = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYSIX
- END_IF
- ELSE IF ( $POS == 37 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYSEVEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYSEVEN
- END_IF
- ELSE IF ( $POS == 38 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYEIGHT = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYEIGHT
- END_IF
- ELSE IF ( $POS == 39 ) THEN
- IF ($WRITE == TRUE) THEN
- $THIRTYNINE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $THIRTYNINE
- END_IF
- ELSE IF ( $POS == 40 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTY = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTY
- END_IF
- ELSE IF ( $POS == 41 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYONE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYONE
- END_IF
- ELSE IF ( $POS == 42 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYTWO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYTWO
- END_IF
- ELSE IF ( $POS == 43 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYTHREE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYTHREE
- END_IF
- ELSE IF ( $POS == 44 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYFOUR = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYFOUR
- END_IF
- ELSE IF ( $POS == 45 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYFIVE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYFIVE
- END_IF
- ELSE IF ( $POS == 46 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYSIX = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYSIX
- END_IF
- ELSE IF ( $POS == 47 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYSEVEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYSEVEN
- END_IF
- ELSE IF ( $POS == 48 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYEIGHT = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYEIGHT
- END_IF
- ELSE IF ( $POS == 49 ) THEN
- IF ($WRITE == TRUE) THEN
- $FORTYNINE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FORTYNINE
- END_IF
- ELSE IF ( $POS == 50 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTY = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTY
- END_IF
- ELSE IF ( $POS == 51 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYONE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYONE
- END_IF
- ELSE IF ( $POS == 52 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYTWO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYTWO
- END_IF
- ELSE IF ( $POS == 53 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYTHREE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYTHREE
- END_IF
- ELSE IF ( $POS == 54 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYFOUR = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYFOUR
- END_IF
- ELSE IF ( $POS == 55 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYFIVE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYFIVE
- END_IF
- ELSE IF ( $POS == 56 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYSIX = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYSIX
- END_IF
- ELSE IF ( $POS == 57 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYSEVEN = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYSEVEN
- END_IF
- ELSE IF ( $POS == 58 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYEIGHT = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYEIGHT
- END_IF
- ELSE IF ( $POS == 59 ) THEN
- IF ($WRITE == TRUE) THEN
- $FIFTYNINE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $FIFTYNINE
- END_IF
- ELSE IF ( $POS == 60 ) THEN
- IF ($WRITE == TRUE) THEN
- $SIXTY = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $SIXTY
- END_IF
- ELSE IF ( $POS == 61 ) THEN
- IF ($WRITE == TRUE) THEN
- $SIXTYONE = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $SIXTYONE
- END_IF
- ELSE IF ( $POS == 62 ) THEN
- IF ($WRITE == TRUE) THEN
- $SIXTYTWO = $ARRAYINPUT
- ELSE
- $ARRAYOUTPUT = $SIXTYTWO
- END_IF
- END_IF
-END_FUNCTION
-
-FUNCTION SETARRAY()
- $COLUMN = 1
- $WRITE = TRUE
- WHILE ($COLUMN <= $MAX)
- $ROW = 1
- WHILE ($ROW <= 3)
- $POS = (((($ROW-1)*$MAX)+$COLUMN)-1)
- IF ($COLUMN > $ROW) THEN
- $ARRAYINPUT = 1
- ELSE
- $ARRAYINPUT = 0
- END_IF
- ARRAY()
- $ROW = ($ROW + 1)
- END_WHILE
- $COLUMN = ($COLUMN + 1)
- END_WHILE
-END_FUNCTION
-
-
-FUNCTION READARRAY()
- $COLUMN = 1
- $WRITE = FALSE
- WHILE ($COLUMN <= $MAX)
- $ROW = 1
- WHILE ($ROW <= 3)
- $POS = (((($ROW-1)*$MAX)+$COLUMN)-1)
- STRING Pos:
- $INPUT = $POS
- TRANSLATE_INT()
- ARRAY()
- STRING Array output:
- $INPUT = $ARRAYOUTPUT
- TRANSLATE_INT()
- $ROW = ($ROW + 1)
- END_WHILE
- $COLUMN = ($COLUMN + 1)
- END_WHILE
-END_FUNCTION
-
-FUNCTION ENSURE_CAPS_OFF()
- IF ($_CAPSLOCK_ON == TRUE) THEN
- CAPSLOCK
- END_IF
-END_FUNCTION
-
-FUNCTION stop_game()
- LED_R
- $RUNNING = FALSE
-END_FUNCTION
-
-FUNCTION check_input()
- $changed = FALSE
- ENTER
- ENSURE_CAPS_OFF()
- STRING Take your pebbles
- WHILE( $changed == FALSE)
- IF ($CAPS != $_CAPSLOCK_ON) THEN
- $CAPS = $_CAPSLOCK_ON
- $TAKKEN = 1
- $changed = TRUE
- ELSE IF ($SCROLL != $_SCROLLLOCK_ON) THEN
- $SCROLL = $_SCROLLLOCK_ON
- $TAKKEN = 2
- $changed = TRUE
- ELSE IF ($NUM != $_NUMLOCK_ON)
- $NUM = $_NUMLOCK_ON
- $TAKKEN = 3
- $changed = TRUE
- END_IF
- END_WHILE
-END_FUNCTION
-
-FUNCTION pebbles_left()
- ENTER
- ENSURE_CAPS_OFF()
- STRING pebble left:
- $INPUT = $PEBBLES
- TRANSLATE_INT()
-END_FUNCTION
-
-
-FUNCTION run()
- check_input()
- ENSURE_CAPS_OFF()
- IF ($PEBBLES <= $TAKKEN) THEN
- ENTER
- STRING I have won!
- ENTER
- STRING Commiserations better luck next time.
- stop_game()
- ELSE
- $PEBBLES = ($PEBBLES - $TAKKEN)
- pebbles_left()
- REM our move
- $WRITE = FALSE
- $MOVE = 0
- $ROW = 1
- WHILE ($ROW <= 3)
- $POS = (((($ROW -1)*$MAX)+$PEBBLES)-1)
- REM TEST
- STRING pos:
- $INPUT = $POS
- TRANSLATE_INT()
- STRING 17:
- $INPUT = $SEVENTEEN
- TRANSLATE_INT()
- REM END TEST
-
- ARRAY()
-
- REM TEST
- STRING Array output:
- $INPUT = $ARRAYOUTPUT
- TRANSLATE_INT()
- REM END TEST
-
- IF ($ARRAYOUTPUT == 1) THEN
- $MOVE = $ROW
- $LASTPOS = $POS
- END_IF
- $ROW = ($ROW + 1)
- END_WHILE
- IF (($MOVE == 0) || (($PEBBLES - $MOVE) == 0)) THEN
- ENTER
- STRING Congratulations you have won!
- ENTER
- STRING I will learn from my mistake.
- $WRITE = TRUE
- $POS = $LASTPOS
- $ARRAYINPUT = 0
- ARRAY()
- stop_game()
- ELSE
- $PEBBLES = ($PEBBLES - $MOVE)
- ENTER
- STRING I take:
- $INPUT = $MOVE
- TRANSLATE_INT()
- pebbles_left()
- END_IF
- END_IF
-END_FUNCTION
-
-FUNCTION play_game()
- STRINGLN generating brain please hold
- SETARRAY()
- REM READARRAY()
- WHILE TRUE
- ENSURE_CAPS_OFF()
- $CAPS = $_CAPSLOCK_ON
- $SCROLL = $_SCROLLLOCK_ON
- $NUM = $_NUMLOCK_ON
- $PEBBLES = $MAX
- $TAKKEN = 0
- LED_G
- ENTER
- STRINGLN Welcome to the game of NIM
- STRINGLN You vs Me
- STRINGLN You move first, the object of the game is not to take the last pebble
- STRINGLN Caps lock = 1
- STRINGLN Scroll lock = 2
- STRINGLN and Num lock = 3
- ENTER
- pebbles_left()
- WHILE ($RUNNING == TRUE)
- run()
- END_WHILE
- DELAY 1000
- ENTER
- STRING Press CAPS to play again.
- WAIT_FOR_CAPS_CHANGE
- $RUNNING = TRUE
- DELAY 100
- END_WHILE
-END_FUNCTION
-
-BUTTON_DEF
- stop_game()
-END_BUTTON
-
-play_game()
\ No newline at end of file
From 0c64ff4866c94efb5aa98d5be41cc1b18640db91 Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 19:57:27 +0000
Subject: [PATCH 3/7] Rename
---
.../library/general/Multi_HID_Pebbles/{pebbles => pebbles.txt} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename payloads/library/general/Multi_HID_Pebbles/{pebbles => pebbles.txt} (100%)
diff --git a/payloads/library/general/Multi_HID_Pebbles/pebbles b/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
similarity index 100%
rename from payloads/library/general/Multi_HID_Pebbles/pebbles
rename to payloads/library/general/Multi_HID_Pebbles/pebbles.txt
From c0135eff5ce849a000937e0502a051d41c3a569c Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 20:03:12 +0000
Subject: [PATCH 4/7] Update Readme
---
payloads/library/general/Multi_HID_Pebbles/readme.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/payloads/library/general/Multi_HID_Pebbles/readme.md b/payloads/library/general/Multi_HID_Pebbles/readme.md
index 6492b54..a0de499 100644
--- a/payloads/library/general/Multi_HID_Pebbles/readme.md
+++ b/payloads/library/general/Multi_HID_Pebbles/readme.md
@@ -10,13 +10,13 @@
pebbles
## :book: Description
-Welcome to the game of pebbles base off of the game NIM.
-You vs the Croc.
+Welcome to the game of pebbles base off of the game NIM.
+You vs the Croc.
You move first, the object of the game is not to take the last pebble.
So after loading onto your croc. Open up a text editor and type `pebbles`
-The more games you play the smarter the croc will seem to get.
+The more games you play the smarter the croc will seem to get as it builds up knowledge.
## :mag: Match
resetbrain (play the game but resets any knowledge it has built up)
From 6416a2b6bdd5d29261ade650b4b8f4587f615660 Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 20:05:29 +0000
Subject: [PATCH 5/7] Small fixes with text
---
.../general/Multi_HID_Pebbles/pebbles.txt | 42 +++++++++----------
1 file changed, 20 insertions(+), 22 deletions(-)
diff --git a/payloads/library/general/Multi_HID_Pebbles/pebbles.txt b/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
index 86c0b6a..8b559d2 100644
--- a/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
+++ b/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
@@ -15,7 +15,7 @@ MATCH resetbrain
# location of charlog
char=/root/loot/croc_char.log
# where the array (it knowledge) is stored when not running
-brainFile=/root/loot/brain.hak
+brainFile=/root/brain.hak
# array of decisions
# basiclly if it has a one it can choose this move.
# because bash does not have a multi dimensional array we cheat a little and have 3 (largest number of pebbles that can be taken) times the total number of pebbles (21)
@@ -26,8 +26,6 @@ pebbles=$max
takken=0
running=true
lastpos=0
-row=1
-column=1
move=0
save_tofile () {
@@ -82,27 +80,27 @@ check_input()
}
another_game()
-{
+{
quack_line "Do you want another game (y/n)?" 1
while true; do
command=$( wait_input )
case $command in
- y )
+ y )
running=true
pebbles=$max
- lastpos=0 ;;
- break ;;
+ lastpos=0
+ break
+ ;;
* ) good_bye ;;
esac
done
}
pebbles_left()
{
- QUACK ENTER
- QUACK STRING pebbles left: $pebbles
+ quack_line "pebbles left: $pebbles" 1
}
-good_bye () {
+good_bye () {
quack_line "Good Bye" 1
exit
}
@@ -112,29 +110,29 @@ run ()
check_input
if [ "$pebbles" -le "$takken" ]; then
quack_line "I have won!" 1
- quack_line "Commiserations better luck next time." 0
+ quack_line "Commiserations better luck next time."
running=false
else
pebbles=$(($pebbles-$takken))
pebbles_left
move=0
- for i in {1..3}
- do
- pos=$(((((i-1)*max)+pebbles)-1))
- if [[ ${brainArray[$pos]} -eq 1 ]] ; then
- move=$i
- lastpos=$pos
- fi
- done
- if [ "$move" -eq 0 -o ($(($pebbles - $move)) -eq 0) ] ; then
+ for i in {1..3}
+ do
+ pos=$(((((i-1)*max)+pebbles)-1))
+ if [[ ${brainArray[$pos]} -eq 1 ]] ; then
+ move=$i
+ lastpos=$pos
+ fi
+ done
+ if [[ "$move" -eq 0 || $(($pebbles - $move)) -le 0 ]] ; then
quack_line "Congratulations you have won!" 1
- quack_line "I will learn from my mistake." 1
+ quack_line "I will learn from my mistake."
brainArray[$lastpos]=0
save_tofile
running=false
else
pebbles=$(($pebbles - $move))
- quack_line "I take: $move" 1
+ quack_line "I take: $move"
pebbles_left
fi
fi
From e1ba6357dbba919a0c7b79abcd988b0ee535c03b Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 20:09:55 +0000
Subject: [PATCH 6/7] Update readme
---
payloads/library/general/Multi_HID_Pebbles/readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/payloads/library/general/Multi_HID_Pebbles/readme.md b/payloads/library/general/Multi_HID_Pebbles/readme.md
index a0de499..572cd28 100644
--- a/payloads/library/general/Multi_HID_Pebbles/readme.md
+++ b/payloads/library/general/Multi_HID_Pebbles/readme.md
@@ -1,4 +1,4 @@
-# :gem: Pebbles?
+# :gem: Pebbles
- Author: Cribbit
- Version: 1.0
- Target: Mutli OS (GUI based text editior)
From da3a28874a245a0bd2a566b79e13ea88200dd7bb Mon Sep 17 00:00:00 2001
From: cribb-it <24548670+cribb-it@users.noreply.github.com>
Date: Tue, 7 Jan 2025 20:18:07 +0000
Subject: [PATCH 7/7] Update spacings
---
payloads/library/general/Multi_HID_Pebbles/pebbles.txt | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/payloads/library/general/Multi_HID_Pebbles/pebbles.txt b/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
index 8b559d2..e89ee2b 100644
--- a/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
+++ b/payloads/library/general/Multi_HID_Pebbles/pebbles.txt
@@ -5,7 +5,7 @@
# Version: 1.0
# Category: General
# Prop: Dragorn for his help with bash arrays and Bert van Dam's book on AI
-# Thanks: To Hak5 for their 20 year of passing knowledge out into the world and the Hak5 discord members for their friendship, knowledge and support.
+# Thanks: To Hak5 for their 20 year of passing knowledge out into the world and the Hak5 discord members for their friendship, knowledge and support.
## Matches
MATCH pebbles
@@ -128,8 +128,8 @@ run ()
quack_line "Congratulations you have won!" 1
quack_line "I will learn from my mistake."
brainArray[$lastpos]=0
- save_tofile
- running=false
+ save_tofile
+ running=false
else
pebbles=$(($pebbles - $move))
quack_line "I take: $move"
@@ -145,7 +145,7 @@ play_game()
quack_line "You vs Me"
quack_line "You move first, the object of the game is not to take the last pebble"
pebbles_left
- quack_cmds
+ quack_cmds
while [ "$running" == true ]; do
run
done