Может ли кто-то с опытом Python проверить этот код, пожалуйста?

Когда я запускаю эту прогу, она не запускается по какой-то причине. Автор отмечает, что в верхней части кода на приведенной ссылке показан пример вывода, например, например, "encode/decode" не появляется вместо %sencode%s/%sdecode%s, поэтому не уверен, в чем проблема.

#!/usr/bin/python
import binascii, sys, time

RED = '\033[31m'
WHITE = '\033[37m'
RESET = '\033[0;0m'

def main():
 print "shellcode hex encode decoder"
 print "programmer : gunslinger_ <yudha.gunslinger[at]gmail.com>"
 print "what do you want to do ? %sencode%s / %sdecode%s" % (RED, RESET, WHITE, RESET)
 q = raw_input("=> ")

if q == "encode": 
 inputtype = raw_input("Please input data : ")
 print "shellcode => ",
 for encoded in inputtype:
 print "\b\\x"+encoded.encode("hex"),
 sys.stdout.flush()
 time.sleep(0.5)
 print RESET

elif q == "decode":
 inputtype = raw_input("Please input data : ")
 cleaninput = inputtype.replace("\\x","")
 print "hex => ",cleaninput
 print "plaintext => ",
 print "\b"+cleaninput.decode("hex")

else:
 print "wrong answer ! your choice is %sencode%s or %sdecode%s" % (RED, RESET, WHITE, RESET)
 sys.exit(1) 


if __name__ == '__main__':
main()
</yudha.gunslinger[at]gmail.com>
2 ответа

Эта программа использует консольные escape-последовательности для установки цветов - это конкретная работа, и она будет зависеть от используемой оболочки.

Быстрое исправление заключается в переопределении констант в верхней части, например:

RED = '"'
WHITE = '"'
RESET = '"'

то он скажет:

your choice is "encode" or "decode"


Пробелы важны в Python.

Здесь код с отступом исправлен:

#!/usr/bin/python
import binascii, sys, time

RED = '\033[31m'
WHITE = '\033[37m'
RESET = '\033[0;0m'

def main():
 print "shellcode hex encode decoder"
 print "programmer : gunslinger_ <yudha.gunslinger[at]gmail.com>"
 print "what do you want to do ? %sencode%s / %sdecode%s" % (RED, RESET, WHITE, RESET)
 q = raw_input("=> ")

 if q == "encode": 
 inputtype = raw_input("Please input data : ")
 print "shellcode => ",
 for encoded in inputtype:
 print "\b\\x"+encoded.encode("hex"),
 sys.stdout.flush()
 time.sleep(0.5)
 print RESET
 elif q == "decode":
 inputtype = raw_input("Please input data : ")
 cleaninput = inputtype.replace("\\x","")
 print "hex => ",cleaninput
 print "plaintext => ",
 print "\b"+cleaninput.decode("hex")
 else:
 print "wrong answer ! your choice is %sencode%s or %sdecode%s" % (RED, RESET, WHITE, RESET)
 sys.exit(1) 

if __name__ == '__main__':
 main()
</yudha.gunslinger[at]gmail.com>

licensed under cc by-sa 3.0 with attribution.