-
Notifications
You must be signed in to change notification settings - Fork 0
/
chall1.py
42 lines (36 loc) · 1.15 KB
/
chall1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
hex = input()
number = 0
base64map = {
0: 'A', 16: 'Q', 32: 'g', 48: 'w',
1: 'B', 17: 'R', 33: 'h', 49: 'x',
2: 'C', 18: 'S', 34: 'i', 50: 'y',
3: 'D', 19: 'T', 35: 'j', 51: 'z',
4: 'E', 20: 'U', 36: 'k', 52: '0',
5: 'F', 21: 'V', 37: 'l', 53: '1',
6: 'G', 22: 'W', 38: 'm', 54: '2',
7: 'H', 23: 'X', 39: 'n', 55: '3',
8: 'I', 24: 'Y', 40: 'o', 56: '4',
9: 'J', 25: 'Z', 41: 'p', 57: '5',
10: 'K', 26: 'a', 42: 'q', 58: '6',
11: 'L', 27: 'b', 43: 'r', 59: '7',
12: 'M', 28: 'c', 44: 's', 60: '8',
13: 'N', 29: 'd', 45: 't', 61: '9',
14: 'O', 30: 'e', 46: 'u', 62: '+',
15: 'P', 31: 'f', 47: 'v', 63: '/'
}
def parse(c):
if c in ['a', 'b', 'c', 'd', 'e', 'f']:
return ord(c) - 87
else:
return int(c)
def base64(n):
str = ''
bitmask = 63
while(n):
temp = n & bitmask
n = n >> 6
str = base64map[temp]+str
print(str)
for c, v in enumerate(reversed(hex)):
number += (parse(v) << (c*4))
base64(number)