Contents:
- 1 MSNFTP ¶õ?
- 2 Áֿ丵ũ
- 3 ÆÄÀÏ Àü¼Û
- 3.1 MSNFTP Message
- 3.2 BYE ¸í·É
- 4 º»¹® 2
- 4.1 º»¹®
- 4.2 º»¹®
- When client wants to transfer file, it sends message to receiver with Content-Type set to application/x-msnmsgrp2p
- Content-Type is followed by P2P-Dest header.
- A P2P-Dest header is followed by 48 bytes which contains following information in sequence (we are only interested in Channel SessionID, Offset, Total Data Size, and Message Size for the purpose of File Transfer).
- Channel SessionID - 4 bytes
- ID - 4 bytes
- Offset - 8 bytes
- Total Data Size - 8 bytes
- Message Size - 4 bytes
- Flags - 4 bytes
- Acknowledgement ID - 4 bytes
- Acknowledgement UID - 4 bytes
- Acknowledgement Size - 8 bytes
- The above 48 bytes header ends with message INVITE MSNMSGR <email>@hotmail.com MSNSLP/1.0
- This is followed by few more headers like To, From indicating the sender and receiver of the file.
- Then there is 2nd Content-Type header where type is set to application/x-msnmsgr-sessionreqbody
- Followed by this is a header EUF-GUID whose value indicates whether the invitation is for a file transfer or a buddy icon transfer. In case of file transfer EUF-GUID is set to {5D3E02AB-6190-11D3-BBBB-00C04F795683}
- Then is SessionID header. When the actual file data is transfered, the Channel Session ID of that message, in the 48 bytes P2P header is set to this SessionID value. So the current SessionID header is an indication to receiver that when it receives MSNP2P message with Channel Session ID set to this, the data section contains file-data. This typically looks like -
SessionID: 1189641425\r\n
- The AppID indicates the type of file transfer viz, whethere it's buddy icon/image or a file transfer. In case of file transfer AppID is set to 2 like -
AppID: 2\r\n
- Then follows the Context part. Context's value is base64 encoded 250 bytes string which contains name of file and filesize etc information.
MSG 6 D 1348\r\n
MIME-Version: 1.0\r\n
Content-Type: application/x-msnmsgrp2p\r\n
P2P-Dest: some_body@hotmail.com\r\n
\r\n
\000\000\000\000-\037\216#\000\000\000\000\000
\000\000\000\271\004\000\000\000\000\000\000
\262\004\000\000\000\000\000\000.\371\234\020\000\000
\000\000\000\000\000\000\000\000\000\000INVITE MSNMSGR some_body@hotmail.com MSNSLP/1.0\r\n
To: <msnmsgr:some_body @hotmail.com>\r\n
From: <msnmsgr:this_buddy@hotmail.com>\r\n
Via: MSNSLP/1.0/TLP ;branch={7E873D59-824B-5084-3544-90B83C8D3C40}\r\n
CSeq: 0\r\n
Call-ID: {9C468B3E-4BEA-1C6E-9E6D-1BE9455F8147}\r\n
Max-Forwards: 0\r\n
Content-Type: application/x-msnmsgr-sessionreqbody\r\n
Content-Length: 865\r\n
\r\n
EUF-GUID: {5D3E02AB-6190-11D3-BBBB-00C04F795683}\r\n
SessionID: 1189641425\r\n
Context: PgIAAAIAAAAsAQAAAAAAAAAAAAB0AGUAcwB0ADEAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n