淺析FoxMail 3.11 及其密文解碼公式 (4千字)

看雪資料發表於2001-01-02

/***此文僅供研究,如移作他用,作者概不負責***/

如果你想編寫一個獲取對方信箱密碼的程式,而對方用的又是FoxMail,這篇文章也許對你有用!
(其實這是一篇很無聊的文章,那為什麼要寫?我也不知道,可能我太無聊了)

程式需要做的步驟是:
1、找到FoxMail的安裝目錄;
2、在其下查詢指定的帳戶目錄;
3、然後獲得該帳戶的信箱地址
4、獲取信箱密碼的密文;
5、最後再將其轉換為明文


在正式開始以前,先假設你在FoxMail中有且僅有一個帳戶:abcde,它的EMail地址是abcde@163.net,這個EMail信箱的
密碼是12345,並且你的FoxMail的安裝目錄是D:\FOXMAIL。


1、查詢FoxMail所在路徑

如果對方是用FoxMail來收信的,那麼它的預設郵件程式應該就是FoxMail,則它的FoxMail所在地址就記錄在
HKEY_LOCAL_MACHINE\Software\CLASSES\mailto\shell\open\command中,當然,你也可以在HKEY_LOCAL_MACHINE\Software\Aerofox\FoxMail
下的“Executable”中獲得


2、查詢帳戶路徑:透過accounts.cfg(帳戶配置檔案)

這只是為了寫程式的方便,否則你可以用資源管理器手工查詢該路徑。
在這個目錄下你會發現這個檔案:accounts.cfg,用HEdit編輯這個檔案,
在偏移0x848(2120)處的值是05 00 00 00,其實它是一個值是5的DWord(雙字),5的含義就是你的帳戶名(abcde)由5個位元組組成,跳過0x848
處的四個位元組,再跳過abcde這五個位元組,你又會看到:15 00 00 00,不用多說,這也是一個雙字,它的值為0x15(21),其後跟著一串
長度為0x15(21)的路徑名:D:\FOXMAIL\mail\abcde。如果你建立了更多的帳戶,查詢其路徑的方法以此類推,並且每兩個帳戶間的間隔是
0x1c(28)個位元組。


3、獲取信箱地址:透過Account.stg

前面我們已經找到了abcde的帳戶目錄,在該目錄下有一個稱為Account.stg的檔案,該檔案十分重要,它記錄著使用者在帳戶->屬性選單中
的所有內容,當然也包括了我們感興趣的密碼的密文。它的格式如下:
0x00到0x7FF:亂七八糟的東西
0x800開始:“屬性”中的東西

以下是從0x800開始的內容:
AutoCheck=0
AutoCheckMinutes=15
AutoMarkRead=1
AutoPack=1
AutoPackSize=20
AutoQP=1
AutoReadSeconds=5
CharSet=US_ASCII
CheckOnSend=0
DUNEntry=
ESMTPAccount=
ESMTPPassword=
HangupDUN=0
IsESMTP=0
LabelRow=1
LabelsCaptions=Label1;;Label2;;Label3;;Label4;;Label5;;Label6;;Label7
LabelsColors=255;;32768;;16711680;;8388608;;65535;;128;;32896
LeaveInServer=0
MailAddress=abcde@163.net
MailListFont=
MessageFont=
MovetoSentbox=1
NetType=0
Organization=
OrigReply=1
PlaySoundOnNewMsg=0
POP3Account=abcde
POP3Host=pop.163.net
POP3Password=F9AAB899ACA6
POP3Port=110
PrintFont=
ReplyAddr=
SameWithPop=1
SMTPHost=smtp.163.net
SMTPPort=25
SoundFileOnNew=
Subject8bit=0
UseAccNetSet=0
UseExistDUN=1
UseMIME=1
UserName=abcde
UseWeb=0
WordWrap=1

我只挑重要的講,最重要的當然是MailAddress和POP3Password啦,哇噻,是POP3Password耶,這不是pop3的密碼嗎?當然不是啦,密碼以
明文存放………FoxMail不會這麼笨的,它是經過了加密的密文(稍後我會講的),其它的我就不多講了,像POP3Host是pop3的伺服器地
址;POP3Port是pop3的伺服器埠;SMTPHost是發信伺服器,而SMTPPort是該伺服器的埠…………等等,就此一筆帶過(講多了又要被
扁了),其實上面的並不是屬性中所有的內容,如果你細心的話就會發現屬性中的“模板”並沒有包含在內,對了,再接下去的檔案內容
就是模板的內容,因為這實在是無關痛癢,所以不多講了。


5、將取得的密文轉換為明文(即密文解碼公式)

終於到了最刺激的部分了,這可是FoxMail的安全核心哦!
在解碼之前,請你先記住一個單詞:~draGon~(注意要區分大小寫)。
記住了嗎?好,現在解碼開始:

第一步:
取得上面這個單詞的ASCII碼:7E 64 72 61 47 6F 6E 7E,記為a1,a2,a3,a4,a5,a6,a7,a8

第二步:
將其相加,得0x357,除以255,餘數是0x5A, 記為c0

第三步:
取密碼的密文:F9AAB899ACA6將它們兩兩分開,得到:F9 AA B8 99 AC A6,分別記為b1,b2,b3,b4,b5,b6
密文的長度為12,12/2-1=5,所以密碼的長度為5;

第四步:
c0=0X5A
C1=C0^0XF9=c0^b0=0xA3
C2=0XAA
C3=0XB8
C4=0X99
C5=0XAC

其中^為異或;0x代表此數為16進位制數;
d1=b2^a1=0xD4
d2=b3^a2=0xDC
d3=b4^a3=0xEB
d4=b5^a4=0xCD
d5=b6^a5=0xE1

第五步:
判斷di是否大於ci,小於或等於,則di=di+0xFF

第六步(最後一步):
Ei=di-ci,其中Ei就是將密文解碼後的明文,本例中的密碼是:d4h-a3h=31h;dch-aah=32h;ebh-b8h=33h;cdh-99h=34h;e1h-ach=35h
即‘12345’。

好了,終於寫完了,如果還有問題別來問我,這篇文章已經寫得很詳細了!

有空的話去看看我的網站吧(雖然還沒有完工),網址是HTTP://TSCoffee.MyEtang.Com

                祝各位
                    元旦快樂


                                ---------- 碳燒咖啡
                                      2001.1.2 晚

相關文章