initial
This commit is contained in:
commit
413593ad73
62
encoding/13377_e3dd25795e7a6053f2df0aa399b3cf34.py
Normal file
62
encoding/13377_e3dd25795e7a6053f2df0aa399b3cf34.py
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from Crypto.Util.number import bytes_to_long, long_to_bytes
|
||||||
|
from utils import listener
|
||||||
|
import base64
|
||||||
|
import codecs
|
||||||
|
import random
|
||||||
|
|
||||||
|
FLAG = "crypto{????????????????????}"
|
||||||
|
ENCODINGS = [
|
||||||
|
"base64",
|
||||||
|
"hex",
|
||||||
|
"rot13",
|
||||||
|
"bigint",
|
||||||
|
"utf-8",
|
||||||
|
]
|
||||||
|
with open('/usr/share/dict/words') as f:
|
||||||
|
WORDS = [line.strip().replace("'", "") for line in f.readlines()]
|
||||||
|
|
||||||
|
|
||||||
|
class Challenge():
|
||||||
|
def __init__(self):
|
||||||
|
self.challenge_words = ""
|
||||||
|
self.stage = 0
|
||||||
|
|
||||||
|
def create_level(self):
|
||||||
|
self.stage += 1
|
||||||
|
self.challenge_words = "_".join(random.choices(WORDS, k=3))
|
||||||
|
encoding = random.choice(ENCODINGS)
|
||||||
|
|
||||||
|
if encoding == "base64":
|
||||||
|
encoded = base64.b64encode(self.challenge_words.encode()).decode() # wow so encode
|
||||||
|
elif encoding == "hex":
|
||||||
|
encoded = self.challenge_words.encode().hex()
|
||||||
|
elif encoding == "rot13":
|
||||||
|
encoded = codecs.encode(self.challenge_words, 'rot_13')
|
||||||
|
elif encoding == "bigint":
|
||||||
|
encoded = hex(bytes_to_long(self.challenge_words.encode()))
|
||||||
|
elif encoding == "utf-8":
|
||||||
|
encoded = [ord(b) for b in self.challenge_words]
|
||||||
|
|
||||||
|
return {"type": encoding, "encoded": encoded}
|
||||||
|
|
||||||
|
#
|
||||||
|
# This challenge function is called on your input, which must be JSON
|
||||||
|
# encoded
|
||||||
|
#
|
||||||
|
def challenge(self, your_input):
|
||||||
|
if self.stage == 0:
|
||||||
|
return self.create_level()
|
||||||
|
elif self.stage == 100:
|
||||||
|
self.exit = True
|
||||||
|
return {"flag": FLAG}
|
||||||
|
|
||||||
|
if self.challenge_words == your_input["decoded"]:
|
||||||
|
return self.create_level()
|
||||||
|
|
||||||
|
return {"error": "Decoding fail"}
|
||||||
|
|
||||||
|
|
||||||
|
listener.start_server(port=13377)
|
||||||
|
|
50
encoding/automating.py
Normal file
50
encoding/automating.py
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
import socket
|
||||||
|
import json
|
||||||
|
from Crypto.Util.number import bytes_to_long, long_to_bytes
|
||||||
|
#from utils import listener
|
||||||
|
import base64
|
||||||
|
import codecs
|
||||||
|
import random
|
||||||
|
|
||||||
|
def netcat(hostname, port, content):
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
s.connect((hostname, port))
|
||||||
|
s.sendall(content)
|
||||||
|
s.shutdown(socket.SHUT_WR)
|
||||||
|
while 1:
|
||||||
|
data = s.recv(1024)
|
||||||
|
if data == "":
|
||||||
|
break
|
||||||
|
#print "Received:", repr(data)
|
||||||
|
#print "Connection closed."
|
||||||
|
s.close()
|
||||||
|
|
||||||
|
host = "socket.cryptohack.org"
|
||||||
|
port = 13377
|
||||||
|
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
s.connect((host, port))
|
||||||
|
while 1:
|
||||||
|
data = json.loads(s.recv(1024))
|
||||||
|
if 'flag' in data:
|
||||||
|
print(data['flag'])
|
||||||
|
encoding = data['type']
|
||||||
|
print(encoding)
|
||||||
|
|
||||||
|
if encoding == "base64":
|
||||||
|
encoded = bytes.decode(base64.b64decode(data['encoded']))
|
||||||
|
elif encoding == "hex":
|
||||||
|
encoded = bytearray.fromhex(data['encoded']).decode()
|
||||||
|
elif encoding == "rot13":
|
||||||
|
encoded = codecs.decode(data['encoded'], 'rot_13')
|
||||||
|
pass
|
||||||
|
elif encoding == "bigint":
|
||||||
|
#print(bytearray.fromhex(data['encoded']).decode())
|
||||||
|
encoded = bytearray.fromhex(data['encoded'][2:]).decode()
|
||||||
|
print(encoded)
|
||||||
|
elif encoding == "utf-8":
|
||||||
|
encoded = bytes.decode(bytes(''.join([chr(b) for b in data['encoded']]), "UTF-8"))
|
||||||
|
|
||||||
|
jsonEncode = json.JSONEncoder().encode({"decoded": str(encoded)})
|
||||||
|
print(jsonEncode)
|
||||||
|
s.sendall(bytes(jsonEncode, "UTF-8"))
|
14
maths/euclidAlgo.py
Normal file
14
maths/euclidAlgo.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
def Euclid(a, b):
|
||||||
|
if a < b:
|
||||||
|
tmp = a
|
||||||
|
a = b
|
||||||
|
b = tmp
|
||||||
|
r = a%b
|
||||||
|
if r == 0:
|
||||||
|
return b
|
||||||
|
return Euclid(b, r)
|
||||||
|
|
||||||
|
def extendedEuclid(a, b):
|
||||||
|
pass
|
||||||
|
|
||||||
|
print(Euclid(66528, 52920))
|
8
xor/1.py
Normal file
8
xor/1.py
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
test = "label"
|
||||||
|
i = 13
|
||||||
|
final = ""
|
||||||
|
|
||||||
|
for e in test:
|
||||||
|
final = final + chr(i ^ ord(e))
|
||||||
|
|
||||||
|
print(final)
|
9
xor/2.py
Normal file
9
xor/2.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
i = "73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d"
|
||||||
|
to_bytes = bytearray.fromhex(i)
|
||||||
|
|
||||||
|
for i in range(256):
|
||||||
|
final = ""
|
||||||
|
for e in to_bytes:
|
||||||
|
final = final + chr(i ^ e)
|
||||||
|
if ord(final[6]) + 2 == ord(final[-1]):
|
||||||
|
print(final)
|
28
xor/3.py
Normal file
28
xor/3.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
q = "0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104"
|
||||||
|
to_bytes = bytearray.fromhex(q)
|
||||||
|
|
||||||
|
final = ""
|
||||||
|
i = 1
|
||||||
|
#while i <= 10000000:
|
||||||
|
# final = ""
|
||||||
|
# for e in to_bytes:
|
||||||
|
# final = final + chr(i ^ e)
|
||||||
|
# if "crypto" == final[0:5]:
|
||||||
|
# print(final)
|
||||||
|
# print(i)
|
||||||
|
# i = i + 1
|
||||||
|
# #print(final[7])
|
||||||
|
#print(i)
|
||||||
|
|
||||||
|
#key = ""
|
||||||
|
#for e, i in zip(to_bytes, "crypto{"):
|
||||||
|
# key = key + chr(ord(i) ^ e)
|
||||||
|
|
||||||
|
#print(key)
|
||||||
|
|
||||||
|
key = "myXORkeymyXORkeymyXORkeymyXORkeymyXORkeymyXORkey"
|
||||||
|
final = ""
|
||||||
|
for e, i in zip(to_bytes, key):
|
||||||
|
final = final + chr(e ^ ord(i))
|
||||||
|
|
||||||
|
print(final)
|
Loading…
Reference in a new issue