Variable, die nicht in der zweiten Def [geschlossen] erkannt werdenPython

Python-Programme
Guest
 Variable, die nicht in der zweiten Def [geschlossen] erkannt werden

Post by Guest »

Ich konnte keinen anderen Beitrag finden, in dem dies erklärt wird. Ich bin sicher, es ist ziemlich einfach zu erklären, aber ich verstehe es gerade nicht. Warum ist das so und wie kann ich das beheben? Ich versuche zu verstehen, warum jede zweite Zahl nicht gedruckt wird.

Code: Select all

num = 51
PRINT_INT = 0
DIGIT_PRINT_MODE = PRINT_INT
D = 0
IN = 0
INPUT = 0
MOD = 0
P = False
AS_STRINGLN = False

def TRANSLATE_INT():
DIGIT_PRINT_MODE = PRINT_INT
P = False
print(INPUT)
if INPUT >= 10000:
MOD = 10000
CONSUME()
if ((INPUT >= 1000) or (P == True)):
MOD = 1000
CONSUME()
if ((INPUT >= 100) or (P == True)):
MOD = 100
CONSUME()
if ((INPUT >= 10) or (P == True)):
MOD = 10
CONSUME()
D = INPUT
PRINTDIGIT()
if AS_STRINGLN:
ENTER

def CONSUME():
D = 0
print(INPUT)
while INPUT >= MOD:
D = (D + 1)
INPUT = (INPUT - MOD)
if ((D > 0) or (P == TRUE)):
P = True
PRINTDIGIT()

def PRINTDIGIT():
if (D == 0):
print("0")
elif (D == 1):
print("1")
elif (D == 2):
print("2")
elif (D == 3):
print("3")
elif (D == 4):
print("4")
elif (D == 5):
print("5")
elif (D == 6):
print("6")
elif (D == 7):
print("7")
elif (D == 8):
print("8")
elif (D == 9):
print(9)

while num  99:
print("BACKSPACE")
print("BACKSPACE")
print("BACKSPACE")
TRANSLATE_INT()
elif num >  9:
print("BACKSPACE")
print("BACKSPACE")
TRANSLATE_INT()
else:
print("BACKSPACE")
TRANSLATE_INT()

print("CTRL p")
print("ENTER")
num =  num + 1
< /code>
Duckyskript: < /p>
REM ####################################################################################
REM #                                                                                  |
REM # Title        : Numbering for printing Hostnames                                  |
REM # Author       : Robin                                                             |
REM # Version      : 1.0                                                               |
REM # Category     : Execution                                                         |
REM # Target       : Windows 10-11                                                     |
REM #                                                                                  |
REM ####################################################################################

REM ATTACKMODE STORAGE
REM WAIT_FOR_BUTTON_PRESS
REM ATTACKMODE HID
EXTENSION EXTENSION TRANSLATE
REM VERSION 1.1
REM AUTHOR: Korben

REM_BLOCK DOCUMENTATION
This extension acts as a library or collection of helper functions
to work with converting variables in your payloads.
WHY:
Of the many ways to get information about the state of your payload
is by injecting static strings effectively as debugging prints
However, given the non-static nature of payloads using variables in
DuckyScript 3.0 - the ability to decode variables during payload
execution and print (inject) representations of their current state
can often be a critically helpful development and debugging tool.

Available Functions:
DEFAULT:
TRANSLATE_INT() - var to decimal string - set $INPUT prior to call
EXTENDED:  (enabled using the #INCLUDE defines below):
TRANSLATE_HEX() - var to hexidecimal string - set $INPUT prior to call
TRANSLATE_BINARY() - var to binary string - set $INPUT prior to call
TRANSLATE_BOOL() - var to boolean string - set $INPUT prior to call

USAGE:
set $INPUT to desired var
call the correct translate_ function for the expected data type e.g.
VAR $myVar = 1234
$INPUT = $myVar
TRANSLATE_INT()
REM the above code will inject 1234
END_REM

REM CONFIGURATION:
DEFINE #INCLUDE_TRANSLATE_HEX FALSE
DEFINE #INCLUDE_TRANSLATE_BOOL FALSE
DEFINE #INCLUDE_TRANSLATE_BINARY FALSE
DEFINE #INCLUDE_SWAP_ENDIAN FALSE

REM Append ENTER after translation
VAR $AS_STRINGLN = FALSE

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

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
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_HEX
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
END_IF_DEFINED
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

IF_DEFINED_TRUE #INCLUDE_SWAP_ENDIAN
REM ENDIAN SWAPPER helper, (useful for working with VID/PID)
FUNCTION SWAP_ENDIAN()
$INPUT = ((($INPUT >> 8) & 0x00FF) | (($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 $AS_STRINGLN 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
REM TO ENABLE SET INCLUDE_TRANSLATE_BOOL to TRUE before compiling
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_BOOL
FUNCTION TRANSLATE_BOOL()
IF $INPUT THEN
STRING TRUE
ELSE
STRING FALSE
END_IF
IF $AS_STRINGLN THEN
ENTER
END_IF
END_FUNCTION
END_IF_DEFINED

REM Translates a variable of presumed integer type and attempts to convert
REM and inject a HEX string representation
REM TO ENABLE SET INCLUDE_TRANSLATE_HEX to TRUE before compiling
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_HEX
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 $AS_STRINGLN THEN
ENTER
END_IF
END_FUNCTION
END_IF_DEFINED

REM Translates a variable of presumed integer type and attempts to convert
REM and inject a BINARY string representation
REM TO ENABLE SET INCLUDE_TRANSLATE_BINARY to TRUE before compiling
IF_DEFINED_TRUE #INCLUDE_TRANSLATE_BINARY
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  9)
BACKSPACE
DELAY 100
BACKSPACE
DELAY 200
TRANSLATE_INT()
ELSE
BACKSPACE
DELAY 200
TRANSLATE_INT()
END_IF
DELAY 1000
CTRL p
DELAY 1000
REM ENTER
$NUMBER = ( $NUMBER + 1 )
END_WHILE

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post