每天CTF小练--ctfshow新手村

easy_base

密文:=0XezFWZfNXafRjNlNXYit3dvh2cmR3Y

等号在前面,直接倒序后解码

ctfshow{base64_is_easy}

代码解:

s = '=0XezFWZfNXafRjNlNXYit3dvh2cmR3Y'
print(s[::-1])   #翻转字符串
print(s[::-1])   #翻转字符串
print(s[::-1])   #翻转字符串
#Y3Rmc2hvd3tiYXNlNjRfaXNfZWFzeX0=
#ctfshow{base64_is_easy}

天知地知

电话号码加密
好不容易要到了妹子手机号,却是加密的,怎么办,兄弟们很急,在线等!听说妹子是佛山的 加密后的手机号:

(+86)981935301754

格式ctfshow{妹子手机号} 提交的时候,不用+86, * 不要给机主打电话,更不要骚扰机主,不然我报警啦*

分析发现,电话是12位的,而且是9开头,那么国内绝大部分手机号是1开头,所以用10相减就是1了
然后12位,所以减去的数要比他大,所以被减数就是13位,第一位是1,后面12位是0,得到1000000000000

print("ctfshow{"+str(1000000000000-981935301754)+"}")
#ctfshow{18064698246}

凯撒密码:
题目:

from string import ascii_lowercase
from random import shuffle,randint

table=list(ascii_lowercase)
shuffle(table)
flag='ctfshow{xxx}'
key=randint(0,25)
text=[]
for i in flag:
    if i in table:
        text.append(table[(table.index(i)+key)%26])
    else:
        text.append(i)
print(table)
print(text)
# ['h', 'g', 'u', 'p', 'o', 'v', 'n', 'b', 'i', 'j', 'y', 'k', 'a', 'z', 'w', 'q', 't', 'l', 'r', 'd', 'x', 'e', 's', 'm', 'c', 'f']
# ['r', 'y', 'd', 't', 'x', 'c', 'i', '{', 'y', 'x', '1', 't', '_', 'u', 't', '_', 'z', '1', 'd', 'd', 'a', 'q', 'h', 'y', '_', 'r', '4', 'q', 't', 'n', 'a', '!', '!', '}']
wp:主要考查代码能力

代码解释:

from string import ascii_lowercase
from random import shuffle,randint
#1.前面的引入模块,不用管



table=list(ascii_lowercase)
"""
2.在这行代码中,table = list(ascii_lowercase) 的作用是将 ascii_lowercase 字符串转换为一个字符列表,并赋值给变量 table;(将字符串转化为列表)
ascii_lowercase 是一个字符串,它包含了所有的小写英文字母,按顺序排列,即 'abcdefghijklmnopqrstuvwxyz'。通过使用 list() 函数,这个字符串被转换成一个列表,其中每个元素都是字符串中的一个字符。因此,table 会变成一个包含26个小写英文字母的列表。
"""


shuffle(table)
# 3.打乱这个列表,作为替换表

flag='ctfshow{xxx}'
key=randint(0,25)
"""
4.在这行代码中,key = randint(0, 25) 是用于生成一个随机整数key,其值在0到25之间(包含0和25)。这个随机整数在接下来的加密过程中将作为密钥使用。
"""



text=[]
for i in flag:
    if i in table:
        text.append(table[(table.index(i)+key)%26])
        """
        5.因为英文字母表只有26个字母,所以我们需要确保加密后的索引仍然落在字母表的范围内。使用模运算(%)可以确保结果是一个0到25之间的数,无论table.index(i) + key的和有多大。这样做是为了防止索引超出字母表的边界,并实现一个循环移位的效果。
        """
        
    else:
        text.append(i)
        #6.添加i到text列表(数组)中
print(table)
print(text)
# ['h', 'g', 'u', 'p', 'o', 'v', 'n', 'b', 'i', 'j', 'y', 'k', 'a', 'z', 'w', 'q', 't', 'l', 'r', 'd', 'x', 'e', 's', 'm', 'c', 'f']
# ['r', 'y', 'd', 't', 'x', 'c', 'i', '{', 'y', 'x', '1', 't', '_', 'u', 't', '_', 'z', '1', 'd', 'd', 'a', 'q', 'h', 'y', '_', 'r', '4', 'q', 't', 'n', 'a', '!', '!', '}']

运用for循环爆破key,其他一切正常,看似难,实则简单

table=['h', 'g', 'u', 'p', 'o', 'v', 'n', 'b', 'i', 'j', 'y', 'k', 'a', 'z', 'w', 'q', 't', 'l', 'r', 'd', 'x', 'e', 's', 'm', 'c', 'f']
text=['r', 'y', 'd', 't', 'x', 'c', 'i', '{', 'y', 'x', '1', 't', '_', 'u', 't', '_', 'z', '1', 'd', 'd', 'a', 'q', 'h', 'y', '_', 'r', '4', 'q', 't', 'n', 'a', '!', '!', '}']
# 爆破秘钥
for key in range(0,26):
    flag=''
    for i in text:
        if i in table:
            flag+=(table[(table.index(i)+key)%26])
        else:
            flag+=i
    print(str(flag))
# ctfshow{th1s_is_d1ffrent_c4esar!!}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值