分析逆向案例十三——拍拍贷登录密码逆向和JS原型链

网址:拍拍贷

登陆页面,找登陆包,密码和用户名都进行了加密。

直接参数搜索 ,一眼下面的第二条,直接点击进入

加密位置打上断点分析,一个加密嵌套另一个加密。

中间的e.md5好像是md5加密,打印一下看看

 

现在都记住了,这就是小写的md5加密。好了,解决了一个,进入encrypt函数。发现是一个原型链函数,打上断点分析。

 

发现里面还嵌套一个函数this.getKey().encrypt(t),经过这个函数后,再经过u函数就得到了加密结果。

 

进入this.getKey().encrypt(t)这个函数,打上断点,发现返回所需要的值。

 

再进入u函数,打上断点:

 

 r就是返回的结果。

综合来说,就是先对密码进行md5加密,在进行 this.getKey().encrypt(t)加密,最后再经过u函数加密。但是不能直接扣函数,这些函数里面调用了其他的模块,整个部分都在一个自执行函数内部,有谁能教教我怎么扣代码吗?

在 JavaScript 中,原型(prototype)是一个对象,用于在所有实例对象之间共享属性和方法。每个 JavaScript 对象(除了一些特殊对象)都有一个原型对象,通过该原型对象,其他对象可以继承属性和方法。

1. 原型链

JavaScript 中的原型链是一种继承机制,通过它可以在对象之间共享属性和方法。当访问对象的属性或方法时,如果该对象上没有找到,会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的顶端(即 null)。

2. 使用原型的好处

  • 共享方法:使用原型可以让所有实例对象共享方法,从而节省内存。例如,所有 Person 实例对象可以共享 sayHello 方法,而不是每个实例都创建自己的 sayHello 方法。
  • 动态添加属性和方法:可以在运行时动态地向构造函数的原型添加新的属性和方法。

3. 例子

下面是一个简单的例子,演示了如何使用原型来共享方法:

// 定义一个构造函数
function Person(name, age) {
    this.name = name;
    this.age = age;
}

// 使用原型添加方法
Person.prototype.sayHello = function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};

// 创建实例
const alice = new Person('Alice', 30);
const bob = new Person('Bob', 25);

// 调用共享的方法
alice.sayHello(); // 输出:Hello, my name is Alice and I am 30 years old.
bob.sayHello(); // 输出:Hello, my name is Bob and I am 25 years old.

拍拍微服务rpc框架源码.zip # 拍拍微服务体系 拍拍微服务体系是拍拍基础框架部总结内部微服务多年实践,参考、吸收大量业内解决方案形成的适合中型互联网公司的微服务解决方案。 拍拍微服务体系主要组成部分: - Raptor rpc框架。 - Radar服务注册中心。 - Kong网关。 微服务实例启动之后,会自动注册到radar服务注册中心,实例启动正常后,kong网关周期性的将实例信息同步到kong的插件配置。微服务之间的调用、zuul网关调用微服务,都是通过域名进行调用,域名解析到kong网关。Kong网关根据域名和微服务的对应关系,对微服务实例进行负载均衡运算后,得到一个实例,最终进行调用。 拍拍微服务体系主要架构考虑: - 由Kong网关形成的集中式服务治理。降低由于客户端服务治理bugfix等引起的升级成本。 - 采用HTTP 1.1作为底层传输协议,从外部到内部无需进行协议转换。 - 采用HTTP 1.1 作为底层传输协议,不会引起原有基于HTTP协议的已有设施失效。 # Raptor微服务rpc组件 Raptor微服务rpc组件是拍拍基础框架部参考、借鉴了大量已有rpc框架、rpc组件的设计,研发的一款基于google protobuf的轻量级,可扩展的rpc组件。 **Raptor设计理念:** - 微内核。Raptor核心实现raptor rpc必须的服务定义、protobuf序列化/反序列化、扩展接口和最小化实现。 - 可扩展。Raptor核心预留了Client、Endpoint等可扩展接口,提供相应的实现即可替换掉默认的实现。 - 模块化。Raptor核心不提供组装能力,raptor核心提供了rpc框架所需的核心组件,由外部框架进行组装。例如,raptor默认实现提供了基于spring-boot的组装方式。 **Raptor的价值:** - 契约驱动开发模式,以protobuf为契约,帮助企业规模化生产。 - JAVA语言开发,工程性好,保护原有技术投资。 - 预留兼容性,以protobuf为契约,符合社区技术趋势,为后续以protobuf为基础做技术升级留下兼容性。例如,引入grpc,业务契约无需改变。 - 灵活性,可采用集中治理,也可以采用客户端治理;可使用protobuf binary over HTTP也可以使用protobuf json over HTTP,服务提供方根据HTTP头自适应;为架构师留下灵活的选择余地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力学习各种软件

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

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

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

打赏作者

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

抵扣说明:

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

余额充值