• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cnwtex
V2EX  ›  程序员

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

  •  
  •   cnwtex · Feb 12, 2017 · 5715 views
    This topic created in 3554 days ago, the information mentioned may be changed or developed.

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

    都是数字弱密码。

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

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

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

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

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

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

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

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

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

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

    另外对于在线撞库,每猜一次密码浏览器都得计算 PBKDF ,很耗资源,所以可以通过 CPU 资源限制攻击频率。
    cnwtex
    cnwtex
    OP
    Feb 14, 2017
    21
    @zjcqoo 惊现原作者~~
    mingyun
    mingyun
    Feb 19, 2017
    22
    会玩
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2034 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 14:51 · PVG 22:51 · LAX 06:51 · JFK 09:51
    ♥ Do have faith in what you're doing.