# -*- coding:utf-8 -*- import A,SALT from itertools import *
defencrypt(m, a, si): c="" for i inrange(len(m)): c+=hex(((ord(m[i])) * a + ord(next(si))) % 128)[2:].zfill(2) return c if __name__ == "__main__": m = 'flag{********************************}' a = A salt = SALT assert(len(salt)==3) assert(salt.isalpha()) si = cycle(salt.lower()) print("明文内容为:") print(m) print("加密后的密文为:") c=encrypt(m, a, si) print(c) #加密后的密文为: #177401504b0125272c122743171e2c250a602e3a7c206e014a012703273a3c0160173a73753d
# -*- coding:utf-8 -*- from itertools import * import re
if __name__ == "__main__": a = 57 salt = "ahh" assert(len(salt) == 3) assert(salt.isalpha()) si = cycle(salt.lower()) ss = [ord(next(si)) for i inrange(38)] ii = [int('0x'+each, 16) for each in re.findall('.{2}', '177401504b0125272c122743171e2c250a602e3a7c206e014a012703273a3c0160173a73753d')]
for j inrange(len(ss)): print() for i inrange(101): if (ii[j]+i*128-ss[j]) % 57 == 0: print(i, chr((ii[j]+i*128-ss[j]) // 57), end=' ')
''' a = 3844066521 b = 3316005024 m = 2249804527 state1 = 16269 state2 = 4249 g = 183096451267674849541594370111199688704 A = 102248652770540219619953045171664636108622486775480799200725530949685509093530 B = 74913924633988481450801262607456437193056607965094613549273335198280176291445 M = 102752586316294557951738800745394456033378966059875498971396396583576430992701 Cipher = 13040004482819935755130996285494678592830702618071750116744173145400949521388647864913527703 '''
这题就是要把线性同余方法的种子给出来,然后就可以获得每一次调用产生的随机数从而得到DH算法的密钥。
采取爆破的方法:
1 2 3 4 5 6 7 8 9
for i inrange(int('0b10000000000000000000000000000000',2), int('0b11111111111111111111111111111111',2)+1): s1 = (a*i+b) % m if s1 >> 16 == 16269and ((a*s1+b)%m) >> 16 == 4249: print(i)
from PIL import Image from pyzbar.pyzbar import decode import hashlib
p1 = Image.open('11.png').convert('RGB') p2 = Image.open('12.png').convert('RGB') a,b = p1.size dif = [] for y inrange(b): for x inrange(a): if p1.getpixel((x,y))!=p2.getpixel((x,y)): dif.append((x,y)) mark = dif[0]
p = Image.open('res.png').convert('RGB') aa,bb = p.size data = [] for y inrange(0,bb,50): for x inrange(0,aa,100): if p.getpixel((x+mark[0],y+mark[1])) == p1.getpixel(mark): data.append('1') else: data.append('0')
B = Image.new('L',(10,10),255) W = Image.new('L',(10,10),0) np = Image.new('L',(290,290),0) for y inrange(29): for x inrange(29): if data[x+29*y] == '0': np.paste(B,(10*x,10*y)) else: np.paste(W,(10*x,10*y)) np.save('r.png') pp = Image.open('r.png') barcodes = decode(pp) for barcode in barcodes: barcodeData = barcode.data.decode("utf-8") print(hashlib.md5(barcodeData.encode()).hexdigest())
<pclass="container"id="ZipPass is here:"> Pass​​​​‏‏‍​​​​‏​‌​​​​‏‍‏​​​​‏‍‌​​​​‏‎‏​​​​‏‌​​​​​‏​​​​​​‏‎‌​​​​‏​‏​​​​‎‏‏​​​​‏​‏​​​​‎‏‍​​​​‏‍‏​​​​‎‏‍​​​​‎‏‏​​​​‏‎‌​​​​‏​‌​​​​‏‍‏​​​​‏‎​​​​​‏‌​​​​​‏‍​​​​​‏‎‎​​​​‏‌​​​​​‏‎​​​​​‏‌​​​​​‎‏‎​​​​‏‌‎​​​​‏​‌word_is_here </p>