[SWPUCTF 2021 新生赛]fakebase

devtools/2024/11/7 16:07:11/

python逆向 先看源代码

这段代码是一个简单的加密算法,通过将给定的字符串转换为二进制形式,然后将二进制数转换为一个整数,再将这个整数不断地除以31取余数,并根据余数映射到s_box中的字符来实现加密。最后,输出加密后的字符串。

下面是对代码的分析:

  1. flag = 'xxxxxxxxxxxxxxxxxxx':这是要加密的原始字符串。

  2. s_box = 'qwertyuiopasdfghjkzxcvb123456#$':这是用于加密的字符集。

  3. 将每个字符转换为8位的二进制字符串,并拼接在一起,得到一个大整数 b1

  4. 将整数 b1 不断除以31,取余数,将余数映射到s_box中的字符,直到商为0,得到加密后的字符串 s

  5. 最后打印加密后的字符串 s

flag = 'xxxxxxxxxxxxxxxxxxx's_box = 'qwertyuiopasdfghjkzxcvb123456#$'
tmp = ''
for i in flag:tmp += str(bin(ord(i)))[2:].zfill(8)
b1 = int(tmp,2)
s = ''
while b1//31 != 0:s += s_box[b1%31]b1 = b1//31print(s)# s = u#k4ggia61egegzjuqz12jhfspfkay

逆向的过程是

  • 遍历 s 中的每个字符,找到它在s_box中的位置,然后将对应的位置转换为整数值。
  • 将这些整数值合并为一个大的整数 b1
  • 将整数 b1 转换为二进制字符串,可能需要在前面补0,使其长度为8的倍数。
  • 将这个二进制字符串分割为每8位一组,然后将每组转换为对应的字符,即为解密后的明文。

爆破解出flag

s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
encrypted_text = 'u#k4ggia61egegzjuqz12jhfspfkay'for candidate_value in range(1, 31):b1 = candidate_valuedecrypted_text = ''for i in range(len(encrypted_text) - 1, -1, -1):for j in range(len(s_box)):if encrypted_text[i] == s_box[j]:b1 *= 31b1 += jbreakdecrypted_text_binary = bin(b1)[2:]# Padding the binary string if its length is not a multiple of 8while len(decrypted_text_binary) % 8 != 0:decrypted_text_binary = decrypted_text_binary.zfill(len(decrypted_text_binary) + 1)decrypted_text_length = int(len(decrypted_text_binary) / 8)decrypted_text = ''for h in range(decrypted_text_length):binary_chunk = decrypted_text_binary[8 * h: 8 * (h + 1)]decrypted_char = chr(int(binary_chunk, 2))decrypted_text += decrypted_charprint(decrypted_text)

NSSCTF{WHAt_BASe31}


http://www.ppmy.cn/devtools/132052.html

相关文章

从底层技术到实际应用:Claude与ChatGPT谁更适合学术写作?

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 使用大模型智能AI进行学术写作和科研已经成为学者、研究人员和高校学生的强大助手。Anthropic的Claude和OpenAI的ChatGPT作为该领域的两个主要参与者,正在不断发展和完善。随…

C++ 文件操作详解

C 文件操作详解 在C中,文件操作分为文本文件和二进制文件的操作,通过文件流类(ifstream、ofstream、fstream)进行文件的读写。这些类封装了文件的输入和输出操作,并继承了istream和ostream的功能,使得流对…

ubuntu 22.04 server 安装 anaconda3

ubuntu 22.04 server 安装 anaconda3 https://www.anaconda.com/download/success Anaconda Installers wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh 其他的是 默认 Executing transaction: done installation finished. Do you wish to…

Unity网络开发基础(part5.网络协议)

目录 前言 网络协议概述 OSI模型 OSI模型的规则 第一部分 物理层 数据链路层 网络层 传输层 第二部分 ​编辑 应用层 表示层 会话层 每层的职能 TCP/IP协议 TCP/IP协议的规则 TCP/IP协议每层的职能 TCP/IP协议中的重要协议 TCP协议 三次握手 四次挥手 U…

数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法 符号递归图(Symbolic recurrence plots)是一种一维时间序列转图像的技术,可用于平稳和非平稳数据集;对噪声具有…

Bypassuac之白名单结合注册表方式

参考 Bypass UAC 原来这么简单 本章记录一下系统白名单文件结合注册表bypassuac,uac这个东西并不是Windows设置的防御机制而是相当于保护机制,只是用来控制用户行为的,弹个窗来提醒一下用户的行为,和直接的杀软是不一样的性质&am…

AnaTraf | 网络性能监控系统保障音视频质量的秘籍

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 一、网络性能监控系统:音视频质量的幕后守护者 在当今数字化的世界里,音视频应用无处不在,无论是在线会议、远程教育还是娱乐直播。然而,这些流畅精彩的音视频…

WPF之iconfont(字体图标)使用

1,前文: WPF的Xaml是与前端的Html有着高度相似性的标记语言,所以Xaml也可同Html一般轻松使用阿里提供的海量字体图标,从而有效的减少开发工作度。 2,下载字体图标: 登录阿里图标库网iconfont-阿里巴巴矢量…