记一个爬虫加密网站算法的解密

网站就不发了具体过程呢: 通过阅读晦涩无比的代码发现它使用的是AES+gzip压缩实现的加密

首先加密数据是17WSPeYwQFufy74vaYJ4=base64的超长字符串 首先用base64解码 我们把加密的base64复制到本地txt 然后呢 通过base64解码
bin = open("123.txt", "rb").read()输入图片说明 base = base64.decodestring(bin) print base[0:10] 输出:eᆬᄡ^_àjᄍ@ð

  • 这样似乎说明不了什么然后呢我们查看js代码发现他是AES加密的那么我们要把base64解码的数据拿到aes去解密
  • 一般来说参数很容易找出来
  • 如果是一般网站 aes解密后就可看到源码
  • 但是此网站解密出来依然是乱码
  • 到此处整个分析陷入僵局
  • 然后通过查看js的aes算法发现他在计算完毕之后加载了一个奇怪的库通过调用这个库的某个接口转换返回的数据
  • 然后着手对这个库分析发现这个库使用的算法很像是gzip的压缩算法,于是使用了py的zlib库进行最后的解压
  • 确实有数据出来但是依然是乱码,于是我开始排除py 使用c#重写了解密过程发现
  • 原来是py的aes解密库有问题 他不能直接操作byte[]进行解密所以导致揭秘出来的数据乱码
  • 然后因为对方只会py 采取了折中的办法 使用c#写了一个aes解密com组件注册到系统使用py的comtypesku进行com调用完美的解决此网站解密过程

c#的aes解密code:

        private string Decrypt(string toDecrypt)
        {
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes("61581af471b166682a37efe6");
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            rDel.IV = UTF8Encoding.UTF8.GetBytes("c8f203fca312aaab");
            rDel.Mode = CipherMode.CFB;
            rDel.Padding = PaddingMode.None;
            ICryptoTransform cTransform = rDel.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            string a = Convert.ToBase64String(resultArray);
            return a;
        }

py的代码

#!/usr/bin/python

-- coding: utf-8 --

import sys import zlib import base64 import comtypes.client as cc import json

factory = cc.CreateObject("ComToPython.AES") bin = open("123.txt", "rb").read() date = factory.Aes(bin) base = base64.decodestring(date) text = zlib.decompress(base) jsonx = json.loads(text) print jsonx["text"]

输入图片说明

转载于:https://my.oschina.net/KFS/blog/1593852

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值