穷追猛打:破译Foxmail“密码天书”

笔者最常用的邮件客户端软件是Foxmail5.0,相信许多人也在用它,因为它的界面简洁、功能强大。在使用Foxmail的过程中发现一个问题,即Foxmail邮箱密码不够安全!而且这个问题在Foxmail 4.x和5.0正式版(包括测试版)中都存在,在这里提醒大家注意保管好自己的密码。

  Foxmail邮箱加密密码保存在哪里

  在正式开始以前,先说说在Foxmail中邮箱口令保存在哪里。右键点击你的账户(假设账户名为abcde),在弹出菜单中选择“属性”,然后点击“邮件服务器”,在这里你会看到以“*”号显示的邮箱密码(图1)。

  用任意一款密码查看软件就可以发现“*”号中是什么内容。其实,即便不使用查看*号工具也可看到Foxmail的密码!

  

  当选择保存邮箱口令后,邮箱密码加密后的密文保存在一个文件中,这个文件位于Foxmail安装目录下的Mail文件夹(如果采用默认安装方式,一般在C:\ProgramFiles\Foxmail下),那里有个以你的账户名为名字的文件夹(如账户名为abcde,则Mail文件夹下有个abcde文件夹),其下有个accounts.cfg文件,打开它就会看到你的邮箱密码密文。

  再现一个众所周知的Foxmail漏洞

  大家都知道,打开“资源管理器”或“我的电脑”,找到Foxmail文件夹,打开里面的“Mail”文件夹,你会发现这里有许多以账户名命名的文件夹,进入Mail文件夹下你想侵入的账户对应的文件夹,将其中的account.stg文件更名或删除,然后运行Foxmail,你会发现该信箱上原来的小“锁头”不见了(加有口令的账户会带有红色小“锁头”标志)!此时不需要任何密码就可以看到被保护的信件!

  为什么将Account.stg这个文件复制到别人的账户文件夹下,就有这么大的“威力”呢?用“记事本”打开该文件看看就明白了(图2)!事实上,你在Foxmail的“帐户→属性”菜单中设置的所有内容几乎都包括在其中了(如果你细心的话,会发现“属性”中的“模板”并没有包含在内),其中也包括了经过加密的信箱密码密文,也就是“POP3Password=”后面的部分。下面我们就谈谈这个令人感兴趣的话题。

  Foxmail分析

  先假设你在Foxmail中有且仅有一个账户:abcde,它的E-mail地址是abcde@163.net,这个信箱的密码是12345。

  用记事本打开accounts.cfg文件,一开始是一些乱七八糟的内容,再往下你会看到如下所示内容:

  MailAddress=abcde@163.net //这是邮件地址

  ………………………………

  POP3Account=abcde

  POP3Host=pop.163.net //POP3服务器地址

  POP3Password=BB6DFB5DF061 //邮箱密码加密后显示的密文

  POP3Port=110 //POP3服务器端口

  PrintFont=宋体,9

  ReplyAddr=

  ReplyFormat=1

  SameWithPop=1

  SMTPHost=smtp.163.net //SMTP服务器地址

  SMTPPort=25 //SMTP服务器端口

  ……

  在计算Foxmail邮箱密码明文之前,请你先记住一个单词:~draGon~(注意要区分大小写),它是Foxmail邮箱密码的加密密钥。记住后我们开始行动:

  第一步:下载一个十六进制文件编辑器UltraEdit,这是一套极棒的文字、Hex、ASCII码编辑器,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。其并且附有HTML Tag颜色显示、搜寻替换以及无限制的还原功能;一般大家常会用其来修改EXE或DLL文件。大家可以在这里下载到它:http://software.wx88.net/down/cuedit1010b.exe。安装完毕,运行UltraEdit,在它的文件编辑状态下输入“~draGon~”这个单词(没有引号),然后单击“Edit”(编辑)菜单下的“Hex Edit”(16进制编辑),可以查到这个词的16进制编码(图3),为:7E 64 72 61 47 6F 6E 7E,分别记为a1,a2,a3,a4,a5,a6,a7,a8,我将它们称之为Ai。

  

  第二步:再记住一个恒定的值:5A(其实也是由上面的a1~a8计算而来,具体方法就不多说了),记为C0,这个C0我们在下面会用到。

  第三步:取邮箱密码加密后的密文,在本例中为:BB6DFB5DF061,将它们两两分开,得到:BB,6D,FB,5D,F0,61,分别记为b1,b2,b3,b4,b5,b6。由于此加密密文的总长度为12,所以我们可以判断邮箱真正地密码长度为12÷2-1=5,即邮箱密码为5位。

  第四步:计算Ci的值(Ci为一系列数的总和,即C1,C2,C3,C4,C5……)。其中,C1由C0(即16进制的0x5A)和第一位密文(即b1,也就是我们这个例子中的BB)经异或运算得来。由于C0=0X5A,所以C1=C0^0XF9=0xE1,其中“^”代表异或运算。大家可以使用Windows自带的计算器来进行计算,点击“开始→程序→附件→计算器”即可打开计算器(图4),计算器中的“XOR”就代表异或运算。由此得到:

  C1为0xE1

  C2由b2直接继承得到,为0x6D

  C3由b3直接继承得到,为0xFB

  C4由b4直接继承得到,为0x5D

  C5由b5直接继承得到,为0xF0

  这样,我们就得到了至关重要的参数Ci。

  第五步:下面请大家用从第二位起的密文(即b2)和密钥对应的ASCII码(即Ai)作异或运算,由于我们已经知道密码为5位,所以用a1~a5分别与b2~b6进行异或运算,得到Di(即D1~D5这5位数)。在我们这个例子中,可以得到:

  D1=b2^a1=6D^7E=13

  D2=b3^a2=FB^64=9F

  D3=b4^a3=5D^72=2F

  D4=b5^a4=F0^61=91

  D5=b6^a5=61^47=26

  如果密文很长(Foxmail最多允许18位密码),该怎么办呢?还是用上面所说的方法。只是在计算Di时要循环利用Ai的值。举个例子,假设密文两两分开后有10位这么多(即B1~B10),则计算D8时用B9与A8异或,计算D9则用B10与A1异或。明白了吗?即密文长度大于密钥长度,则循环利用密钥进行计算。

  第六步:这是最后一步,求解出账户密码明文。用Di-Ci得到Ei,其中Ei就是密文解码后的明文。注意,如果Di小于Ci,则要用Di+0xFF(0xFF为16进制的FF,即十进制的255),然后再减去Ci即可。好了,赶快打开计算器,然后可以得到:

  E1=D1-C1=31,转为十进制为1

  E2=D2-C2=32,转为十进制为2

  E3=D3-C3=33,转为十进制为3

  E4=D4-C4=34,转为十进制为4

  E5=D5-C5=35,转为十进制为5

  将上面的结果串联起来,就是12345,而这正是我们当初设定的邮箱口令!怎么样?Foxmail的密文不安全吧!

  上面的过程说起来麻烦,而且好像不容易理解,将上述Ai、Bi、Ci、Di列个表(图5),然后再按上面说的自己动手试试就很容易搞清楚了!与我们事先设定的完全一样!从此可以推断~draGon~就是Foxmail的密钥!仔细想想,从Foxmail的原作者“张小龙”的名字不难推断到这个结论,因为“龙”字的英文单词为“dragon”。那么我是如何发现“~draGon~”这个单词呢?用UltraEdit打开Foxmail的主程序Foxmail.exe,点击“搜索→查找”(或直接按Alt+F3),输入dragon,在UltraEdit中搜索到的第一个词就是“~draGon~”!

  

  注意,上文中提到的Ai、Bi、Ci、Di和Ei都是十六进制数值,大家一定要搞清楚,不要弄混了。对了,得到了Ei之后,不要忘记按位分别转化为十进制,这才是真正的邮箱密码!另外,即便是同一个邮箱,在更改了密码并保存之后,下一次再改回原来的密码,你在accounts.cfg文件中看到的邮箱密码密文也会不一样,但用本方法计算下来之后结果不会变,也就是说你仍能用本方法得到你的密码。

  防范方法

  上面介绍了Foxmail密码的破解,方法非常的简单,所以在大家共用一台电脑的场所,建议不要将自己的邮箱密码保存下来,如果已经保存下来,可以采用下面的解决方法:在新建账户时不要选择保存密码,如果已经选择了,可以右击账户,在弹出菜单中选择“属性”,会出现“账户属性”窗口,选择“邮件服务器”,然后,将“密码”栏中的密码清除即可。这样,当你再打开account.stg文件时,会发现“POP3Password=”后面是空空如也,这样就不怕别人发现你的密码了。同时,建议Foxmail的开发商能改变加密算法,使得软件能更安全。

  最后提醒大家不要用本文所涉及的内容干破坏,这不是笔者的初衷,切记:己所不欲,勿施于人!

