RE_RC4加密

之前做的几道题目,rc4也是经常遇到,今来系统学学,记录一下

对称加密,即加密和解密的密钥可以相互推导,也有的是相同的。

RC4 是以字节流处理每一个字节,而不是 DES 的分组操作。

包含三个参数:key  ,enc  , len(enc)

首先就是 S 盒的生成,256个字节,先是0-256填充,然后又用 key,len(key) 去替换 S 盒的部分,形成一个伪随机的 S 盒。

然后就是 S 盒和密文逐个字节异或,得到密文。解密再异或回去就可以了。

def S_init(key, key_len):S = list(range(256))K = [key[i % key_len] for i in range(256)]j = 0for i in range(256):j = (j + S[i] + K[i]) % 256S[i], S[j] = S[j], S[i]return Sdef encrypt(data, key):key_len = len(key)data_len = len(data)S = S_init(key, key_len)i = 0j = 0enc = bytearray()for byte in data:i = (i + 1) % 256j = (j + S[i]) % 256S[i], S[j] = S[j], S[i]tmp = (S[i] + S[j]) % 256k = S[tmp]enc.append(byte ^ k)return bytes(enc)def decrypt(ciphertext, key):# RC4 decryption is the same as encryptionreturn encrypt(ciphertext, key)if __name__ == "__main__":data=[0xD5, 0xB2, 0x7C, 0xDC, 0x90, 0xA2, 0x6E, 0x60,0x06, 0x13, 0xE4, 0x71, 0x59, 0xB0, 0x90, 0x31,0xB2, 0xC7, 0x1D, 0xD7,0x7f]str='litctf!'key=list(map(ord,str))res=encrypt(data,key)print(res)

[LitCTF 2024]ezrc4

就是一个简单的 RC4,密文就在开头,key 最外面是错的,交叉引用,去得到真 key

enc: 0xD5, 0xB2, 0x7C, 0xDC, 0x90, 0xA2, 0x6E, 0x60,0x06, 0x13, 0xE4, 0x71, 0x59, 0xB0, 0x90, 0x31,0xB2, 0xC7, 0x1D, 0xD7,0x7f

可以直接写脚本,也可以去动调

main函数之前应该还有反调试,但没找到,啧。

这会也没遇到专门的RC4的了,之后遇到再写上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索通信技术的未来:2024中国通信技术和智能装备产业博览会

探索通信技术的未来:2024通信技术产业专场 随着信息技术的飞速发展,通信技术已成为现代社会不可或缺的基础设施。2024年10月11日至13日,青岛将迎来一场通信技术的盛会——2024中国军民两用智能装备与通信技术产业博览会。本次博览会不仅将展…

面试(03)————多线程

目录 一、线程和进程的区别? 二、并行和并发的区别? 三、线程创建的方式有哪些? 3.1、继承Thread类 3.2、实现Runnable接口 3.3、实现Callable接口 3.4、线程池 四、Runnable和Callable的区别? 五、在启动线程的时候&am…

使用packstack快速部署OpenStack

目录 资源列表 基础环境 安装packstack 安装OpenStack 本文记录了基于CentOS操作系统使用packstack快速部署openstack。 资源列表 操作系统配置磁盘IP数量CentOS7.94C8G50G192.168.207.1551 基础环境 服务器开启虚拟化,我这里使用的是VMware虚拟机&#xff0…

Redis教程(二十二):Redis的过期删除和缓存淘汰策略

传送门:Redis教程汇总篇,让你从入门到精通 一、过期删除策略 Redis 中的过期删除策略是与 Redis 管理键的生命周期相关的一系列操作,用于删除过期的Key以释放内存。Redis 提供了三种主要的过期删除策略: 1、惰性删除(Lazy Expiration) 工作原理:当客户端尝试访问一个…

书生·浦语大模型全链路开源体系-笔记作业4

XTuner 微调 LLM:1.8B、多模态、Agent 引自:Tutorial/xtuner/personal_assistant_document.md at camp2 InternLM/Tutorial GitHub 1. XTuner介绍 引自:欢迎来到 XTuner 的中文文档 — XTuner 0.1.18.dev0 文档 1.1. 什么是 XTuner ? X…

修改缓存供应商--EhCache

除了我们默认的缓存形式simlpe之外, 我们其实还有许多其他种类的缓存供应 Ehcache就是其中的一种形式 Ehcache在SpringBoot当中的使用: 其实跟我们之前整合第三方的资源是一样的形式 1>导入依赖: <!-- 更换缓存, 将默认使用的 Simple 更换为Ehcache--> <depe…

Redis 数据拷贝

一、从db0到db1 将redis数据从db0拷贝到db1&#xff0c;可以使用下面脚本进行复制 REDIS_CLI/usr/local/redis/bin/redis-cli hostredis_host portredis_port passwordredis_password old_base0 new_base1${REDIS_CLI} -h ${host} -p ${port} -a ${password} -n $old_base ke…

【go】windows环境设置goos

