CTF出题脚本

压缩包套娃脚本

import os
import random
import time
name_list = []
def zip_file():
    zip_before_file = 'flag.txt'
    for i in range(486):
        # password = random.randint(1000,9999)
        password = name_list[i]
        print(password)
        zip_last_file = str(password) + ".zip"

        zip_command = f"7z a -tzip {
     zip_last_file} {
     zip_before_file} -p{
     password}"
        os.system(zip_command)
        time.sleep(1)
        os.remove(zip_before_file)

        zip_before_file = zip_last_file

zip_file()

RSA出题脚本

import libnum

#生成随机素数
p=libnum.generate_prime(1024)
q=libnum.generate_prime(1024)
e=65537
m="flag{20d6e2da95dcc1fa5f5432a436c4be18}"
#字符串转数字
m=libnum.s2n(m)
n=p*q
phi_n=(p-1)*(q-1)
#求逆元
d=libnum.invmod(e,phi_n)
c=pow(m,e,n)


print("p=",p)
print("q=",q)
print ("n=",n)
print("d=",d)
print ("e=",e)
print ("c=",c) 

随机生成flag

import random
import hashlib
import string

#字符串列表
a=string.printable
#随机生成flag
for i in range(10):
    flag = ""
    for i in range(10):
        flag += a[random.randint(0, 99)]
    flag = hashlib.md5(flag.encode()).hexdigest()
    print("flag{" + flag + "}")


from uuid import uuid1
flag="flag{"+str(uuid1())+"}"
print(flag) 

2022奇偶数位移脚本

flag = "catflag{xxxxxxxxxxxxxxxxxx}"

f = 2022

for i in range(len(flag)):
    if i%2==1:
        print((int(ord(flag[i]) - f*ord(flag[i]))),end='')
    else:
        print((int(ord(flag[i]) + f*ord(flag[i]))), end='')

键盘坐标密码

import re

key_list = [['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],
            ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],
            ['z', 'x', 'c', 'v', 'b', 'n', 'm']
            ]
flag = "catf1ag{xxxxxxxxxxx}"
flag_content = re.findall(r'{(.*?)}',flag)[0]

for flag in flag_content:

    for i,key_lists in enumerate(key_list):
        for i2,key in enumerate(key_lists):
            if key == flag:

                print(str(i+1)+str(i2+1),end=' ')


杰斐逊转轮密码

import random
import json
a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

flag = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'.upper()

roller_list = []

for i in range(len(flag)):
    dic = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
           'W', 'X', 'Y', 'Z']

    random.shuffle(dic)
    roller_list.append(dic)
#print((roller_list))
num = (random.randrange(1,26))
print(num)
secret = ''
for i,word in zip(roller_list,flag):
    print(''.join(i))
    list_s = (i[i.index(word):] + i[:i.index(word)])
    #print(list_s)
    secret+=list_s[num]
print(secret)


栅栏密码逆序扣去填充字符

flag = "catf1ag{xxxxxxxxxxxxxxxx}"
print(len(flag))
num=9 #flag长度比最接近的num倍数小
flag1 = flag+('@'*int(num - len(flag)%num))
print(len(flag1))
print((flag1))
secret = ''
for i in range(num):
    secret += (flag1[i]+flag1[num*1+i]+flag1[num*2+i])
print(secret[::-1].replace('@',''))

异或变异

a = 'catf1ag{xxxxxxxxx}'

f = 1
secret = ''
for i in a:

    secret += (chr(ord(i)^f))
    f+=1
print(len(secret))
with open('secret.txt','w') as f:
    f.write(secret)


RGBA通道隐写

from PIL import Image
MAX = 41
pic = Image.new('RGBA',(MAX,MAX))
pix_list = [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 255, 255, 0, 255, 0, 255, 0, 0, 255, 255, 255, 0, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 0, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 0, 255, 255, 0, 0, 255, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 0, 255, 255, 0, 255, 255, 0, 255, 0, 255, 0, 255, 0, 0, 0, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 0, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 0, 255, 0, 255, 255, 255, 255, 255, 0
  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值