代码之家  ›  专栏  ›  技术社区  ›  Chathuranga Chandrasekara

密码显示程序是如何工作的?

  •  4
  • Chathuranga Chandrasekara  · 技术社区  · 15 年前

    我看过一些密码泄露软件。他们中的大多数都有一个像射击指针一样的指针,你只需指向密码文本框,软件就会显示密码。

    但受保护的软件和显示软件仍然没有相互连接。它们是在同一主机上运行的独立进程。

    我的问题是,

    1. 一个进程如何访问另一个软件的信息?
    2. 它的局限性是什么?
    3. 我可以用什么方法来预防这种情况?

    编辑 :是的,使用虚拟数据保存密码是最常用的解决方案。但同样的理论也可以应用到其他案件中,对吧?例如,一个外部程序可以读取你的电子邮件,一个间谍程序可以记录你的活动等等,甚至我们还可以实现一些很酷的功能,比如对ie到mozilla的拖放支持:)

    所以在这种情况下 解决办法就是“封锁” 机制。有什么办法吗?(避免访问流程的资源???)

    4 回复  |  直到 15 年前
        1
  •  2
  •   Diadistis    15 年前

    正如silky所说,这只是发送windows消息的问题,有一个非常简单的 source 一次显示所有密码字段。一个简单的对策是保存虚拟字符而不是真实密码的密码字段。您可以捕获正在键入的内容,将其存储在变量中,并将其替换为密码字段中的虚拟字符。

        2
  •  2
  •   Noon Silk    15 年前

    可能是通过找到控件并向文本框发送将“密码”字符更改为空的消息(即它将重新生效)。

    所以:

    1. 通过向他们发送windows消息

    2. 我想不起来了,但我敢肯定你只需要窗把手。

    3. 根本不在密码字段中显示密码。只要把它放在内存中的某个地方,只有在用户明确要求时才显示出来。

        3
  •  0
  •   slugster Joey Cai    15 年前

    iirc这个“弱点”从windows xp sp2开始就被消除了?无论如何,我很确定用于密码的标准windows文本框控件得到了升级,这样您就不能仅仅使用spy++之类的工具来查看被屏蔽的实际文本。

        4
  •  0
  •   austin cheney    15 年前

    密码的工作方式:
    设置密码时,密码将使用哈希函数转换为哈希值,并且存储的是该哈希值。密码从未存储。当用户登录时,密码将被散列并与存储的散列值进行比较。如果两个散列匹配,则用户提交了正确的密码。

    为了显示密码,必须将存储的散列值与具有已知散列值的值进行比较,或者,在散列函数损坏的情况下,可以将散列值猜测为提交的值。后面的可能性是思科密码破解器使用的方法,如果你能进入盒子,因为思科使用一个臭名昭著的弱散列函数。在以后的windows操作系统中,使用的散列函数是ntlm,它非常强。在这种情况下,必须将存储的哈希值与已知的哈希值进行比较。这种方法叫做彩虹表。典型的字母数字和7位ascii特殊字符14个字符的密码有一个64gb大的彩虹表。这就是为什么较长的密码要高得多,因为将一个散列值与数十亿个其他值进行比较需要几分钟的时间。