欢迎光临散文网 会员登陆 & 注册

【CTF-加密】仿射密码(python)

2020-08-19 23:15 作者:风二西  | 我要投稿

这里直接上干货脚本,讲解请看我的视频。

仿射密码知识点


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)网鼎杯朱雀组试题脚本:

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

【CTF-加密】仿射密码(python)的评论 (共 条)

分享到微博请遵守国家法律