唯棉坜 发表于 2025-6-8 22:08:42

UCSC-WP&复现reverse

UCSC-WP&复现reverse

easy_re-ucsc

main函数
v7 = 10;
strcpy(Str, "n=<;:h2<'?8:?'9hl9'h:l>'2>>2>hk=>;:?");
for ( i = 0; i < strlen(Str); ++i )
    Str1 = xor(v7, Str);
Str1 = 0;
printf(Format);
scanf("%s", Str2);
if ( !strcmp(Str1, Str2) )
    puts("win,TQLLLLLLL!!!");
else
    puts("sorry,this is not flag");
return 0;脚本
Str = "n=<;:h2<'?8:?'9hl9'h:l>'2>>2>hk=>;:?"
v7 = 10
Str1 = ''.join()
print(Str1)EZ_debug-ucsc

mian函数:
strcpy(Str, "UCSC");//key
v5 = 0x89B83EC0E7A3CF8i64;
v5 = 0x3F0EA83858C85F6Ai64;
v5 = 0xAB8A1E39811B5F22ui64;
v5 = 0x649F307A6475E9B1i64;
v6 = 0xAB7BBD90;//v5和v6是密文
v8 = 36;
v3 = strlen(Str);
rc4_init(Str, v3);
rc4_crypt(v5, v8);
return 0;脚本
import structdef rc4_decrypt(ciphertext_hex, key):    ciphertext = bytes.fromhex(ciphertext_hex)    s = list(range(256))    j = 0    key_bytes = key.encode('ascii')    # KSA    for i in range(256):      j = (j + s + key_bytes) % 256      s, s = s, s    # PRGA    i = j = 0    plaintext = []    for byte in ciphertext:      i = (i + 1) % 256      j = (j + s) % 256      s, s = s, s      k = s[(s + s) % 256]      plaintext.append(byte ^ k)    return bytes(plaintext)# 构造密文cipher_qwords = [    0x089B83EC0E7A3CF8,    0x3F0EA83858C85F6A,    0xAB8A1E39811B5F22,    0x649F307A6475E9B1,    0xAB7BBD90]cipher_bytes = b''.join(struct.pack("
页: [1]
查看完整版本: UCSC-WP&复现reverse