吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 357|回复: 4
收起左侧

[求助] ezreCTF

[复制链接]
zishen 发表于 2023-12-22 22:54
本帖最后由 zishen 于 2023-12-22 22:59 编辑

今天遇到一个CTF题
from ctypes import *
from Crypto.Util.number import bytes_to_long
from Crypto.Util.number import long_to_bytes

def encrypt(v, k):
    v0 = c_uint32(v[0])
    v1 = c_uint32(v[1])
    sum1 = c_uint32(0)
    delta = 195935983
    for i in range(32):
        v0.value += (v1.value << 4 ^ v1.value >> 7) + v1.value ^ sum1.value + k[sum1.value & 3]
        sum1.value += delta
        v1.value += (v0.value << 4 ^ v0.value >> 7) + v0.value ^ sum1.value + k[sum1.value >> 9 & 3]
   
    return (v0.value, v1.value)

if __name__ == '__main__':
    flag = input('please input your flag:')
    k = [
        255,
        187,
        51,
        68]
    if len(flag) != 32:
        print('wrong!')
        exit(-1)
    a = []
    for i in range(0, 32, 8):
        v1 = bytes_to_long(bytes(flag[i:i + 4], 'ascii'))
        v2 = bytes_to_long(bytes(flag[i + 4:i + 8], 'ascii'))
        a += encrypt([
            v1,
            v2], k)
   
    enc = [
        0xEEC7D402L,
        0x99E9363FL,
        0x853BDE61L,
        558171287,
        0x908F94B0L,
        1715140098,
        986348143,
        1948615354]
    for i in range(8):
        if enc != a:
            print('wrong!')
            exit(-1)
    print('flag is flag{%s}' % flag)

根据这个python代码逆向写出脚本,自己没写出来,看别人的:
image.png
是这样的
image.png 但是这点很懵,这点还原不是很理解,为什么 要 >>24、16、8 为什么要 ^0xFF ?
wp链接:https://blog.csdn.net/shenkong_/article/details/127359568
请大佬解答!!!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

solly 发表于 2023-12-23 11:17
本帖最后由 solly 于 2023-12-23 11:25 编辑

>>24、16、8 ,是交换顺序,因为后面按字符输出,而整数在内存中是小端保存,顺序是反的,所以输出前反序一下。至于那个 ^FF000000,没什么用,因为u_int 右移24,16,8位后,最高位至少8bits是0,虽然^FF000000后前面8bits又变成了FF,但后面进行了类型转换成 char 了,前面24bits都丢掉了,所以不影响结果。你把 ^FF000000 去掉后,输出结果不会有变化。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zishen + 1 + 1 谢谢@Thanks!

查看全部评分

Light紫星 发表于 2023-12-23 00:06
^0xff后只取ff遮盖的那些位,其他位忽略了

点评

^ FF 操作不是遮蔽,& 才是。^FF是反转。  发表于 2023-12-23 11:24
xixicoco 发表于 2023-12-23 02:20
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 17:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表