谁能看看这是什么加密方式?一段被加密的 URL 参数

2022-11-09 09:08:40 +08:00
 momox

http://xxxx.com/post?data=Wm6Vh1V3Yy3Pzo%2fTYBhUxaUTUArUbSqrwzxIx%2f2mxAK1r8bi%2fOj2nOnq%2fUj%2fJCXE4GVqA70CEFGNC2jMcudEyA%3d%3d

其中 data 参数是加密过的 Wm6Vh1V3Yy3Pzo%2fTYBhUxaUTUArUbSqrwzxIx%2f2mxAK1r8bi%2fOj2nOnq%2fUj%2fJCXE4GVqA70CEFGNC2jMcudEyA%3d%3d

urldecode 后得到 Wm6Vh1V3Yy3Pzo/TYBhUxaUTUArUbSqrwzxIx/2mxAK1r8bi/Oj2nOnq/Uj/JCXE4GVqA70CEFGNC2jMcudEyA== 看起来像哈希

已知条件:

1.data 的格式猜测是 uid=761607&xxx=123&yyy=678 ( 761607 是确定的)

2.如果是同一个用户,则这段加密参数 urldecode 的前面不变的,后面会变动; Wm6Vh1V3Yy3Pzo/TYBhUxSo2nBTv/87yiu5bbpuf1Dvz3n3GEY6CdYGJZ4XaxLGhtXnvkRh3mkC53YhgQFADyw==

Wm6Vh1V3Yy3Pzo/TYBhUxaUTUArUbSqrwzxIx/2mxAK1r8bi/Oj2nOnq/Uj/JCXE4GVqA70CEFGNC2jMcudEyA==

Wm6Vh1V3Yy3Pzo/TYBhUxWXWOrHlajdHjBlrNOxbUfbmZ+7rWI0WpHuk8qC0osJfi6s/X0gNDriu/P7V7yJ9Zg==

3.这段加密参数肯定是可以在服务端解密,然后保存到数据库,所以是可逆加密算法

4.response 返回值:{"status":"ok","uid":761607,"xxx":39135736} xxx 为打码

看的出来是用什么方式加密吗?

3590 次点击
所在节点    程序员
24 条回复
ThirdFlame
2022-11-09 09:15:59 +08:00
base64 编码后的加密数据(长度 64 字节,符合现代密码学分组加密的规范)。 具体加密算法和密码 看是看不出来的。但是估计密钥和 iv 都没有变化过。
momox
2022-11-09 09:17:42 +08:00
@ThirdFlame 很有启发,感谢
Eiden
2022-11-09 09:21:50 +08:00
你还不如把网址发出来, 说不定谁摸鱼的有空给你看看 js, 猜哪能猜出来
swulling
2022-11-09 09:22:51 +08:00
反编译客户端,把密钥找出来
gollwang
2022-11-09 09:26:25 +08:00
自己去看 js ,前端一定存了密钥的,加密方式也在 js 里面
yolee599
2022-11-09 09:43:08 +08:00
把网址发出来大伙瞅瞅
janus77
2022-11-09 09:53:16 +08:00
做爬虫也要白嫖网友的点子是吧
Alias4ck
2022-11-09 09:56:26 +08:00
一眼 RSA 加密 不过你需要一个 public_key 大概率这个 key 它有一个 api 去生成
momox
2022-11-09 10:06:59 +08:00
是一个 Unity 游戏,不是普通 web+js
momox
2022-11-09 10:07:43 +08:00
@Alias4ck 获益匪浅
momox
2022-11-09 10:11:49 +08:00
@Alias4ck 如果是 RSA 加密,那基本很难搞,不知道秘钥的情况下
xkang66
2022-11-09 10:50:06 +08:00
根据已知条件 2:
1 、去除密文前不变字段无法 base64 解码,故不是拼接密文
2 、该加密不可能是 RSA ,RSA 每次加密密文都是变化的
3 、推断是对称算法,建议首先查看 AES
66beta
2022-11-09 11:05:45 +08:00
居然不是 https
fkdtz
2022-11-09 11:17:43 +08:00
@Alias4ck 这是从哪看出来是 RSA 加密的,文中提到同一用户加密结果中,前面是不变的,而 RSA 每次计算结果相差很多的吧
fkdtz
2022-11-09 11:20:55 +08:00
非对称加密貌似用在认证比较多,而在数据传输上用的比较少,因为性能不高。
猜测就是简单的对称加密,而且设置可能用的是最简单的 ECB 模式,因为明文不变的部分,密文也不变。
Alias4ck
2022-11-09 11:45:24 +08:00
@fkdtz 哈哈哈 我瞎猜的 因为之前碰到过类似的 加密 先是 RSA 再用 base64 套了一层 那个 js 套用的是这个库 jsencrypt( https://github.com/travist/jsencrypt)
所以就随口一说 具体情况得分析一下哈 原谅我的不专业捏
areless
2022-11-09 11:45:51 +08:00
这是通过后端密码混淆加密。前端不负责解密,只负责原封不动的返回后端。前面一样是因为要判断解密头,头不一致返回 false 。比如密文是 abcde ,密码是 123 ,加密后就是 a1b2c3d1e2 。混的是 ascii 码,加上偏移量***后就类似是 ab1cde2 这样,混入位置根据偏移量的,我经常用这种办法取代 https ,破解方法呢...呵呵
areless
2022-11-09 12:01:01 +08:00
上面方式还不能叫加密,只能算混淆。用其上原理密码偏移量 ascii 码做 xor 运算,最后 base64 编码。缺点就是加密后密文不变,不能抵御重放攻击,没有偏移量的话利用重放能...a 输入 密文是*** b 输入密文是***,那 ab 密文就是******了
dearmymy
2022-11-09 12:24:25 +08:00
你可以提示下这段包大概业务逻辑
通常发送量不大,但是重要情况下才会 rsa ,实际上一般公司都不会选择 rsa 。太麻烦。自己数据也没那么重要。
如果常规需要大量发包。aes 这种加密多些
你这种同一用户前面固定值,肯定不是 rsa 。
猜测
key+data ,解 data 的 key 就是前半部分。
你可以先试试重放攻击能成功不
这种解密不去逆向加密过程是不可能的
ultlu
2022-11-09 12:49:39 +08:00
标准化 base64 后做了 urlencode, base64 前是个 64 个字节的不可见字符。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/893748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX