大佬们来试试我的前端加密强度

2023-08-23 19:31:31 +08:00
 tmtstudio

看到大家在讨论前端的加密问题,就把我现在用的加密方案做了个 demo ,大佬们看看能破掉吗,要是能给点建议就更好了。

http://34.16.118.34,怕被大手子 gank 没用 cdn 第一次打开有点慢

12777 次点击
所在节点    程序员
94 条回复
tmtstudio
2023-08-24 10:10:33 +08:00
@NoobNoob030 #40 吸收了上面大佬的建议
tmtstudio
2023-08-24 10:11:21 +08:00
@jsonfork #37 老项目了,现在陆续往 easyswoole 上挪了
lasuar
2023-08-24 10:38:23 +08:00
你这两个接口也没传 text 参数
webbillion
2023-08-24 10:39:49 +08:00
请问 op 是怎么做到可以关闭标签页的,我看了下代码,确实是和 10 楼说的一样,但是我复制到自己的网页里调用时却没办法关闭网页(无论是通过链接打开新窗口还是直接输入地址)。是需要什么前置条件吗?
linshenqi
2023-08-24 10:43:13 +08:00
各种监听是吧
frandy
2023-08-24 10:47:23 +08:00
@webbillion #44 36 楼已经给出了库了,我在我的项目里实验有效,https://readmagic.github.io
webbillion
2023-08-24 11:20:00 +08:00
@frandy #46 https://github1s.com/theajack/disable-devtool/blob/master/src/utils/close-window.ts#L18-L22 这个么,确实你给出的网站和 op 给出的网址都是可以生效的,我将你这句回复里 a 标签的 href 替换为本地开发地址,再点击按钮触发这个函数,是没有反应的,也不会报 Scripts may close only the windows that were opened by them. 的错。可能还有什么隐藏机制吧,试了下纯 html 是可以的,可能我用的业务框架有做一些拦截处理。
lisxour
2023-08-24 11:29:42 +08:00
@shuxhan 把开发者工具调成单独弹窗就行了,这大概率是检测窗口大小的
lisxour
2023-08-24 11:33:27 +08:00
@tmtstudio #30 这些骚方法其实并没有什么用。。。
huihushijie1996
2023-08-24 11:37:52 +08:00
控制台直接把方法重写了可以停止关闭
function clear(){
var num = 1000000;
for(var i = 0;i<num;i++){
clearInterval(i);
clearTimeout(i);
cancelAnimationFrame(i)
}
}
window.close = function(){}
clear()
然后打上 debug 就可以调试了
然后搜索 http 就找到了
其实楼主可以把 请求地址加密用一个简单的异或加密
function or(str){
var endstr = ""
var code = 15 //可以随便取一个数字
for(var i =0;i<str.length;i++){
endstr+=String.fromCharCode((str[i].charCodeAt(0))^code)
}
return endstr
}
这样搜索就搜不到了 但是调出控制台了 还是可以在请求里面看到
抓包工具也能看到
lisxour
2023-08-24 11:39:26 +08:00
@monkeyWie 现在谁还用 flash 做交互啊,网页分分钟报错,现在的前端加密方案已经很成熟了,你随便用一个付费的,比如 Jscrambler ,就足以让 90%的人止步。
lisxour
2023-08-24 11:41:04 +08:00
@monkeyWie 就算想走本地代码,也是优先考虑 wasm 啊
DreamingCTW
2023-08-24 11:53:48 +08:00
我之前也写过打开控制台就跳转网页,确实好用。
AhECbt
2023-08-24 13:40:19 +08:00
应该跟 /t/927165 一样,什么前端加密就是掩耳盗铃,我劫持所有原生函数你跳吧。
phpfpm
2023-08-24 13:46:37 +08:00
整挺好,加密的挺好的,但是你这么搞你家的产品我就不用了。抬走换下一个。
ZeroDu
2023-08-24 13:54:21 +08:00
op 是改了吧,我这边控制台打开 网页就关了
xz410236056
2023-08-24 13:55:38 +08:00
@tmtstudio #30 先打开页面让你加载,加载好了再禁用 JS
monkeyWie
2023-08-24 14:06:26 +08:00
@lisxour #52 所以我说的是以前啊
42is42is42
2023-08-24 14:12:04 +08:00
Al0rid4l
2023-08-24 14:17:11 +08:00
先 BurpSuite 拦截响应, 在 chunk-vendors-xxx.js 里面找到 ondevtoolopen 对应的函数, 通常就在这个对象前面一点, 函数体有 setTimeout 和 timeOutUrl 这两个关键字, 修改此函数为空函数(没仔细看具体内容, 大概是反调试相关的)后放行响应, 干掉反调试, 后面可以比较愉快地调试了

反调试用的是 https://github.com/theajack/disable-devtool 这个库

在 page-index-xxxx.js 下的 onLoad 周期下调用了 this.$u.request 发起请求, 里面调用了另一个模块的 getParams({}) 来构造请求参数, 可以直接在这里给对象加入 text:'v2ex', 也可以在 getParams 里面断点, 在 aesEncrypt 加密之前修改对象, 参数 param 由 aesEncrypt 函数加密一个类似 {"h5Version":1,"public":1692855534,"private":"05b035bf90fee199b4114b97ee277571", "text": "v2ex"} 的 JSON 得到

混淆是在每个文件开头或结尾有两个函数, 一个构造各种变量名和属性名的词典, 一个从词典中取值, 对于感兴趣的关键字直接到这两个函数里面找, 然后条件断点即可, 有些关键词不在词典中而是直接作为字符串没有混淆

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

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

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

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

© 2021 V2EX