V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnwtex
V2EX  ›  程序员

[来试试] 如果给你源码和数据,你是否能破解出密码?

  •  
  •   cnwtex · 2017-02-12 17:48:38 +08:00 · 4391 次点击
    这是一个创建于 2841 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果给你源码,和网站数据库,你是否能破解出来密码?

    都是数字弱密码。

    http://www.etherdream.com/webscrypt/example/login/

    破解之后有红包拿,来试试吧

    源码在这里: https://github.com/EtherDream/WebScrypt/tree/master/example/login

    22 条回复    2017-02-19 14:12:17 +08:00
    cnwtex
        1
    cnwtex  
    OP
       2017-02-12 17:50:13 +08:00
    作者是前端安全专家 @EtherDream
    http://weibo.com/etherdream
    helloccav
        2
    helloccav  
       2017-02-12 18:16:55 +08:00
    人肉穷举出了最简单的那个,然而很久没用支付宝,不知道口令红包怎么用,留给下位朋友吧,谢谢楼主了.
    ipconfiger
        3
    ipconfiger  
       2017-02-12 18:19:30 +08:00
    给你 sha256 的源码, 除了穷举, 还有别的办法?
    如果数字弱密码, 不要源码也能穷举, 拿源码出来干嘛?
    毫无意义
    em70
        4
    em70  
       2017-02-12 18:22:00 +08:00
    都知道算法了,用字典计算后去撞库就行了,体力活,谁有空谁弄去
    ic3z
        5
    ic3z  
       2017-02-12 18:47:13 +08:00 via Android
    向大佬学习😊
    cnwtex
        6
    cnwtex  
    OP
       2017-02-12 19:24:21 +08:00 via iPhone
    @ipconfiger 这个的意义在于前端防穷举。
    @em70 前端提高运算量,防穷举,工程意义大过学术意义,没看懂就瞎嘚瑟
    loading
        7
    loading  
       2017-02-12 20:12:23 +08:00 via Android
    前端运算,目测是先对密码算一下 hash 这样然后再发送到后端?

    前端都暴露出来了,毫无意义。
    blackanger
        8
    blackanger  
       2017-02-12 20:56:35 +08:00
    重点在于前端那个 dkHex
    blackanger
        9
    blackanger  
       2017-02-12 21:14:17 +08:00
    大思路虽然是穷举,但是重点是前端的加密,就像 @cnwtex 说的,前端提高运算量,防穷举,这个需要仔细研究下源码里的算法了:

    var dkHex: String = bytesToHex(CModule.ram, mDkPtr, mDkLen);

    bytesToHex 函数及其三个参数的意义,模拟一个算法,得到 dkHex ,后面的就简单了,加盐比对 sha256 加密密码,穷举。
    blackanger
        10
    blackanger  
       2017-02-12 21:15:56 +08:00
    前端生成一个 dk 的时间,大概是 1 秒:

    time: 1089
    main.js:21 dk: e3ed2afeb0be3bc5f4ddee429a367f99417ac99a40039de1e5bf39ab498627c4
    shiny
        11
    shiny  
       2017-02-12 21:42:40 +08:00
    写了一个简单的 node 穷举程序,还是非常费运算量的。如果 CPU 核心多点并发跑,跑这个题目还是容易的;但如果密码再复杂点就费劲了。
    l1093178
        12
    l1093178  
       2017-02-12 22:49:05 +08:00
    有点意思,不过最大的意义其实就是把服务器端跑 Scrypt 的消耗丢给了客户端。
    cnwtex
        13
    cnwtex  
    OP
       2017-02-12 23:20:05 +08:00
    @shiny 这个很适合用在网站上,但是貌似手机支持不太友好,可以测试。
    @blackanger 以消耗合适的 cpu 运算来认证前端工作,还能起到验证码的作用。
    @l1093178 正解,如果网站用上,除了防穷举,还能防机器登录(消耗运算增加机器人工作)。

    @loading 意义需要自己理解。
    ihuotui
        14
    ihuotui  
       2017-02-13 00:43:31 +08:00 via iPhone
    我需要你的密码明文吗?我只需要你传送什么给后台就可以了。
    zzNucker
        15
    zzNucker  
       2017-02-13 00:46:00 +08:00
    发现钓出来好几个脑子都不动就在吹逼的,哈哈哈哈
    ryd994
        16
    ryd994  
       2017-02-13 02:24:51 +08:00 via Android
    这个想法其实不错的。利用 proff of work 来验证客户端的“诚意”
    只是老有半桶水程序员想拿这个代替 HTTPS
    这是用来做验证码的,不是用来做加密的
    arron
        17
    arron  
       2017-02-13 11:08:39 +08:00
    程序已经上了 asm ,算法速度也不好优化了, 6 位数单核跑得几天时间。
    shiny
        18
    shiny  
       2017-02-13 18:30:10 +08:00   ❤️ 1
    一个简单的 node 穷举程序: https://github.com/shiny/WebScrypt-Crack-Example
    4 位没多久就跑出来了。跑 6 位就太不环保了。
    cnwtex
        19
    cnwtex  
    OP
       2017-02-13 20:10:34 +08:00
    @shiny 赞~然而没什么用哈哈哈哈
    zjcqoo
        20
    zjcqoo  
       2017-02-14 11:08:15 +08:00   ❤️ 2
    这个代码是我写的,哈哈:) 看到 @shiny 破解代码里的链接发现这个帖。。。

    其实拖库后暴力破密码原理都是一样的。不过这个项目的意义就是把 PBKDF 的计算放到浏览器里,节省服务器成本而已。

    另外对于在线撞库,每猜一次密码浏览器都得计算 PBKDF ,很耗资源,所以可以通过 CPU 资源限制攻击频率。
    cnwtex
        21
    cnwtex  
    OP
       2017-02-14 15:51:05 +08:00
    @zjcqoo 惊现原作者~~
    mingyun
        22
    mingyun  
       2017-02-19 14:12:17 +08:00
    会玩
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2159 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:18 · PVG 09:18 · LAX 17:18 · JFK 20:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.