我的雲端生活網 - Life+

Showing posts with label MSNP15. Show all posts
Showing posts with label MSNP15. Show all posts

Thursday, March 19, 2009

msn機器人會打架

剛找到一個有趣的情況:

假設
機器人1: 會自動發訊息通知某事 且有 互動功能(且指令錯誤會回覆)
機器人2: 有互動功能(且指令錯誤會回覆)

且有一方必須是要能從 "非msn client" 加入機器人帳號為聯絡人加入;
另一方需要是可直接在 "msn client" 加入機器人帳號為聯絡人
=================================================
那麼;機器人彼此成為聯絡人時,會形成一個loop,彼此一直傳送訊息永不停止

將較之下 可直接在 "msn client" 加入機器人帳號為聯絡人 的程式,較容易
遭受病毒攻擊,反之;也無可避免

目前我沒有找到好的方法來避免,當然可以加入黑名單 使用發訊息的頻率來避
免大量的互相發訊,但我覺得這些都不是最好的方法,因為無法防範於事前

Friday, January 16, 2009

微軟MSN SERVER的離線訊息(OIMS)的使用政策修改了

<<這看來是微軟的伺服器所產生短暫的bugs,現在似乎又不正常了>>

微軟MSN SERVER的離線訊息(OIMS)的使用政策修改了(http://messenger.msn.com/ws/2004/09/oim/),所以;現在自己寫的MSN機器人如果沒有修改;應該發送離線訊息會出問題

Saturday, December 20, 2008

可以在ORACLE使用PL/SQL發送MSN訊息?

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



我好久沒碰RDBMS了,主要是因為我覺得殺雞焉用牛刀?這幾年我都使用檔案系統來處理資料,不過在此之前;我幾乎摸過了市面上各式各樣的RDBMS,當然也包括ORACLE,以前我們常使用ORACLE的trigger 或是store procedure 來處理一些事務,所以;我還沒忘記,ORACLE 內有一個很好用的利器UTL_HTTP Package,這裡有一個範例:
http://www.oracle.com/technology/sample_code/tech/pl_sql/htdocs/x/Utl_Http_Package_Enhancements/Cr_Using_Utl_Http.htm
事實上只要利用這個Package,我們就能直接使用triger配合 URL_HTTP 直接線上呼叫msnSDK 發送msn訊息,這個連結也一併給您參考 http://rd-program.blogspot.com/2008/12/msn_18.html 您可以參考這個簡易的範例知道怎麼透過http protocol發送msn訊息

抱歉!我因為太久沒直接碰oracle,手邊也沒有伺服器可用,所以沒辦法直接給出範例,不過我相信過這個描述你們自己一定做的出這個範例,如果有人做出範例;願意讓我知道的話在麻煩您給我一個連結,我會請其他有興趣的人直接去讀您的大作囉...

當然;我同時也相信oracle 現在應該已經有soap 這類的package,因為;我在使用oracle的那段時光,soap尚未成為標準,所以沒有接觸過,否則;有能直接使用這類的package操作msnSDK,不只ORACLE,MSSQL也能透過呼叫外部的ACTIVEX 來做同樣的事...

Wednesday, December 17, 2008

如何直接使用瀏覽器發送MSN訊息

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



使用瀏覽器就能對MSN發送訊息

使用程式運用msnSDK傳遞MSN訊息真的很簡單,這個例子我們直接使用瀏覽器來發送MSN訊息,現在要找到一種語言不支援這些介面還真不容易(msnSDK支援ADO/CGI/SOAP 三種介面)

--------------
STEP 1:
首先要使用msnSDK 發送訊息,必須取得使用SDK權限
---------------------------------------------------------------
http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=GETSPID&USERID=apiblogt7&PASSWD=msnsdkt

瀏覽器得到回應(SPID 是一個隨機碼)
1\tSPID
或是
0\t失敗原因

比如: (請注意! 5M9AzR700NWZbbAf 會一直變動,而一旦通過認證這個SPID 可使用6個小時不需重複取用SPID,過期再取即可)

1 5M9AzR700NWZbbAf

--------------
STEP 2:
邀請聯絡人,我想大家都知道,要透過MSN發送訊息,得要對方是我們自己的聯絡人,要特別注意的是XXXXXXXX@hotmail.com得要是真正的MSN地址,因為發送MSN訊息時,得要對方再線上(範例是這樣使用,不過;msnSDK本身可以自動判斷對方是否再線上決定是否發送離線訊息...這需要參考文件,可自行下載文件)
---------------------------------------------------------------
http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=REGISTER&UIDS=XXXXXXXX@hotmail.com&SESSION=5M9AzR700NWZbbAf

瀏覽器得到回應
1\t成功訊息
或是
0\t失敗原因

<<此時註冊為機器人聯絡人的帳號會在msn 上收到邀請成為聯絡人,選擇受邀請為聯絡人後>>
--------------
STEP 3:
發送訊息給XXXXXXXX@hotmail.com (這必須要是真的MSN帳號,且這個帳號必須在線上,如需傳遞離線訊息...請參考文件)
---------------------------------------------------------------
http://59.120.234.84:8082/msnSDK/msn_cgi-win32?UIDS=XXXXXXXX@hotmail.com&MSG=測試&flags=0&FUNC=SENDMSG&ENCODING=BIG5&SESSION=5M9AzR700NWZbbAf

瀏覽器得到回應
1\t成功訊息
或是
0\t失敗原因

--------------
其他功能可自行下載文件參考,msnSDK 同時支援YAHOO及MSN 的訊息傳遞(傳送與接收),且線上使用免費;歡迎所有有興趣的人直接在網路上應用它,如欲合作,可將合作提案寄到sonet.all@gmail.com

Monday, December 8, 2008

半分鐘搞定msn機器人互動式選單

msnSDK訊息控制開發套件,可支援訊息雙向傳遞;如您非程式開發人員,卻又有訊息雙向傳遞的需求,即可採用如下的作法,輕鬆達成簡易的需求。

Step1:安裝msnSDK訊息控制開發套件後,您可先至目錄msdSDKMenu。
開啟help.lst




PS,上述項目為既有範例,使用者可依據需求進行編輯。
開啟MSN,與MSN機器人的對話中,鍵入『?』或『#help』並Enter,出現如下的對話訊息。



Step2:於主選單增加一筆對話資訊
編輯help.lst,並存檔



與MSN機器人的對話中,再度鍵入『?』或『#help』並Enter。




Step3:編輯互動內容
至目錄msdSDKMenu下新增一目錄,目錄名稱需對應先前於主選單help所增加的指令字串,本例為『#mp』;建議直接複製預設的目錄如『#showndown』(此目錄內的其他檔案需一併複製),完成後將之更名即可。



可編輯目錄下的help.lst



編輯action.lst以呈現互動的結果



與MSN機器人的對話中,『#mp』並Enter。



如msn出現的說明,鍵入任意文字即出現回應訊息。



上述步驟即為簡易的訊息雙向傳遞,

此方法也支援直接直接取用url 資源

http://url....?msn=$msn_passport$&參數=$ARGVS[0]$


如配合原先企業或單位內已撰寫好的網頁或資料庫,不僅可成為單位內重要的訊息查閱管道更是KM整合的一大利器,而衍伸用法可達成不同以往的『單一簽入』型態及解決方案。

Wednesday, December 3, 2008

MSNC:File transfer 拒絕檔案傳送的程序

讀了相關資訊也從google 找資料,但是對 MSNSLP(P2P protocol)的描述多半語焉不詳,尤其是File Transfer,或許是自己的理解能力不好,只得自己SNIFFER,以下是整個拒絕檔案傳送的過程,試了一下;已正常可運行,我順便參考查看了某個msn的函式,發現他的做法不對;反而會造成client 不斷的請求(INVITE)

ps.以下相關msn帳號為測試帳號,並不會用來接收資訊

====Recv====
MSG xue.luke@hotmail.com ?? 1344\r\n
MIME-Version: 1.0\r\n
Content-Type: application/x-msnmsgrp2p\r\n
P2P-Dest: luke0@livemail.tw\r\n
\r\n
(00-00-00-00) (EF-64-8B-13) (00-00-00-00-00-00-00-00)
(2C-05-00-00-00-00-00-00) (B2-04-00-00) (00-00-00-00)
(3C-75-7B-23) (00-00-00-00) (00-00-00-00-00-00-00-00)
INVITE MSNMSGR:luke0@livemail.tw MSNSLP/1.0\r\n
To: \r\n
From: \r\n
Via: MSNSLP/1.0/TLP ;branch={9D589759-6F32-4136-BE3C-6CA353A20907}\r\n
CSeq: 0 \r\n
Call-ID: {8673FEF1-6E96-449D-AF21-8AD10E58630C}\r\n
Max-Forwards: 0\r\n
Content-Type: application/x-msnmsgr-sessionreqbody\r\n
Content-Length: 989\r\n
\r\n
EUF-GUID: {5D3E02AB-6190-11D3-BBBB-00C04F795683}\r\n
SessionID: 662509335\r\n
SChannelState: 0\r\n
Capabilities-Flags: 1\r\n
AppID: 2\r\n
Context: fgIAAAMAAAACAAAAAAAAAAEAAABiAGkAbgBhAHIAeQBfAGIAdQBpAGwAZABfADEALgAwAC4AMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\� � Hide� Hide� 512� Recvb� AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(00-00-00-00)

====Recv====
MSG xue.luke@hotmail.com ?? 264\r\n
MIME-Version: 1.0\r\n
Content-Type: application/x-msnmsgrp2p\r\n
P2P-Dest: luke0@livemail.tw\r\n
\r\n
(00-00-00-00) (EF-64-8B-13) (B2-04-00-00-00-00-00-00)
(2C-05-00-00-00-00-00-00) (7A-00-00-00) (00-00-00-00)
(3C-75-7B-23) (00-00-00-00) (00-00-00-00-00-00-00-00)
AAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\r\n\r\n
00 (00-00-00-00)


====Send====
MSG 81 D 145\r\n
MIME-Version: 1.0\r\n
Content-Type: application/x-msnmsgrp2p\r\n
P2P-Dest: xue.luke@hotmail.com\r\n
\r\n
(00-00-00-00) (5A-C9-9C-1E) (00-00-00-00-00-00-00-00)
(00-00-00-00-00-00-00-00) (00-00-00-00) (02-00-00-00)
(EF-64-8B-13) (3C-75-7B-23) (2C-05-00-00-00-00-00-00)
(00-00-00-00)


====Recv====
ACK 81\r\n

====Send====
MSG 82 D 524\r\n
MIME-Version: 1.0\r\n
Content-Type: application/x-msnmsgrp2p\r\n
P2P-Dest: xue.luke@hotmail.com\r\n
\r\n
(00-00-00-00) (5B-C9-9C-1E) (00-00-00-00-00-00-00-00)
(7B-01-00-00-00-00-00-00) (7B-01-00-00) (00-00-00-00)
(47-A4-7E-27) (00-00-00-00) (00-00-00-00-00-00-00-00)
MSNSLP/1.0 603 Decline\r\n
To: \r\n
From: \r\n
Via: MSNSLP/1.0/TLP ;branch={9D589759-6F32-4136-BE3C-6CA353A20907}\r\n
CSeq: 1 \r\n
Call-ID: {8673FEF1-6E96-449D-AF21-8AD10E58630C}\r\n
Max-Forwards: 0\r\n
Content-Type: application/x-msnmsgr-sessionreqbody\r\n
Content-Length: 66\r\n
\r\n
SessionID: 662509335\r\n
SChannelState: 0\r\n
Capabilities-Flags: 1\r\n\r\n
00 (00-00-00-00)


====Recv====
ACK 82\r\n

====Recv====
MSG xue.luke@hotmail.com ?? 142\r\n
MIME-Version: 1.0\r\n
Content-Type: application/x-msnmsgrp2p\r\n
P2P-Dest: luke0@livemail.tw\r\n

(00-00-00-00) (F0-64-8B-13) (00-00-00-00-00-00-00-00)
(00-00-00-00-00-00-00-00) (00-00-00-00) (02-00-00-00)
(5B-C9-9C-1E) (47-A4-7E-27) (7B-01-00-00-00-00-00-00)
(00-00-00-00)

Tuesday, November 25, 2008

3分鐘學會使用程式發送msn訊息, ASP篇(六)

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞


ASP 的範例我們使用ADO介面來處理,其他語言也可以這樣做,可參考文件(文末提供下載處),另外;下面的程式碼重要的部份只有參數不同,其他大同小異,可參考紅字部分


ps.也請參考 msnSDK的使用流程

(抱歉!太久沒碰ASP,不過基本上;下面這個範例可正確發送MSN訊息)
<%
'--
'---STEP1 取得API 使用權限
'--

on error resume next
Set xmlHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
'如果遇到中文,請使用Server.URLEncode 來處理
'比如 : ...&pname=Server.URLEncode("中文姓名")&...

URL= "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=GETSPID&USERID=apiblogt6&PASSWD=msnsdkt&RETTYPE=ADO"

xmlHTTP.open "GET", URL, false
xmlHTTP.send()

if err.description <>"" then
Set xmlHTTP= Nothing
response.write "無法連接遠端伺服器," & err.description
response.end
end if

'--
'將得到的訊息存入 myRS_....xml
'--
set myStream = Server.CreateObject("ADODB.Stream")
myStream.Open
myStream.Charset = "big5"
myStream.WriteText xmlHTTP.ResponseText
myStream.Position = 0

'---
'防止重複的process 存取xml
'---
Febber = Split("1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
For I = 0 To 3
Randomize
keychar = keychar & Febber(Int((62 * Rnd) + 1) - 1)
next
myXMLfile = Server.Mappath("./myRS_" & keychar & ".xml")
myStream.SaveToFile myXMLfile
myStream.Close

'--
'取得myRS_$random.xml 的結果
'--
set rs = server.createobject("adodb.recordset")
rs.Open myXMLfile
Do While Not (rs.EOF)
if (rs(0)=1) then
spid=rs(1)
response.write "取得SPID=" & rs(1) & "
"
else
response.write "認證失敗=" & rs(0)& "," & rs(1) & "
"
response.end
end if
rs.MoveNext
Loop
rs.Close


'--
'刪除暫存檔
'--
set FSO = Server.Createobject("Scripting.FileSystemObject")
Fso.DeleteFile myXMLfile

'--
'釋放使用的物件
'--
set FSO = Nothing
Set myStream = Nothing
Set rs = Nothing
Set xmlHTTP= Nothing
'--

'--
'---STEP2 邀請聯絡人
'--
Set xmlHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
'如果遇到中文,請使用Server.URLEncode 來處理
'比如 : ...&pname=Server.URLEncode("中文姓名")&...
'請注意!
'邀請聯絡人 XXXXXXXX@hotmail.com 請填正確的聯絡人,執行此SUB 後
'msnSDK 會邀請這個人加入聯絡人,必須加入聯絡人後才能發送訊息
'session 由GETSPID 所取得的 spid

URL= "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=REGISTER&UIDS=XXXXXXXX@hotmail.com&SESSION=" & spid & "&RETTYPE=ADO"

xmlHTTP.open "GET", URL, false
xmlHTTP.send()

if err.description <>"" then
Set xmlHTTP= Nothing
response.write "無法連接遠端伺服器," & err.description
response.end
end if

'--
'將得到的訊息存入 myRS_....xml
'--
set myStream = Server.CreateObject("ADODB.Stream")
myStream.Open
myStream.Charset = "big5"
myStream.WriteText xmlHTTP.ResponseText
myStream.Position = 0

'---
'防止重複的process 存取xml
'---
Febber = Split("1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
For I = 0 To 3
Randomize
keychar = keychar & Febber(Int((62 * Rnd) + 1) - 1)
next
myXMLfile = Server.Mappath("./myRS_" & keychar & ".xml")
myStream.SaveToFile myXMLfile
myStream.Close

'--
'取得myRS_$random.xml 的結果
'--
set rs = server.createobject("adodb.recordset")
rs.Open myXMLfile
Do While Not (rs.EOF)

response.write "邀請聯絡人回應=" & rs(0) & "," & rs(1) & "," & rs(2) & "
"

rs.MoveNext
Loop
rs.Close

'--
'刪除暫存檔
'--
set FSO = Server.Createobject("Scripting.FileSystemObject")
Fso.DeleteFile myXMLfile

'--
'釋放使用的物件
'--
set FSO = Nothing
Set myStream = Nothing
Set rs = Nothing
Set xmlHTTP= Nothing
'--

'--
'---STEP3 發送訊息
'--
Set xmlHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
'如果遇到中文,請使用Server.URLEncode 來處理
'比如 : ...&pname=Server.URLEncode("中文姓名")&...
'請注意!
'傳送訊息給 XXXXXXXX@hotmail.com 請填正確的聯絡人,執行此SUB 後
'msnSDK 會邀請這個人加入聯絡人,必須加入聯絡人後且這個人在線上才能
'發送訊息,如要傳離線訊息請參考文件
'session 由GETSPID 所取得的 spid
msg=Server.URLEncode("測試")

URL= "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?UIDS=XXXXXXXX@hotmail.com&MSG=" & msg &"&flags=0&FUNC=SENDMSG&ENCODING=BIG5&RETTYPE=ADO&SESSION=" & spid

xmlHTTP.open "GET", URL, false
xmlHTTP.send()

if err.description <>"" then
Set xmlHTTP= Nothing
response.write "無法連接遠端伺服器," & err.description
response.end
end if

'--
'將得到的訊息存入 myRS_....xml
'--
set myStream = Server.CreateObject("ADODB.Stream")
myStream.Open
myStream.Charset = "big5"
myStream.WriteText xmlHTTP.ResponseText
myStream.Position = 0

'---
'防止重複的process 存取xml
'---
Febber = Split("1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
For I = 0 To 3
Randomize
keychar = keychar & Febber(Int((62 * Rnd) + 1) - 1)
next
myXMLfile = Server.Mappath("./myRS_" & keychar & ".xml")
myStream.SaveToFile myXMLfile
myStream.Close

'--
'取得myRS_$random.xml 的結果
'--
set rs = server.createobject("adodb.recordset")
rs.Open myXMLfile
Do While Not (rs.EOF)

response.write "傳送訊息回應=" & rs(0) & "," & rs(1) & "," & rs(2) & "
"

rs.MoveNext
Loop
rs.Close

'--
'刪除暫存檔
'--
set FSO = Server.Createobject("Scripting.FileSystemObject")
Fso.DeleteFile myXMLfile

'--
'釋放使用的物件
'--
set FSO = Nothing
Set myStream = Nothing
Set rs = Nothing
Set xmlHTTP= Nothing
'--


%>

其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書

Tuesday, November 18, 2008

關於msnSDK 使用上的問題,特此說明

http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3056858&SiteID=14
這篇文章有提到關於msnSDK 產品使用的問題,因為個人疏忽沒有特別提出這個問題,特此說明

API 使用權限的帳號密碼,直接寫在範例程式裡,所以;個人使用確實是免費的,而此API 同時支援MSN/YAHOO即時通,如果有需要使用非程式範例內的帳號密碼,也可以跟我索取(sonet.all@gmail.com),至少以上這些都是免費提供使用,文件也可以自行參考下載,個人使用與商業版功能完全一致;沒有差異,唯一的差異是商業版會安裝在購買的使用者機器上,且依照販售合約提供相關維護保固...,而個人使用則不提供這些服務或保證

Sunday, November 16, 2008

3分鐘學會使用程式發送msn訊息, VB6.0篇(五)








<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>





msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞



VB6.0 的範例我們使用ADO介面來處理,其他語言也可以這樣做,可參考文件(文末提供下載處),另外;下面的程式碼重要的部份只有參數不同,其他大同小異,可參考紅字部分





ps.也請參考 msnSDK的使用流程

================================







Dim RS As New ADODB.Recordset

Dim URL As String

Dim Session As String '授權碼



'取得API 的使用權利

Private Sub GETSPID_Click()

Dim RET As String

On Error GoTo ErrHandle



'API 連接位置

URL = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32"

'apiblogt5/msnsdkt 取得API 使用權限的帳號/密碼


RS.Open URL & "?FUNC=GETSPID&USERID=apiblogt5&PASSWD=msnsdkt&RETTYPE=ADO"


Do While Not (RS.EOF)



'查詢回應

'RS(0) 0 認證失敗 1認證成功

'RS(1) 失敗傳回 失敗原因 / 成功傳回 SESSION

'

If (RS(0) = 0) Then

MsgBox "認證失敗,無法使用API"

Else

'取得認證授權使用API

'授權碼

Session = RS(1)

End If

RS.MoveNext

Loop

RS.Close

Exit Sub

ErrHandle:

MsgBox "無法連接伺服器,或是參數不正確"



End Sub



'邀請聯絡人

Private Sub REGISTER_Click()



Dim RET As String

On Error GoTo ErrHandle



'API 連接位置

URL = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32"



'邀請聯絡人 XXXXXXXX@hotmail.com 請填正確的聯絡人,執行此SUB 後

'msnSDK 會邀請這個人加入聯絡人,必須加入聯絡人後才能發送訊息

'session 由GETSPID 所取得的session


RS.Open URL & "?UIDS=XXXXXXXX@hotmail.com&FUNC=REGISTER&RETTYPE=ADO&SESSION=" &
Session


Do While Not (RS.EOF)



'查詢回應

'RS(0) 0 邀請失敗 1邀請成功

'RS(1) 失敗傳回 失敗原因 / 成功訊息

'

If (RS(0) = 0) Then

MsgBox "邀請失敗"

Else

MsgBox RS(1)

End If

RS.MoveNext

Loop

RS.Close

Exit Sub

ErrHandle:

MsgBox "無法連接伺服器,或是參數不正確"



End Sub



'發送MSN/YAHOO即時通訊息

Private Sub SENDMSG_Click()

Dim RET As String

On Error GoTo ErrHandle



'API 連接位置

URL = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32"



'傳送訊息(MSG)給 XXXXXXXX@hotmail.com(必須是此聯絡人已接受邀請)

'flags 1 當聯絡人不在線上則依據系統設定處理(系統設定為傳送離線訊息) 0 當連絡人不在線上,則不送任何訊息

'encoding 標示目前傳送訊息的中文編碼

'rettype 設定為使用ADO

'session 由GETSPID 所取得的session


RS.Open URL & "?UIDS=XXXXXXXX@hotmail.com&MSG=測試&flags=0&FUNC=SENDMSG&ENCODING=BIG5&RETTYPE=ADO&SESSION=" & Session


Do While Not (RS.EOF)



'查詢回應

'RS(0) 0 傳送失敗 1傳送成功

'RS(1) 失敗傳回 失敗原因 / 成功訊息

'

If (RS(0) = 0) Then

MsgBox "傳送失敗"

Else

MsgBox RS(1)

End If

RS.MoveNext

Loop

RS.Close

Exit Sub

ErrHandle:

MsgBox "無法連接伺服器,或是參數不正確"

End Sub



其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書

Friday, November 14, 2008

MSN機器人開發套件 demo篇

MSN機器人開發套件影片,msnSDK本身可以同時支援MSN/YAHOO即時通,影片中for MSN的字樣指的是這個影片展示的是MSN部分,另外這個影片沒有展示與msn互動的部份,msnSDK本身能夠做到MSN/YAHOO互動雙向訊息的應用;若有公司企業欲洽談合作,不論合作方式的大或小,可洽sonet.all@gmail.com

http://tw.youtube.com/watch?v=hbQ1Va_IqzM

Thursday, November 13, 2008

3分鐘學會使用程式發送msn訊息, Perl篇(四)

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞

perl 的範例我們使用soap 介面來處理,其他語言也可以這樣做,可參考文件(文末提供下載處)
wsdl位置:http://59.120.234.84:8082/msnSDK/genwsdl-win32

ps.也請參考 msnSDK的使用流程
================================
#!/usr/bin/perl
use SOAP::Lite;

#取得使用api 的權限
sub setspid
{
my $session_ret=SOAP::Lite->uri('http://59.120.234.84:8082/MSN')
->proxy('http://59.120.234.84:8082/msnSDK/msn_soap-win32')
->GETSPID('apiblogt4','msnsdkt')->result;
my ($code,$session)=split("\t",$session_ret);
$session=~tr/\r\n //d;
return $session;
}

#註冊聯絡人
sub register
{
my $sret= setspid();
my $session_ret=SOAP::Lite->uri('http://59.120.234.84:8082/MSN')
->proxy('http://59.120.234.84:8082/msnSDK/msn_soap-win32')
->REGISTER('要加入聯絡人的msn/yahoo帳號',$sret)->result;
print $session_ret;
}

#傳送訊息
sub sendmsg
{
my $sret= setspid();
my $msg_ret = SOAP::Lite->uri('http://59.120.234.84:8082/MSN')->
proxy('http://59.120.234.84:8082/msnSDK/msn_soap-win32')->
SENDMSG( '要傳送訊息聯絡人的msn/yahoo帳號', '欲傳送的訊息', 'utf-8','1',$sret)->result;
print $msg_ret;
}

其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書

Wednesday, November 12, 2008

msnSDK的使用流程說明

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



3分鐘學會使用程式發送系列文章所使用的流程

STEP1:
取得SPID: GETSPID請參考各種語言所使用的帳號/密碼(每篇文章的程式碼內有),取得SPID以取得使用API 的權力

STEP2:
註冊聯絡人: 要發訊息給別人,需要先讓他成為聯絡人,因此這必須要是合法聯絡人(msn/yahoo帳號),而此時這個帳號會收到邀請通知(請見下圖)

STEP3:
傳送MSN/YAHOO訊息: SENDMSG(uids傳遞訊息的目的MSN/YAHOO帳號,msg欲傳遞的訊息內容,encoding傳遞的訊息中文編碼(utf-8/big5/gbk/gb2312),flags 0 對方離線則不送訊息 1對方離線則訊息是否傳送由系統決定,session GETSPIS得到的session值)

msnSDK擁有非常多的FUNCTION,也包含互動式的機器人選單,其他功能可參考msnSDK訊息控制開發套件程式介面說明書

Monday, November 10, 2008

3分鐘學會使用程式發送msn訊息, Java篇(三)

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞
ps.也請參考 msnSDK的使用流程
================================
public class clsMsnSDK {
public static void main(String[] args) throws Exception {
String UserName = "apiblogt3";
String Password = "msnsdkt";
//取得SPID
String strRet = GETSPID(UserName,Password);
String[]tmp = strRet.split("1\t");
String strValue = tmp[1].replace('\n',' ').trim();

String SPID = strValue;
System.out.println(SPID);
//註冊聯絡人
String Email = "xxxxx@hotmail.com"; //填入msn/yahoo聯絡人,勿使用這個預設值
String ret = Register(Email,SPID);
System.out.println(ret);
//發訊息
String strMsg = "Hello_World!"; //輸入訊息 (未做 Url EnCoded)
String MsgRet = SendMsg(Email,strMsg,SPID);
System.out.println(MsgRet);
}


//取得SPID
public static String GETSPID(String UserName,String Password) throws Exception {

String strUrl = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";
String strValue ="?FUNC=GETSPID&USERID=" + UserName + "&PASSWD=" + Password;
java.net.HttpURLConnection urlConnection= null;//定義一個HTTP連線
java.net.URL url= new java.net.URL(strUrl + strValue);//定義一串URL
urlConnection=(java.net.HttpURLConnection)url.openConnection();//將URL餵給HttpURLConnection
urlConnection.setRequestMethod("POST");//設定參數傳遞方式(GET or POST)
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();//開啟連線
java.io.InputStream GetHTML=urlConnection.getInputStream();//內容儲存下來
int leng =0;
byte[] Data = new byte[100];
byte[] totalData = new byte[0];
int totalLeg =0;
do{
leng = GetHTML.read(Data);//(Data);
if(leng>0){
totalLeg += leng;
byte[] temp = new byte[totalLeg];
System.arraycopy(totalData, 0, temp, 0, totalData.length);
System.arraycopy(Data, 0, temp, totalData.length, leng);
totalData = temp;
}
}while(leng>0);
String tmp = new String(totalData,"UTF-8");
urlConnection.disconnect();
return tmp;
}

//註冊
public static String Register(String UIDS,String SPID) throws Exception{
String strUrl = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";
String strValue = "?FUNC=REGISTER&UIDS=" + UIDS + "&SESSION="+ SPID;
java.net.HttpURLConnection urlConnection= null;//定義一個HTTP連線
java.net.URL url= new java.net.URL(strUrl + strValue);//定義一串URL
urlConnection=(java.net.HttpURLConnection)url.openConnection();//將URL餵給HttpURLConnection
urlConnection.setRequestMethod("POST");//設定參數傳遞方式(GET or POST)
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();//開啟連線
java.io.InputStream GetHTML=urlConnection.getInputStream();//內容儲存下來
int leng =0;
byte[] Data = new byte[100];
byte[] totalData = new byte[0];
int totalLeg =0;
do{
leng = GetHTML.read(Data);//(Data);
if(leng>0){
totalLeg += leng;
byte[] temp = new byte[totalLeg];
System.arraycopy(totalData, 0, temp, 0, totalData.length);
System.arraycopy(Data, 0, temp, totalData.length, leng);
totalData = temp;
}
}while(leng>0);
String tmp = new String(totalData,"UTF-8");
urlConnection.disconnect();
return tmp;

}

//傳送MSN 訊息
public static String SendMsg(String UIDS,String MSG,String SPID) throws Exception{
String strUrl = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";
String strValue ="?FUNC=SENDMSG&UIDS=" + UIDS + "&MSG=" + MSG +"&Encoding=BIG5&flag=0&Session=" + SPID;
java.net.HttpURLConnection urlConnection= null;//定義一個HTTP連線
java.net.URL url= new java.net.URL(strUrl + strValue);//定義一串URL
urlConnection=(java.net.HttpURLConnection)url.openConnection();//將URL餵給HttpURLConnection
urlConnection.setRequestMethod("POST");//設定參數傳遞方式(GET or POST)
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();//開啟連線
java.io.InputStream GetHTML=urlConnection.getInputStream();//內容儲存下來
int leng =0;
byte[] Data = new byte[100];
byte[] totalData = new byte[0];
int totalLeg =0;
do{
leng = GetHTML.read(Data);//(Data);
if(leng>0){
totalLeg += leng;
byte[] temp = new byte[totalLeg];
System.arraycopy(totalData, 0, temp, 0, totalData.length);
System.arraycopy(Data, 0, temp, totalData.length, leng);
totalData = temp;
}
}while(leng>0);

String tmp = new String(totalData,"UTF-8");
urlConnection.disconnect();
return tmp;
}

}

其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書

3分鐘學會使用程式發送msn訊息,dotNet C#篇(二)








<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞

ps.也請參考 msnSDK的使用流程

================================



全域的物件及變數

WebClient wc = new WebClient();

string SPID = "";



步驟一:取得SPID(GETSPID)

private void button1_Click(object sender, EventArgs e)

{

string url="http://59.120.234.84:8082/msnSDK/msn_cgi-win32";

string method="POST";

string postdata = "FUNC=GETSPID&USERID=apiblogt2&PASSWD=msnsdkt";

byte[] postbyte=Encoding.UTF8.GetBytes(postdata);

byte[] resb = wc.UploadData(url, method, postbyte);

string resmsg = Encoding.UTF8.GetString(resb);

resmsg = resmsg.Replace("\n", "");

string[] arrstr = resmsg.Split('\t');

if (arrstr[0] == "1")

{

SPID = arrstr[1];

MessageBox.Show("取得SPID成功: SPID= " + SPID);

}

else

{

SPID = "";

MessageBox.Show("取得SPID失敗: " + resmsg);

}

}



步驟二:將帳號註冊為msn機器人的連絡人(REGISTER)

下述: txtmsnacc.Text 為msn/yahoo帳號



private void button2_Click(object sender, EventArgs e)

{

string url = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";

string method = "POST";

string postdata = "FUNC=REGISTER&uids=" + txtmsnacc.Text + "&session=" + SPID;

byte[] postbyte = Encoding.UTF8.GetBytes(postdata);

byte[] resb = wc.UploadData(url, method, postbyte);

string resmsg = Encoding.UTF8.GetString(resb);

resmsg = resmsg.Replace("\n", "");

string[] arrstr = resmsg.Split('\t');

if (arrstr[0] == "1")

{

MessageBox.Show("註冊成功: " + resmsg);

}

else

{

MessageBox.Show("註冊失敗: " + resmsg);

}

}



步驟三:發送訊息(SENDMSG)

private void button3_Click(object sender, EventArgs e)

{

string msg = "msnSDK測試訊息";

string url = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";

string method = "POST";

string postdata = "FUNC=SENDMSG&uids=" + txtmsnacc.Text + "&msg=" + msg + "&encoding=utf-8&flags=0&session=" + SPID;

byte[] postbyte = Encoding.UTF8.GetBytes(postdata);

byte[] resb = wc.UploadData(url, method, postbyte);

string resmsg = Encoding.UTF8.GetString(resb);

resmsg = resmsg.Replace("\n", "");

string[] arrstr = resmsg.Split('\t');

if (arrstr[0] == "1")

{

MessageBox.Show("發送訊息成功: " + resmsg);

}

else

{

MessageBox.Show("發送訊息失敗: " + resmsg);

}

}



其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書

Monday, October 20, 2008

msnSDK v1.0.2 文件釋出

msnSDK(http://tcmail.program.com.tw/image/msnSDKV1.0.2.pdf)主要的功能就是把一些常用的MSN 功能做成一些API,讓外部的程式可以簡單的應用它來開發相關應用程式

Wednesday, October 15, 2008

MSNP16 與MSNP15 的差異

MSNP16 與MSNP15 唯一的差異

USR 4 SSO S t=...&p=xxx {MACHINE_GUID}
其中 MACHINE_GUID 可以是任何 32bytes 的16進制亂數,這大概是為了要讓MSN 可以在不同位置重複登入所設計,就像是XMPP 中的(jid)uid@domain/resource類似

Sunday, October 12, 2008

msnSDK 文件

msnSDK(http://tcmail.program.com.tw/image/msnSDKV1.0.1.pdf)主要的功能就是把一些常用的MSN 功能做成一些API,讓外部的程式可以簡單的應用它來開發相關應用程式,目前;msnSDK支援4種程式介面, 1.SOAP 2.CGI 3.ADO (這三種API的功能相同) 4.CGI-Steam 這個介面主要是處理從msn client 到msnSDK 之間的訊息以及線上狀況的資訊傳遞,歡迎需要測試功能的人或是有應用需求的各行各業先進與我聯繫(sonet.all@gmail.com)

備註:msnSDK 本身有unix/linux/win32 版本


v1.0.2 已釋出:msnSDK v1.0.2 文件釋出
v1.0.3 已釋出:msnSDK v1.0.3 文件釋出
不分版本(最新):msnSDK 不分版本(最新)文件



Monday, August 25, 2008

msn 疑似有一個bug

因為自己在摸索msn protocol,發現msn 在做聯絡人的地方有一個bug,當第一次把某個人加入聯絡人(且對方也核准)後,雙方如果都刪除彼此(沒封鎖聯絡人,但同時刪除hotmail聯絡人);當任一方要再訂閱對方,而有拒絕過一次後,對方從此不會再收到訂閱的通知,但自己卻可以訂閱對方為聯絡人且看到對方的線上資訊,這情況跟gtalk很類似,看來;大家在實作這個程序時都留下了一些缺憾

ps.這問題並不是msn client的bug,因為msn server確實沒有傳送ADL 指令;通知對方有人請求加入聯絡人

另外; msn 裡的顯示歌曲資訊會佔用不必要頻寬,msn client勾選這個項目後,似乎每幾秒就會送出UBX 指令給所有的聯絡人,不知道當一個團體很大(數千人,而且每個人都開啟這個功能,且彼此為聯絡人)又同在相同網域下的時候,是不是有可能造成網路嚴重的負擔

Tuesday, August 19, 2008

msnp15 認證過程(I)

使用別人開發好的msn sdk來開發程式;真的能夠滿足你對技術的慾望嗎?以下為msn protocol v15的認證過程,msnp15大致上延續前一版的協定,但是在認證的部份改了,目前msn server 已支援msnp16,而現階段最新的msn client (msn v8.1)還在使用msnp15,要到msn v9才會開始全面支援msnp16
直接從msn protocol著手的主要理由是~這樣,才能將msn 移植到非win32的平台上,否則;微軟本身也有釋出msn sdk,它的缺點是;只能依附在有安裝msn client 的win32上,就這一點來說;msn 的政策還相當封閉,因為每次protocol升級;認證的部份幾乎都有更動,這也是從protocol著手來應用msn 最大的麻煩,不過從追蹤 撰寫msn protocol,可以學到不少東西可說是額外的收穫,msn protocol在技術上跟xmpp真的很大的落差,msn protocol顯得格外凌亂設計不良,既不結構化也談不上功能上的彈性,看起來像是非資訊背景的工程師做出來的系統,我相信當msn與yahoo在談im整合時一定相互埋怨過對方的protocol設計怎麼如此草率,這恰好凸顯了xmpp protocol 的優勢...

207.46.110.86:1863
c2s->[client to server]
s2c->[server to client]

c2s->VER 1 MSNP15 CVR0
s2c->VER 1 MSNP15

c2s->CVR 2 0x0404 winnt 5.2 i386 MSNMSGR 8.1.0178 MSFT luke_shei@hotmail.com
s2c->CVR 2 8.1.0178 8.1.0178 8.1.0178 http://msgruser.dlservice.microsoft.com/download/1/C/F/1CF776CC-90D6-4497-B079-402BA9DB8BE4/Install_Messenger.exe http://get.live.com/tc

c2s->USR 3 SSO I luke_shei@hotmail.com
s2c->GCF 0 6713
s2c->
<Policies>(省略...)</Policies>USR 3 SSO S MBI_KEY_OLD ZUzrcaa4fRluSqjOaLzc9ExfHQaoiZB4MxTjfRcmohTooJuVilSvIJ7jSy+DKBeO

此時需要使用ssl 連接 https://login.live.com/RST.srf , 並且送出認證資訊
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wssc="http://schemas.xmlsoap.org/ws/2004/04/sc" xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust">
<Header>
<ps:AuthInfo xmlns:ps="http://schemas.microsoft.com/Passport/SoapServices/PPCRL" Id="PPAuthInfo">
<ps:HostingApp>{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}</ps:HostingApp>
<ps:BinaryVersion>4</ps:BinaryVersion>
<ps:UIVersion>1</ps:UIVersion>
<ps:Cookies />
<ps:RequestParams>AQAAAAIAAABsYwQAAAAyMDUy</ps:RequestParams>
</ps:AuthInfo>
<wsse:Security>
<wsse:UsernameToken Id="user">
<wsse:Username>帳號@hotmail.com</wsse:Username>
<wsse:Password>密碼</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</Header>
<Body>
<ps:RequestMultipleSecurityTokens xmlns:ps="http://schemas.microsoft.com/Passport/SoapServices/PPCRL" Id="RSTS">
<wst:RequestSecurityToken Id="RST0">
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
<wsp:AppliesTo>
<wsa:EndpointReference>
<wsa:Address>http://Passport.NET/tb</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
</wst:RequestSecurityToken>
<wst:RequestSecurityToken Id="RST1">
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
<wsp:AppliesTo>
<wsa:EndpointReference>
<wsa:Address>messengerclear.live.com</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<wsse:PolicyReference URI="MBI_KEY_OLD" />
</wst:RequestSecurityToken>
<wst:RequestSecurityToken Id="RST2">
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
<wsp:AppliesTo>
<wsa:EndpointReference>
<wsa:Address>messenger.msn.com</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<wsse:PolicyReference URI="MBI" />
</wst:RequestSecurityToken>
</ps:RequestMultipleSecurityTokens>
</Body>
</Envelope>

https://login.live.com/RST.srf 回應

<?xml version="1.0" encoding="utf-8" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<psf:pp xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
<psf:serverVersion>1</psf:serverVersion>
<psf:PUID>0001613089FFCD2E</psf:PUID>
<psf:configVersion>3.100.2199.0</psf:configVersion>
<psf:uiVersion>3.0.869.0</psf:uiVersion>
<psf:authstate>0x48803</psf:authstate>
<psf:reqstatus>0x0</psf:reqstatus>
<psf:serverInfo Path="Live1" RollingUpgradeState="ExclusiveNew" LocVersion="0" ServerTime="2008-08-20T06:17:36Z">BAYIDSLGN1E20 2008.07.30.00.23.50</psf:serverInfo>
<psf:cookies/>
<psf:browserCookies>
<psf:browserCookie Name="MH" URL="http://www.msn.com">MH=MSFT; path=/; domain=.msn.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
<psf:browserCookie Name="MHW" URL="http://www.msn.com">MHW=; path=/; domain=.msn.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
<psf:browserCookie Name="MH" URL="http://www.live.com">MH=MSFT; path=/; domain=.live.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
<psf:browserCookie Name="MHW" URL="http://www.live.com">MHW=; path=/; domain=.live.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
</psf:browserCookies>
<psf:credProperties>
<psf:credProperty Name="MainBrandID">MSFT</psf:credProperty>
<psf:credProperty Name="BrandIDList">
</psf:credProperty>
<psf:credProperty Name="IsWinLiveUser">true</psf:credProperty>
<psf:credProperty Name="CID">15797708e38d3864</psf:credProperty>
<psf:credProperty Name="AuthMembername">帳號@hotmail.com</psf:credProperty>
</psf:credProperties>
<psf:extProperties>
<psf:extProperty Name="ANON" Expiry="Sun, 08-Mar-2009 13:17:36 GMT" Domains="" IgnoreRememberMe="false">A=604A1CF7C863B25590E98D87FFFFFFFF&E=751&W=1</psf:extProperty>
<psf:extProperty Name="NAP" Expiry="Fri, 28-Nov-2008 14:17:36 GMT" Domains="" IgnoreRememberMe="false">V=1.6&E=6f7&C=D3sTmCI3EaEA1q-Ugji4rYA5G76akrqFloSZtTfKwkT6_ToKa0MUog&W=1</psf:extProperty>
<psf:extProperty Name="LastUsedCredType">1</psf:extProperty>
</psf:extProperties>
<psf:response/>
</psf:pp>
</S:Header>
<S:Body>
<wst:RequestSecurityTokenResponseCollection xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
<wst:RequestSecurityTokenResponse>
<wst:TokenType>urn:passport:legacy</wst:TokenType>
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
<wsa:EndpointReference>
<wsa:Address>http://Passport.NET/tb</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<wst:LifeTime>
<wsu:Created>2008-08-20T06:17:36Z</wsu:Created>
<wsu:Expires>2008-08-21T06:17:36Z</wsu:Expires>
</wst:LifeTime>
<wst:RequestedSecurityToken>
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="BinaryDAToken0" Type="http://www.w3.org/2001/04/xmlenc#Element">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc">
</EncryptionMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>http://Passport.NET/STS</ds:KeyName>
</ds:KeyInfo>
<CipherData>
<CipherValue>AXFOGn0CJ316qWBnizuzibVEto6s2I2AlZRmD69bPE+dfzAzqHWA3rjheo3p+wy46qtVQJXDw61/V9tVQZ3yFuQ2vuq4EWWaH5wB8RV6Bw5EVxJvlViM4FqNf7a/DaBSUCJqoPCGXxGRvXT5VYJDmMt/KAutuoO3ULh8r1aQYDs4JJQdFzHdst95oRQkeC4b1vzzNh4mRT/3y1C6wnplhlVhArpSRIf5yI5YYAz6dq0w2jzpfUZ/dJmz/vzfEsS3jV7eO0xptvy9X7wA/YM4U1r+8cIITG7DgfU85GhJmjh5P0LbvcZ6p39R/hNxUWJrHw5WU91qdVui0uMSOpQYloZxbtHtNWiQZ0Q2y+/YyGmX7THQdfyPqMSC7wl7gl2M+wwCrPzpUgpu2hRB89kUyARUz5O849F9uBy/DzV2u+l2oNmIzcOjhNDFqf9M003tJqV+ND7DA0KBJD/wQvHXP8M0OXRuTAxA4+z5bnqa858VgqwDrg==</CipherValue>
</CipherData>
</EncryptedData>
</wst:RequestedSecurityToken>
<wst:RequestedTokenReference>
<wsse:KeyIdentifier ValueType="urn:passport">
</wsse:KeyIdentifier>
<wsse:Reference URI="#BinaryDAToken0">
</wsse:Reference>
</wst:RequestedTokenReference>
<wst:RequestedProofToken>
<wst:BinarySecret>BZP+6JadxbOLyXqPL5Ryf1hHNpI9bYtU</wst:BinarySecret>
</wst:RequestedProofToken>
</wst:RequestSecurityTokenResponse>
<wst:RequestSecurityTokenResponse>
<wst:TokenType>urn:passport:compact</wst:TokenType>
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
<wsa:EndpointReference>
<wsa:Address>messengerclear.live.com</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<wst:LifeTime>
<wsu:Created>2008-08-20T06:17:36Z</wsu:Created>
<wsu:Expires>2008-08-20T14:17:36Z</wsu:Expires>
</wst:LifeTime>
<wst:RequestedSecurityToken>

<wsse:BinarySecurityToken Id="Compact1">
t=EwBgAswbAQAUs1/VcBU2sH7mwYy3BysWZ71CRDGAAPyC8gbVv65DNR9B35NbtWgaPfSxjcx8TQRH7dSQkHl+pf46GQS1pukb1fNuh5NtW2fsIGDXCyNhyMBi4/BKhzeE66MGXBsfgdWzDzSj/SGnQYnZtvKLdBi9ihv1hR+q018ePodvV4x3Vlcet38/CE1yPd9t8Z/yhNyCBcufTbMVA2YAAAjOONh/nTbDBLABYnUuPlUVuIv9ImLzUxYuvlSzHsgEAxTJkrpnHNmJv4IS0lUGIO9+yvfEbAl46rS1vpr0MHN8uL4JIE7XkS7MHhElesCRHvMpWp/h2O9clTrk9P5krslyhepE45ZCWYyodEaCEPsD5ZEauYe4M8wf3Pm9mrF+vr0RiKwATDDz4Ow1QQ+zz/HS7XaKohPEsCQDLf5rnC+nsQha9053Wbsq6qrbTtAh5DHviCv2KjHVHykPufhlr1R/FTb4Pu/ufe3dt8r3pQseGcm0H16bYJBqlxqyG7ACIKha16xFYCltbENmNas4JGZvKWZMZsPL9XWiRwzwxg2kDUROlAZeW2AA2cBi+M8xjpZwpoktR5JbnZxu9qMta9s8576i/3plIxLxvvutva5FM/favzAauwbSZUX3virKDYKe569LyZxurrAWEmnPWNzj7ORajtvT1CXWcVwHMT+eu5oqW8PhPrKgIeCad5bRjnzyaG3WGNczkOdTcDJ8ybVCOztqrA90vqvSHS1qw1FL6JiJK0hIWHccwXrDoN7YGsnhtxhCFMLj2IQlD5KtA/SMsBJlSCtQKRa+xAE=&p=
</wsse:BinarySecurityToken>

</wst:RequestedSecurityToken>
<wst:RequestedTokenReference>
<wsse:KeyIdentifier ValueType="urn:passport:compact">
</wsse:KeyIdentifier>
<wsse:Reference URI="#Compact1">
</wsse:Reference>
</wst:RequestedTokenReference>
<wst:RequestedProofToken>

<wst:BinarySecret>
YdSj/GIkHNjeRoClluok9J4bYNsWVEea
</wst:BinarySecret>

</wst:RequestedProofToken>
</wst:RequestSecurityTokenResponse>
<wst:RequestSecurityTokenResponse>
<wst:TokenType>urn:passport:compact</wst:TokenType>
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
<wsa:EndpointReference>
<wsa:Address>messenger.msn.com</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<wst:LifeTime>
<wsu:Created>2008-08-20T06:17:36Z</wsu:Created>
<wsu:Expires>2008-08-20T14:17:36Z</wsu:Expires>
</wst:LifeTime>
<wst:RequestedSecurityToken>
<wsse:BinarySecurityToken Id="Compact2">t=EwDYAfsBAAAUAHmHi/fIK5MsbQWTulxz7EiCF2+AAFyqVQompSp1Zu7W3g7T5yMceStaxs7w5I8wsiIeECJSj2+j7V3JorQeMfR1Y5Z4Azu5z+VHsRDIPrBh7FUgleNZF9SMSrhYfCiEjstd2OWD2RIWzLFmoLdZlDmhAZp1SLtJlf52O5rK6LFwTQrBJCgwYcLrX2o9l1OnwUuIMe0sA2YAAAheN9vDJtdLsigBd3QSSEiD2MhG5sHTnl8nC9xg4TMGF1+p3MomH45rnQPiQrGsgSxbymrtvO3gDDe0GSMIfLCDxJikDWVeUGeqIfrYC/KMEBbKcK24O3H+BkiWNk8PinF8T1FNAv7kK4f/fO6/UucbIyVyZC81b8/ahFjxJ0Z8tYGF3TrAGJzvqWIrgK7Hr3EC2GaagbHs6i3c3u9aNxBWqL+2x2c4csFR79lPx+cyS4DvYY0AMf6DNt03Gy6NiG51oS5At2QMyP7xT+doH2SeDeVGM3fVCa3jL0JlkOZbDy6SxDMANfaPPfOQYEadQsubPyZBe7UDCwmN6X0iio4Jy1DJyWpbROKF+lPax8ICEtB2ZAYw8PUTkym/TSCmEwX54A/LKFa6mwvA33tr4hYIv/hEAQ==&p=</wsse:BinarySecurityToken>
</wst:RequestedSecurityToken>
<wst:RequestedTokenReference>
<wsse:KeyIdentifier ValueType="urn:passport:compact">
</wsse:KeyIdentifier>
<wsse:Reference URI="#Compact2">
</wsse:Reference>
</wst:RequestedTokenReference>
</wst:RequestSecurityTokenResponse>
</wst:RequestSecurityTokenResponseCollection>
</S:Body>
</S:Envelope>

====

BinarySecurityToken-> t=EwBgAswbAQAUs1/VcBU2sH7mwYy3BysWZ71CRDGAAPyC8gbVv65DNR9B35NbtWgaPfSxjcx8TQRH7dSQkHl+pf46GQS1pukb1fNuh5NtW2fsIGDXCyNhyMBi4/BKhzeE66MGXBsfgdWzDzSj/SGnQYnZtvKLdBi9ihv1hR+q018ePodvV4x3Vlcet38/CE1yPd9t8Z/yhNyCBcufTbMVA2YAAAjOONh/nTbDBLABYnUuPlUVuIv9ImLzUxYuvlSzHsgEAxTJkrpnHNmJv4IS0lUGIO9+yvfEbAl46rS1vpr0MHN8uL4JIE7XkS7MHhElesCRHvMpWp/h2O9clTrk9P5krslyhepE45ZCWYyodEaCEPsD5ZEauYe4M8wf3Pm9mrF+vr0RiKwATDDz4Ow1QQ+zz/HS7XaKohPEsCQDLf5rnC+nsQha9053Wbsq6qrbTtAh5DHviCv2KjHVHykPufhlr1R/FTb4Pu/ufe3dt8r3pQseGcm0H16bYJBqlxqyG7ACIKha16xFYCltbENmNas4JGZvKWZMZsPL9XWiRwzwxg2kDUROlAZeW2AA2cBi+M8xjpZwpoktR5JbnZxu9qMta9s8576i/3plIxLxvvutva5FM/favzAauwbSZUX3virKDYKe569LyZxurrAWEmnPWNzj7ORajtvT1CXWcVwHMT+eu5oqW8PhPrKgIeCad5bRjnzyaG3WGNczkOdTcDJ8ybVCOztqrA90vqvSHS1qw1FL6JiJK0hIWHccwXrDoN7YGsnhtxhCFMLj2IQlD5KtA/SMsBJlSCtQKRa+xAE=&p=
--
nonce-> ZUzrcaa4fRluSqjOaLzc9ExfHQaoiZB4MxTjfRcmohTooJuVilSvIJ7jSy+DKBeO
--
BinarySecret-> YdSj/GIkHNjeRoClluok9J4bYNsWVEea
--
此處的程式下一篇補上,將上述資訊做hash 3des 的加密...程式後,產生
HAAAAAEAAAADZgAABIAAAAgAAAAUAAAASAAAAAAAAAAAAAAAu1u3n7shOrO0b1zrRTR/+hPQ97ucXZ/4vd6sPYkgZjyEUBE+nF4Xe+y1WuNzKxLSIG9AcWpKbu0JYUa06PuyvvLCTtjeqipeyISPnyHncMivinI/LcZmGmhOpfo=
而這個值是下一個程序 USR 4 SSO S t=...&p=xxx 中的p值,而t值為BinarySecurityToken

====

c2s->USR 4 SSO S t=EwBgAswbAQAUs1/VcBU2sH7mwYy3BysWZ71CRDGAAPyC8gbVv65DNR9B35NbtWgaPfSxjcx8TQRH7dSQkHl+pf46GQS1pukb1fNuh5NtW2fsIGDXCyNhyMBi4/BKhzeE66MGXBsfgdWzDzSj/SGnQYnZtvKLdBi9ihv1hR+q018ePodvV4x3Vlcet38/CE1yPd9t8Z/yhNyCBcufTbMVA2YAAAjOONh/nTbDBLABYnUuPlUVuIv9ImLzUxYuvlSzHsgEAxTJkrpnHNmJv4IS0lUGIO9+yvfEbAl46rS1vpr0MHN8uL4JIE7XkS7MHhElesCRHvMpWp/h2O9clTrk9P5krslyhepE45ZCWYyodEaCEPsD5ZEauYe4M8wf3Pm9mrF+vr0RiKwATDDz4Ow1QQ+zz/HS7XaKohPEsCQDLf5rnC+nsQha9053Wbsq6qrbTtAh5DHviCv2KjHVHykPufhlr1R/FTb4Pu/ufe3dt8r3pQseGcm0H16bYJBqlxqyG7ACIKha16xFYCltbENmNas4JGZvKWZMZsPL9XWiRwzwxg2kDUROlAZeW2AA2cBi+M8xjpZwpoktR5JbnZxu9qMta9s8576i/3plIxLxvvutva5FM/favzAauwbSZUX3virKDYKe569LyZxurrAWEmnPWNzj7ORajtvT1CXWcVwHMT+eu5oqW8PhPrKgIeCad5bRjnzyaG3WGNczkOdTcDJ8ybVCOztqrA90vqvSHS1qw1FL6JiJK0hIWHccwXrDoN7YGsnhtxhCFMLj2IQlD5KtA/SMsBJlSCtQKRa+xAE=&p= HAAAAAEAAAADZgAABIAAAAgAAAAUAAAASAAAAAAAAAAAAAAAu1u3n7shOrO0b1zrRTR/+hPQ97ucXZ/4vd6sPYkgZjyEUBE+nF4Xe+y1WuNzKxLSIG9AcWpKbu0JYUa06PuyvvLCTtjeqipeyISPnyHncMivinI/LcZmGmhOpfo=
s2c->USR 4 OK luke_shei@hotmail.com 1 0
SBS 0 null
s2c->MSG Hotmail Hotmail 1234
MIME-Version: 1.0
Content-Type: text/x-msmsgsprofile; charset=UTF-8
LoginTime: 1219213056
EmailEnabled: 1
MemberIdHigh: 90416
MemberIdLow: -1979724498
lang_preference: 1028
preferredEmail:
country: TW
PostalCode:
Gender:
Kid: 0
Age:
BDayPre:
Birthday:
Wallet:
Flags: 1610613827
sid: 72652
MSPAuth: EwBgAswbAQAUs1/VcBU2sH7mwYy3BysWZ71CRDGAAPyC8gbVv65DNR9B35NbtWgaPfSxjcx8TQRH7dSQkHl+pf46GQS1pukb1fNuh5NtW2fsIGDXCyNhyMBi4/BKhzeE66MGXBsfgdWzDzSj/SGnQYnZtvKLdBi9ihv1hR+q018ePodvV4x3Vlcet38/CE1yPd9t8Z/yhNyCBcufTbMVA2YAAAjOONh/nTbDBLABYnUuPlUVuIv9ImLzUxYuvlSzHsgEAxTJkrpnHNmJv4IS0lUGIO9+yvfEbAl46rS1vpr0MHN8uL4JIE7XkS7MHhElesCRHvMpWp/h2O9clTrk9P5krslyhepE45ZCWYyodEaCEPsD5ZEauYe4M8wf3Pm9mrF+vr0RiKwATDDz4Ow1QQ+zz/HS7XaKohPEsCQDLf5rnC+nsQha9053Wbsq6qrbTtAh5DHviCv2KjHVHykPufhlr1R/FTb4Pu/ufe3dt8r3pQseGcm0H16bYJBqlxqyG7ACIKha16xFYCltbENmNas4JGZvKWZMZsPL9XWiRwzwxg2kDUROlAZeW2AA2cBi+M8xjpZwpoktR5JbnZxu9qMta9s8576i/3plIxLxvvutva5FM/favzAauwbSZUX3virKDYKe569LyZxurrAWEmnPWNzj7ORajtvT1CXWcVwHMT+eu5oqW8PhPrKgIeCad5bRjnzyaG3WGNczkOdTcDJ8ybVCOztqrA90vqvSHS1qw1FL6JiJK0hIWHccwXrDoN7YGsnhtxhCFMLj2IQlD5KtA/SMsBJlSCtQKRa+xAE=&p=
ClientIP: 59.120.234.89
ClientPort: 6413
ABCHMigrated: 1
Nickname: luke
MPOPEnabled: 0

Blog Archive