码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Crypto(4)NewStarCTF 2023 week2 Crypto Rotate Xor


    题目代码:

    1. # 导入所需的库和从secret模块加载"flag"
    2. from secret import flag
    3. from os import urandom
    4. from pwn import xor
    5. from Cryptodome.Util.number import *
    6. # 生成两个随机的 64 位素数,分别存储在变量 k1 和 k2 中
    7. k1 = getPrime(64)
    8. k2 = getPrime(64)
    9. # 定义常量 ROUND,它的值为 12
    10. ROUND = 12
    11. # 使用 XOR 操作,将 "flag" 和 k1 的二进制表示进行异或运算,生成密文
    12. ciphertext = xor(flag, long_to_bytes(k1))
    13. # 定义一个左循环移位函数 round_rotate_left,用于在后续的加密中进行位操作
    14. def round_rotate_left(num, step):
    15. return ((num) << step | num >> (64 - step)) & 0xffffffffffffffff
    16. # 定义一个加密函数 encrypt_key,用于对密钥 k1 进行一系列的操作
    17. def encrypt_key(key):
    18. for _ in range(ROUND):
    19. # 将密钥 key 左循环移位 3 位,并与 k2 进行按位异或操作
    20. key = round_rotate_left(key, 3) ^ k2
    21. return key
    22. # 打印输出密文、经过加密的 k1,以及 k2 的值
    23. print('ciphertext =', ciphertext)
    24. print('enc_k1 =', encrypt_key(k1))
    25. print('k2 =', k2)

     这是一个简单的类似lfsr的循环补位 直接逆着rotate_right即可
    exp:

    1. # 导入所需的库
    2. from pwn import xor
    3. from Crypto.Util.number import *
    4. # 给出的密文
    5. ciphertext = b'\x8dSyy\xd2\xce\xe2\xd2\x98\x0fth\x9a\xc6\x8e\xbc\xde`zl\xc0\x85\xe0\xe4\xdfQlc'
    6. # 给出的经过加密的 k1 和 k2 的值
    7. enc_k1 = 7318833940520128665
    8. k2 = 9982833494309156947
    9. # 定义一个右循环移位函数 round_rotate_right,用于在后续的解密中进行位操作
    10. def round_rotate_right(num, step):
    11. return ((num) >> step | num << (64 - step)) & 0xffffffffffffffff
    12. # 迭代 12 次来解密密文
    13. for _ in range(12):
    14. # 对 enc_k1 进行反向位操作,首先是异或操作
    15. enc_k1 ^= k2
    16. # 然后进行右循环移位 3 位
    17. enc_k1 = round_rotate_right(enc_k1, 3)
    18. # 最终,对解密后的 enc_k1 和密文进行异或操作,还原原始的 "flag"
    19. original_flag = xor(long_to_bytes(enc_k1), ciphertext)
    20. # 输出还原的 "flag"
    21. print(original_flag)
    22. #flag{z3_s0lv3r_15_bri11i4nt}

     

  • 相关阅读:
    四川竹哲电子商务有限公司创造抖音电商新高度
    空投:实现去中心化、建立DAO的必经之路
    818专业课【考经】—《信号系统》之章节概要:第九章 系统的状态变量分析法
    基于 Keras 的图像分类器
    [附源码]计算机毕业设计JAVA新冠疫苗线上预约系统
    【愚公系列】2022年07月 Go教学课程 024-函数
    Ubuntu20.04安装Docker
    go多样化定时任务通用实现与封装
    0012Java程序设计-springboot基于微信小程序的校园智慧帮系统的设计与实现
    QT Sqlite 内存模式 简单读写
  • 原文地址:https://blog.csdn.net/m0_66039322/article/details/133941665
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号