算法还原之SHA1
一 sha1算法原理SHA1算法是Hash算法的一种。SHA1算法的最大输入长度小于2^64比特的消息,输入消息(明文)以512比特的分组为单位处理,输出160比特的消息摘要(密文)
整个算法的核心是一个包含4轮循环的模块,每轮循环由20个步骤组成。
具体实现步骤如下:
1 附加填充位消息必须进行填充,以使其长度在对512取模以后的余数是448。也就是说,(填充后的消息长度)%512 = 448。即使长度已经满足对512取模后余数是448,填充也必须要进行。填充的规则是填充一个“1”和若干个“0”使其长度模512和448同余。然后附加64比特的无符号整数,其值为原始消息的长度(这块和MD5是一样的)
2 附加长度信息后面的64比特位,用来填充长度信息,长度单位为比特。(这块和MD5一样)
3 信息分组处理经过添加位数处理的明文,其长度正好为512位的整数倍,然后按512位的长度进行分组,可以得到一定数量的明文分组,这块可以用Y0,Y1,Y2,…,YN-1来表示,对于每一个分组,进行处理。(这块和MD5一样)
而对于每个512位的明文分组,SHA1将其再分成16个更小的明文 ...
算法还原之MD5
哈希算法—MD5介绍
算法的输入:任意长度的明文消息
算法输出:128比特长,或者说32个十六进制数的消息摘要
MD5的应用场景1、数据完整性校验:MD5算法常用于验证数据的完整性。在数据传输过程中,发送方可以计算数据的MD5哈希值将其发送给接收方。接收方收到数据后,再次计算哈希值并与发送方提供的哈希值进行比较。如果两者匹配,则说明数据在传输过程中没有被篡改。
2、密码存储:MD5算法也常用于密码存储。将用户的密码通过MD5哈希后存储到数据库中,即时数据库被泄露,攻击者也无法直接获取用户的明文你密码。然而,由于MD5算法存在已知的安全漏洞(如彩虹表攻击和碰撞攻击),现在已不推荐使用MD5来存储密码。更安全的做法是使用加盐哈希(如bcrypt或Argon2)。
MD5算法原理MD5算法的实现,可以分为以下4个步骤:
MD5算法的整体流程如上图所示,主要分为4步:处理原文、设置初始值、循环加工、拼接结果。
(一)处理原文处理原文就是一个关键词:补位,此处的补位有两个地方需要补。那具体怎么补位呢?
1、填充。如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充 ...
算法还原之RC4
一 简介一次一密对称加密算法:使用最广泛的流密码就是RC4
优点:密钥随机产生,只使用一次;无条件安全、加解密位加法运算效率高
缺点:要求密钥至少与明文一样长,密钥共享困难
流密码(序列密码)
流密码基本思想:
密钥流发生器f产生zi=f(k,σ \sigmaσi),即种子密钥k产生密钥流z=z0z1z2…
加密y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…
有内部记忆原件的为流密码,否则分组密码
内部记忆原件状态σ \sigmaσi独立于明文的称同步流密码,否则自同步流密码
同步流密码加密器=滚动密钥生成器+加密变换器
二元加法流密码,加密变换yi=zi⨁ \bigoplus⨁xi
一次一密是加法流密码原型,若zi=ki,则加法流密码就退化成一次一密
密钥流序列性质:极大的周期、良好的统计特性、抗线性分析、抗统计分析
一次一密的密钥长度和明文一样长,流密码不是,需要种子密钥通过密钥生成器产生密钥流
二 RC4算法原理介绍首先,RC4算法所依赖的最根本原理是:对明文使用同一个密钥异或两 ...
小程序数字信封算法分析
一 简介正常访问目标小程序,抓包,发现请求参数和返回包都是加密的
这种情况下肯定没法进一步测试的,这块可以小程序反编译看看了。
二 加解密逻辑1、使用unveilr反编译后,微信开发者工具打开:
直接打开时这种乱码的,可读性太差了。
可以使用在线JS美化工具( https://coding.tools/cn/javascript-beautifier ),将代码格式化下,这样读起来就方便多了。
2、观察数据包,会发现在请求和响应中有2个参数:“akey”和“data”:
3、直接在代码中全局检索一下关键字 “akey”:
4、可以看到和关键字关联的4个函数:
encodeAES_ECB
decodeAES_ECB
encodeRSA_module
decodeRSA_module
var u = { getRandomStr: function(t) { for (var e = [], n = 0; n < t; n++) { var r = Math.floor(26 * ...
应急演练勒索样本参考
一 简介勒索病毒(Ransomware)确实是一种常见的网络攻击手段,它会通过加密受害者电脑上的数据来瘫痪受害者的系统,并以此勒索赎金。这种恶意软件的攻击对象可以是个人用户,也可以是企业、政府机构等。一旦数据被加密,除非支付赎金以获取解密密钥,否则这些数据将无法被正常访问。
随着互联网技术的发展和网络环境的日益复杂,网络安全问题越来越受到重视。不仅公司,包括政府和个人用户都在增强网络安全意识,采取各种措施来预防和应对勒索病毒等网络威胁。应急演练就经常遇到的一种,模拟真实的攻击场景,让团队成员在实际操作中应用应急预案,检验应对能力。
二 Python实现简易勒索病毒生成用于加解密的公私钥生成1024位 RSA公私钥 并保存为.pem,先在本地生成,将生成的公钥和加密程序一起打包发送给受害者即可
import rsa # 生产1024位公私钥并保存为.pem 先在本地生成,将生成的公钥和加密程序一起打包发送到受害者即可pub, priv = rsa.newkeys(1024)pub = pub.save_pkcs1()with open(f"./keys/pubkey.pe ...
绕过图片验证码实现短信轰炸
一、前言图片验证码是一种常见的安全验证方式,广泛应用于网站、APP等场景,用于区分人类用户和恶意机器人。然而,由于设计或实现上的缺陷,图片验证码可能存在一些问题,导致短信轰炸漏洞的发生。
常见的图片验证码的问题,一般以下几种:
1、图片验证码前端生成&前端校验:通俗理解,就是调用前端JS中的函数生成一个验证码,那自然人工输入的验证码校验也是在前端完成的,这种没啥用,形同虚设。
2、图片验证码不失效:也就是服务端返回验证码之后,只要不再次请求,就一直可以使用,这也是好多年之前的系统常见的验证码漏洞。
3、验证码可识别:这玩意就比较鸡肋了,主要也是借用一些第三方的ocr做识别,比较好用的就是Python的第三方库—ddddocr了。
二、案例一简单介绍某金融站点首页,通过短信验证码登录,在点击发送短信的时候,会弹出图片验证码:
成功输入图片验证码后,会向手机号发送短信验证码,具体数据包如下:
参数分析
对比上图,共有5个参数:
mobile_tel:13888888888image_code:5321signature_data:M3IC7p1kH5bMMebP ...
算法还原之base64
基础概念加密与解密的关系
加密:是将原始的、可读的信息(明文)转换为另一种形式(密文)的过程,这样就可以防止未授权的访问。加密算法和密钥用于这一转换过程。加密的目的是确保信息的机密性,即使密文在传输或存储过程中被截获,没有正确的密钥也无法理解其内容。
解密:是加密的逆过程,它将密文转换回原始的明文。只有拥有正确密钥的人才能解密信息并获取原始内容。
加密和解密的关系可以概括为以下几点:
互为逆过程:加密和解密使用相同类型的算法,但执行相反的操作。加密算法设计时必须确保可以逆向操作,以便解密。
密钥的使用:加密和解密通常依赖于密钥。在加密过程中使用密钥生成密文,在解密过程中使用相同的密钥从密文恢复明文。密钥的安全管理是加密系统能否有效工作的关键。
安全性:加密系统的设计目标是确保即使攻击者知道加密算法,也无法在没有密钥的情况下解密信息。因此,加密算法通常是公开的,而密钥则必须保密。
应用场景:加密和解密广泛应用于多种场景,如网络安全中的数据传输、数据存储、数字签名等,以确保信息的保密性、完整性和可用性。
在现代密码学中,加密和解密算法多种多样,包括对称加密(如AES)、非对称加密 ...
海南航空hnsign逆向
一、逆向目标
目标:海南航空hnsign逆向
链接:https://m.hnair.com/#/login?_k=oepcby
简介:签名算法:通常签名有一个对象组合的操作,字符串拼接的操作,然后再对这个对象属性或字符串进行一个排序,组合的代码,看不懂,最方便的方式调试,拿到它组合后的结果。
二、逆向参数跟进这个加密函数中,可以发现依旧是webpack:
a.default._makeSign(null, c, p, null, n)
找到定义对象 “a” 的地方,向上翻,找到如下代码:
a = E(n(38195))
1、扣取启动器正常方法,在函数 n 处,下断点,定位到启动器位置:
改写后,启动器如下:(和前面password的一样)
var _b!function(n) { var c = {}; function b(e) { var s = c[e]; if (void 0 !== s) return s.exports; var i ...
海南航空Desc补环境
一、逆向目标
目标:海南航空Desc补环境初探
链接:https://m.hnair.com/#/login?_k=oepcby
简介:浏览器指纹,补环境初探
二、逆向参数1、定位desc加密位置搜索关键字 “desc=”,有两处位置,都打上断点,成功定位到了加密位置:
可以看到这块的 U 就是加密后的 desc
var u = function() { try { return (new born).getCiphertext() } catch (e) { return null } }();
return (new born).getCiphertext()
2、加密函数分析1)跟进定义的对象 born 中, ...
海南航空登录逆向webpack
一、逆向目标
目标:海南航空登录逆向webpack
链接:https://m.hnair.com/#/login?_k=oepcby
简介:逆向登录密码password(webpack加密)
二、逆向参数1、定位加密位置打XHR断点,向上跟栈,找到pin密码字段加密处:
也可以全局搜索关键字 “pin” 定位到函数所在的位置
2、逆向加密函数encryptedStringpin: i.default.encryptedString(t)
encryptedString: function(e) { try { var t = e; (new Date).getTime(); return t = window.isNative ? _.default.encryptedString(e) : m.default.encryptedString(e), (new Dat ...