【CTF-加密】仿射密碼(python)
這里直接上干貨腳本,講解請(qǐng)看我的視頻。

1)出題腳本:
a = 7
b = 22
flag = 'flag{23a490bfcb767099e9ce48dee691a34b}'
c=''
for j in flag:
? ?if ord(j)>=ord("a") and ord(j)<=ord("z"):
? ? ? ?cha=ord(j)-ord('a')
? ? ? ?c+=chr((a * cha+ b) % 26+ord('a'))
? ?else:
? ? ? ?c+=j
print c
2)解題腳本
#coding:utf-8
import gmpy2
a = 7
b = 22
c = 'fvwm{23w490dfkd767099y9ky48ryy691w34d}'
#解密方式
e=gmpy2.invert(7,26)
flag=''
for i in c:
? ?if ord(i) >= ord("a") and ord(i) <= ord("z"):
? ? ? ?cha=ord(i)-ord('a')
? ? ? ?flag+=chr((e*(cha-22)%26)+97)
? ?else:
? ? ? ?flag+=i
print flag
#爆破方式2
flag=''
for i in c:
? ?if ord(i) >= ord("a") and ord(i) <= ord("z"):
? ? ? ?for j in range(0,26):
? ? ? ? ? ?if i==chr((a * j+ b) % 26+ord('a')):
? ? ? ? ? ? ? ?flag += chr(j+ord('a'))
? ? ? ? ? ? ? ?break
? ?else:
? ? ? ?flag += i
print flag
3)網(wǎng)鼎杯朱雀組試題腳本:
c='kgws'
m='flag'
for i in range (1,27):
? ?for j in range(1,27):
? ? ? ?if 'k'==chr((i*(ord("f")-ord('a'))+j)%26+ord('a')) ?and 'g'==chr((i*(ord("l")-ord('a'))+j)%26+ord('a')) and 'w'==chr((i*(ord("a")-ord('a'))+j)%26+ord('a')):
? ? ? ? ? ?print i,j
a=8
b=22
flag=''
c='kgws{m8u8cm65-ue9k-44k5-8361-we225m76eeww}'
for i in c:
? ?if ord(i)>=ord("a") and ord(i)<ord("z"):
? ? ? ?for j in range(0, 26):
? ? ? ? ? ?if i==chr((a * j+ b) % 26+ord('a')):
? ? ? ? ? ? ? ?flag += chr(j+ord('a'))
? ? ? ? ? ? ? ?break
? ?else:
? ? ? ?flag+=i
print flag