Introduction
This commit is contained in:
65
course_introduction.py
Normal file
65
course_introduction.py
Normal file
@@ -0,0 +1,65 @@
|
||||
#ascii
|
||||
print("ASCII")
|
||||
input = [99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 110, 116, 52, 98, 108, 51, 125]
|
||||
print("".join(chr(o) for o in input))
|
||||
print()
|
||||
|
||||
#hex
|
||||
print("HEX")
|
||||
input = "63727970746f7b596f755f77696c6c5f62655f776f726b696e675f776974685f6865785f737472696e67735f615f6c6f747d"
|
||||
print(bytes.fromhex(input))
|
||||
print()
|
||||
|
||||
#base64
|
||||
print("Base64")
|
||||
input = "72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf"
|
||||
import base64
|
||||
print(base64.b64encode(bytes.fromhex(input)))
|
||||
print()
|
||||
|
||||
#bytes and big integers
|
||||
print("Bytes and big integers")
|
||||
input = 11515195063862318899931685488813747395775516287289682636499965282714637259206269
|
||||
print(bytes.fromhex(f"{input:X}"))
|
||||
print()
|
||||
|
||||
#xor starter
|
||||
print("XOR starter")
|
||||
input = "label"
|
||||
print("crypto{" + "".join(chr(ord(c)^13) for c in input) + "}")
|
||||
print()
|
||||
|
||||
#xor properties
|
||||
print("XOR properties")
|
||||
key1 = "a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313"
|
||||
key2_xor_key1 = "37dcb292030faa90d07eec17e3b1c6d8daf94c35d4c9191a5e1e"
|
||||
key2_xor_key3 = "c1545756687e7573db23aa1c3452a098b71a7fbf0fddddde5fc1"
|
||||
flag_xor_key1_xor_key3_xor_key2 = "04ee9855208a2cd59091d04767ae47963170d1660df7f56f5faf"
|
||||
def xor(data1, data2):
|
||||
if len(data1) != len(data2):
|
||||
raise ValueError(f"Both data shall have the same length: {data1} ({len(data1)} char) vs {data2} ({len(data2)} char)")
|
||||
return f"{int(data1, 16)^int(data2, 16):0{len(data1)}X}"
|
||||
flag = xor(xor(flag_xor_key1_xor_key3_xor_key2, key2_xor_key3), key1)
|
||||
print(bytes.fromhex(flag))
|
||||
print()
|
||||
|
||||
#favourite bytes
|
||||
print("Favourite byte")
|
||||
input = "73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d"
|
||||
for i in range(256):
|
||||
res = bytes.fromhex(xor(input, f"{i:02X}"*(len(input)//2)))
|
||||
if res.startswith(b"crypto"):
|
||||
print(res)
|
||||
break
|
||||
print()
|
||||
|
||||
#You either know, XOR you don't
|
||||
print("You either know, XOR you don't")
|
||||
flag_format = "".join(f"{ord(c):02X}" for c in "crypto{")
|
||||
input = "0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104"
|
||||
key = xor(flag_format, input[:len(flag_format)])
|
||||
print(key)
|
||||
key = "6D79584F526B6579" #myXORkey
|
||||
key = key*(len(input)//len(key)+1)
|
||||
res = xor(key[:len(input)], input)
|
||||
print(bytes.fromhex(res))
|
||||
Reference in New Issue
Block a user