(0)

相关推荐

  • 穷追猛打:破译Foxmail“密码天书”

    笔者最常用的邮件客户端软件是Foxmail5.0,相信许多人也在用它,因为它的界面简洁.功能强大.在使用Foxmail的过程中发现一个问题,即Foxmail邮箱密码不够安全!而且这个问题在Foxmail 4.x和5.0正式版(包括测试版)中都存在,在这里提醒大家注意保管好自己的密码. Foxmail邮箱加密密码保存在哪里 在正式开始以前,先说说在Foxmail中邮箱口令保存在哪里.右键点击你的账户(假设账户名为abcde),在弹出菜单中选择"属性",然后点击"邮件服务器&qu

  • 如何用Python破解wifi密码过程详解

    前言 Python真的是无所不能,原因就是因为Python有数目庞大的库,无数的现成的轮子,让你做很多很多应用都非常方便.wifi跟我们的生活息息相关,无处不在.今天从WiFi连接的原理,再结合代码为大家详细的出一期关于Python破译wifi密码的Python学习教程! 01.如何连接wifi 首先我们的电脑是如何连接wifi的呢?就拿我们的笔记本电脑来说,我们的笔记本电脑都有无线网卡,如下图所示: 当我们连接WiFi时,无线网卡会自动帮助我们扫描附近的WiFi信号,并且会返回WiFi信号的一

  • 对超级脚本病毒的构思

    对超级脚本病毒的构思 告别了以往爱出风头,爱吹牛皮的时代,学点真本事才是硬道理.好好学习,天天向上.下面是对超级脚本病毒的构想. 脚本病毒的制造非常的容易,对于一个对编程一窍不通的人来说,只要对windows系统和注册表有足够的了解,在到网络上下载几个病毒代码仔细看看,就能在短时间内写出一个病毒的变种体来,脚本病毒的特征性就是那么几个,没有多少编程技巧而言,所以真正的病毒制造者是不用vbscript写病毒的,现在由于脚本语言的流行,以及Micrsoft推出的WSH(Windows Script 

  • 利用Python产生加密表和解密表的实现方法

    序言: 这是我第一次写博客,有不足之处,希望大家指出,谢谢! 这次的题目一共有三个难度,分别是简单,中等偏下,中等.对于一些刚刚入门的小伙伴来说,比较友好.废话不多说,直接进入正题. 正文: 简单难度: [题目要求]: 实现以<三国演义>为密码本,对输入的中文文本进行加密和解密.至于加密方式,最简单的从0开始,一直往后,有多个字,就最多到多少. [分析]: 1.知识背景:需要用到文件的读写操作,以及字典和集合的相关知识. 2思路:现将文件读取进来,然后对文字进行依次编码,存入字典中. [代码]

  • C#实现常见加密算法的示例代码

    目录 前言 1. Base64编码 1.1 原理介绍 1.2 C#代码 2. 凯撒密码 2.1 原理介绍 2.2 C#代码 3. Vigenere密码 3.1 原理介绍 3.2 C#代码 4. DES 4.1 原理介绍 4.2 C#代码 5. AES 5.1 原理简述 5.2 C#代码 前言 最近项目中需要用到字符串加解密,遂研究了一波,发现密码学真的是博大精深,好多算法的设计都相当巧妙,学到了不少东西,在这里做个小小的总结,方便后续查阅. 文中关键词: 明文(P,Plaintext) 密文(C

  • 密码破解全教程

    在日常的计算机操作中,我们随时随地都离不开密码--开机要使用CMOS密码.进Windows  98要使用用户密码.编辑Word文档要设置文档密码--,所有这些都为用户的数据安全提供了必要的安全保障!不过随着密码应用范围的增加,遗忘密码的情况也在与日俱增(谁也无法保证自己绝对不会忘记密码)!在忘记密码之后如何破解这些密码,尽可能减少损失就成为广大用户所关注的一个话题.为方便用户的使用,现将常用计算机密码的破解方法向大家作一简要介绍: 一.开机密码  根据用户设置的不同,开机密码一般分为两种不同情况

  • 教你如何打造黑客也读不懂的安全密码

    害人之心不可有,防人之心不可无!黑客盛行 的今天,提高自身的防范等级是第一要务.但不能只停留在口号上,必须采取严密的技术手段.以我们最为常用的各种密码 为例,如何既防明眼偷窥又防黑客软件暗查呢?本文就教你一绝招,使你的密码更安全! 为安全起见,计算机中密码的输入和保存都是以 "*"号来显示的.这样,他人无法查看到密码的内容.许多用 户以为这样就可以高枕无忧了,但事实是残酷的.这种密码的 保护方式只防君子,不防小人.一些别有用心的人通常会运用 远程监控屏幕的手段,并配合密码查看软件就可以

  • 五种windows密码设置及破解

    在使用电脑的过程中,难免要与各类密码打交道,以下九种密码可能是大家用的最多的:BIOS密码.安装密码.用户密码.电源管理密码.屏保密码.开机密码.上网密码.分级审查密码和共享密码.今天,我们就谈谈这些和我们息息相关的密码,本篇文章先讲九大常用密码的前五种密码. 一.BIOS密码 BIOS(Basic Input Output System)即基本输入/输出系统,它实际上是被固化到计算机主板上的ROM芯片中的一组程序,为计算机提供最低级的.最直接的硬件控制.和其它程序不同的是,BIOS是储存在BI

  • 实现winrar密码破解的vbs代码

    复制代码 代码如下: title="WinRaR破译(目前只做了破译数字)" set WshShell = CreateObject("WScript.Shell" ) set fso = CreateObject("scripting.filesystemobject") Function input() rar_path=InputBox("请输要解密的rar或zip入路径"&Chr(13)&Chr(10)

  • 密码知识教程二

    RSA的选择密文攻击.   RSA在选择密文攻击面前很脆弱.一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署.然后,经过计算就可得到它所想要的信息.实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:   ( XM )^d = X^d *M^d mod n   前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥.但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生

随机推荐