当前位置: 首页 > article >正文

NSSCTF [SWPUCTF 2021 新生赛]非常简单的逻辑题

打开py附件

这段代码的作用是将flag字符串按照一定规则加密成result字符串。具体来说:

  1. 对于每个明文字符,计算其在字符集s中的两个索引s1s2
  2. 根据这两个索引,从字符集s中取出对应的两个字符,并根据当前位置i进行偏移。
  3. 将这两个字符连接起来形成加密后的字符对,最终构建加密后的result字符串。
# 初始的明文字符串
flag = 'xxxxxxxxxxxxxxxxxxxxx'

# 自定义的字符集
s = 'wesyvbniazxchjko1973652048@$+-&*<>'

# 初始化加密后的字符串
result = ''

# 遍历明文字符串中的每个字符
for i in range(len(flag)):
    # 计算字符在字符集中的索引
    s1 = ord(flag[i]) // 17
    s2 = ord(flag[i]) % 17

    # 根据索引计算加密后的字符对并添加到结果中
    result += s[(s1 + i) % 34] + s[-(s2 + i + 1) % 34]

# 输出加密后的结果
print(result)

# 预期的加密后的结果字符串
# result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'

解题方法

1.爆破求解

flag = ''
result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'
s = 'wesyvbniazxchjko1973652048@$+-&*<>'
num = 0

for i in range(0, len(result), 2):
    for j in range(255):
        if s[(j // 17 + num) % 34] == result[i] and s[-(j % 17 + num + 1) % 34] == result[i + 1]:
            flag += chr(j)
            num += 1

print('Decrypted flag:', flag)

2.求逆

flagg = ''  # 存储解密后的明文字符串
result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'  # 加密后的字符串
s = 'wesyvbniazxchjko1973652048@$+-&*<>'  # 字符集
num = 0

# 遍历加密后的字符串result中的字符对
for i in range(0, len(result), 2):
    # 找到对应字符在字符集s中的索引
    a1 = s.index(result[i])  # a1 == s1 + num
    a2 = s.index(result[i + 1])  # a2 == 34 - (s2 + 1 + num)

    # 解密计算,得到明文字符的ASCII码
    flag_tmp = (a1 - num) * 17 + (33 - num - a2)

    # 将解密后的ASCII码转换为字符并添加到解密后的明文字符串中
    flagg = flagg + chr(flag_tmp)
    num = num + 1

print(flagg)

得到flag

NSSCTF{Fake_RERE_QAQ}


http://www.kler.cn/news/323503.html

相关文章:

  • CodeFormer模型构建指南
  • 网络安全TARA分析
  • [Linux]磁盘分区指令
  • 带你0到1之QT编程:二十、QT与MySQL喜结连理,构建数据库应用开发
  • 大数据电商数仓项目--实战(一)数据准备
  • WebGIS开发及市面上各种二三维GIS开发框架对比分析
  • libreoffice word转pdf
  • 数据结构---顺序表之单链表
  • 关于 spi 的linux 的驱动的问题
  • Java和C语言语法细节(持续更新中)
  • pytorch ----【输入张量.data.size()/输入张量.size()】的使用
  • 基于MATLAB的虫害检测系统
  • Java实现找色和找图功能
  • 每天一道面试题(20):锁的发生原因和避免措施
  • C++ | 定长内存池 | 对象池
  • 【C语言】动态内存管理:malloc、calloc、realloc、free
  • 每天一道面试题(19):Spring Boot 中自动装配机制的原理
  • IIS开启后https访问出错net::ERR_CERT_INVALID
  • EasyExcel使用介绍
  • 【个人笔记】数据一致性的解决方案
  • 10.C++程序中的循环语句
  • RS485ESD-Enhanced, Fail-safe, Slew-Rate-limited RS-485/RS-422 Transceivers
  • 基于Hive和Hadoop的白酒分析系统
  • 信号处理: Block Pending Handler 与 SIGKILL/SIGSTOP 实验
  • 开关电源要做哪些测试?
  • Docker精讲:基本安装,简单命令及核心概念
  • ①无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器
  • 染色算法的简单概述
  • altera FPGA下载失败
  • MySQL之基础篇