Last active
August 29, 2023 04:38
-
-
Save byronwai/498f4e8298960206ae63e9a985a82942 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import random | |
| import sys | |
| def str_xor(secret, key): | |
| #extend key to secret length | |
| new_key = key | |
| i = 0 | |
| while len(new_key) < len(secret): | |
| new_key = new_key + key[i] | |
| i = (i + 1) % len(key) | |
| return "".join([chr(ord(secret_c) ^ ord(new_key_c)) for (secret_c,new_key_c) in zip(secret,new_key)]) | |
| flag_enc = chr(0x15) + chr(0x07) + chr(0x08) + chr(0x06) + chr(0x27) + chr(0x21) + chr(0x23) + chr(0x15) + chr(0x5c) + chr(0x01) + chr(0x57) + chr(0x2a) + chr(0x17) + chr(0x5e) + chr(0x5f) + chr(0x0d) + chr(0x3b) + chr(0x19) + chr(0x56) + chr(0x5b) + chr(0x5e) + chr(0x36) + chr(0x53) + chr(0x07) + chr(0x51) + chr(0x18) + chr(0x58) + chr(0x05) + chr(0x57) + chr(0x11) + chr(0x3a) + chr(0x56) + chr(0x0e) + chr(0x5d) + chr(0x53) + chr(0x11) + chr(0x54) + chr(0x5c) + chr(0x53) + chr(0x14) | |
| def print_flag(): | |
| flag = str_xor(flag_enc, 'enkidu') | |
| print(flag) | |
| def print_encouragement(): | |
| encouragements = ['You can do it!', 'Keep it up!', | |
| 'Look how far you\'ve come!'] | |
| choice = random.choice(range(0, len(encouragements))) | |
| print('\n-----------------------------------------------------') | |
| print(encouragements[choice]) | |
| print('-----------------------------------------------------\n\n') | |
| def main(): | |
| print( | |
| ''' | |
| Y | |
| .-^-. | |
| / \ .- ~ ~ -. | |
| () () / _ _ `. _ _ _ | |
| \_ _/ / / \ \ . ~ _ _ ~ . | |
| | | / / \ \ .' .~ ~-. `. | |
| | | / / ) ) / / `.`. | |
| \ \_ _/ / / / / / `' | |
| \_ _ _.' / / ( ( | |
| / / \ \\ | |
| / / \ \\ | |
| / / ) ) | |
| ( ( / / | |
| `. `. .' / | |
| `. ~ - - - - ~ .' | |
| ~ . _ _ _ _ . ~ | |
| ''' | |
| ) | |
| print('Welcome to the serpentine encourager!\n\n') | |
| while True: | |
| print('a) Print encouragement') | |
| print('b) Print flag') | |
| print('c) Quit\n') | |
| choice = input('What would you like to do? (a/b/c) ') | |
| if choice == 'a': | |
| print_encouragement() | |
| elif choice == 'b': | |
| #print('\nOops! I must have misplaced the print_flag function! Check my source code!\n\n') | |
| print_flag() | |
| elif choice == 'c': | |
| sys.exit(0) | |
| else: | |
| print('\nI did not understand "' + choice + '", input only "a", "b" or "c"\n\n') | |
| if __name__ == "__main__": | |
| main() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment