简单逆向14(RAS)

35 篇文章 5 订阅

诺莫14

开始:

放入Exeinfo:

在这里插入图片描述
ELF文件

放入IDA:

在这里插入图片描述
sub_96A(&v8, (__int64)&v9);
将输入的字符串中的每个字符的ascii码转成两位16进制,存储到v9字符串中
,所以也就知道了为什么后文要使用函数将字符串转成16进制的数据

有两个函数不懂
__gmpz_init_set_str
__gmpz_powm
查阅了相关资料如下:

__gmpz_init_set_str 
int mpz_init_set_str (mpz_t rop, const char *str, int base) [Function]
Initialize rop and set its value like mpz_set_str
 
int mpz_set_str (mpz_t rop, const char *str, int base) [Function]
Set the value of rop from str, a null-terminated C string in base base. White space is allowed
in the string, and is simply ignored.

两个函数都一样,大概就是str以base进制的形式写入rop,简而言之,字符串转相应进制的数

void mpz_powm (mpz_t rop, const mpz_t base, const mpz_t exp, const mpz_t mod) [Function]
Set rop to base^exp mod mod.

就是RAS加密

这里介绍几个工具

1.python库:gmpy2

行为invert可以计算D
行为powmod可以计算明文

使用方法:
gmpy2.invert(e,(q-1)*(p-1))
gmpy2.powmod(c,d,n)

2.分解N的网站:

http://www.factordb.com/index.php?query=103461035900816914121390101299049044413950405173712170434161686539878160984549

3.分解N的软件

https://sourceforge.net/projects/yafu/
双击yafu-x64.exe
控制台输入:

factor(103461035900816914121390101299049044413950405173712170434161686539878160984549)

等待
在这里插入图片描述

4.ASR工具箱子(可以计算D,分解N很jizhu)

RSA-tool

使用方法:https://blog.csdn.net/qq_42777804/article/details/99578263
在这里插入图片描述

5.binascii

见后文

解密:

利用工具计算出q,p使用python写出脚本:

import gmpy2
import binascii

c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35
n = 103461035900816914121390101299049044413950405173712170434161686539878160984549
e = 65537
q = 282164587459512124844245113950593348271
p = 366669102002966856876605669837014229419
d = gmpy2.invert(e,(q-1)*(p-1))#invert倒转
x = gmpy2.powmod(c,d,n)

print("%x"%x)
print(binascii.unhexlify(hex(x)[2:])) #unhexlify可以将16进制目标转换为字符串

当然,如果不用binascii也行,将输出的数据两个两个组合,转换为一个字符然后链接,但实际操作有一定的坑:eval不能识别没有0x的16进制等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I Am Rex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值