Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
goelp14
GitHub Repository: goelp14/easyctf-iv-problems
Path: blob/master/special_endings/source/decode.py
650 views
1
def get_base64_diff_value(s1, s2):
2
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
3
res = 0
4
for i in xrange(len(s1)):
5
if s1[i] != s2[i]:
6
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
7
return res
8
9
def solve_stego():
10
with open('encrypted_lines.txt', 'rb') as f:
11
file_lines = f.readlines()
12
13
bin_str = ''
14
for line in file_lines:
15
steg_line = line.replace('\n', '')
16
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
17
18
diff = get_base64_diff_value(steg_line, norm_line)
19
pads_num = steg_line.count('=')
20
if diff:
21
bin_str += bin(diff)[2:].zfill(pads_num * 2)
22
else:
23
bin_str += '0' * pads_num * 2
24
25
res_str = ''
26
for i in xrange(0, len(bin_str), 8):
27
res_str += chr(int(bin_str[i:i+8], 2))
28
print res_str
29
30
solve_stego()
31
32