场景 本地环境&#xff1a;windows 生产环境&#xff1a;linux 现想在本地将go脚本编译为可执行二进制文件&#xff0c;转移至生产中进行运行测试。但go build不生效。 方案&#xff08;修改GOOS&#xff09; cmd打开命令行&#xff0c;执行go env查看本地go环境&#xff0c…

PPT视频如何16倍速或者加速播放

有两种方式&#xff0c;一种是修改PPT本身&#xff0c;这种方式非常繁琐&#xff0c;不太推荐&#xff0c;还有一种就是修改视频本身&#xff0c;直接让视频是16倍速的视频即可。 如何让视频16倍速&#xff0c;我建议人生苦短&#xff0c;我用Python&#xff0c;几行代码&…

基本元器件 - 电阻

目录 电阻的选型 贴片封装的参数 电阻的阻值 丝印表示方法 标准电阻取值 电阻的失效 0 欧姆电阻的使用 电阻的使用场景 分压电路 分流电路 限流电路 阻抗匹配电路 RC 充放电电路 上下拉电路 其他电路 电阻的选型 一般来说&#xff0c;要考虑以下四个因素&…

【大模型】基于Hugging Face调用及微调大模型(1)

文章目录 一、前言二、Transformer三、Hugging Face3.1 Hugging Face Dataset3. 2 Hugging Face Tokenizer3.3 Hugging Face Transformer3.4 Hugging Face Accelerate 四、基于Hugging Face调用模型4.1 调用示例4.2 调用流程概述4.2.1 Tokenizer4.2.2 模型的加载4.2.3 模型基本…

【java 中 IO 流分为几种?】

文章目录 概要分类&#xff08;1&#xff09;按照流的方向分类&#xff08;2&#xff09;按照操作数据单位分类&#xff08;3&#xff09;按照IO流的角色分类&#xff08;4&#xff09;常用流的总结 总结 概要 在Java中&#xff0c;IO流主要用于处理数据的传输&#xff0c;它们…

软信天成:告别数据脏乱差!企业数据清洗实战方案分享

低质量数据普遍存在。据统计&#xff0c;数据质量问题每年给企业造成高达3.1万亿美元的损失。为了防范这种损失&#xff0c;越来越多的企业采用数据清洗来清洗数据&#xff0c;提高数据质量。 数据清洗&#xff0c;顾名思义是将数据上“脏”的部分清洗掉&#xff0c;让数据变得…

UV胶为什么会开裂?如何避免UV胶开裂?

UV胶为什么会开裂&#xff1f;如何避免UV胶开裂&#xff1f; UV胶开裂可能由以下几个主要因素导致&#xff1a; 紫外线照射不足&#xff1a;UV胶的固化需要足够的紫外线能量。如果紫外线照射不足&#xff0c;胶水可能无法完全固化&#xff0c;导致开裂。这可能是由于固化设备…

调试线上资源文件失效问题

之前的老项目&#xff0c;突然报红&#xff0c;为了定位问题&#xff0c;使用注入和文件替换的方式进行问题定位&#xff01; 1.使用注入 但是刷新后就没有了&#xff0c;不是特别好用&#xff01; const jqScript document.createElement(script); jqScript.src https://…

从入门到精通:Java三目运算符详细教程!

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

富格林:谨慎欺诈套路防止被骗

富格林指出&#xff0c;近些年来&#xff0c;在全球风险事件频发的背景下&#xff0c;黄金的避险价值得以凸显&#xff0c;越来越多投资者被黄金市场可观的收益所吸引&#xff0c;纷纷加入黄金市场参与投资交易。很多初次接触黄金的投资者比较关心的是普通投资者如何谨慎欺诈套…

x264 参考帧管理原理:b_ref_reorder 数组变量

b_ref_reorder变量 在x264编码器中,b_ref_reorder是一个布尔类型的数组,用于标识当前编码的切片是否需要对参考帧列表进行重排序。这个数组通常有两个元素,分别对应于两个参考帧列表:前向参考帧列表(list0)和后向参考帧列表(list1)。 以下是b_ref_reorder的一些关键点:…

探索 Linux 中的 Chronyc:一个用于配置和管理 Chrony 的实用工具

探索 Linux 中的 Chronyc&#xff1a;一个用于配置和管理 Chrony 的实用工具 在 Linux 系统中&#xff0c;时间同步是一个至关重要的功能&#xff0c;它确保了系统时间的准确性&#xff0c;对于各种网络服务和应用来说都至关重要。Chrony 是一个开源的时间同步工具&#xff0c…

SQLserver通过CLR调用TCP接口

一、SQLserver启用CLR 查看是否开启CRL&#xff0c;如果run_value1&#xff0c;则表示开启 EXEC sp_configure clr enabled; GO RECONFIGURE; GO如果未启用&#xff0c;则执行如下命令启用CLR sp_configure clr enabled, 1; GO RECONFIGURE; GO二、创建 CLR 程序集 创建新项…