Protocols/OSCAR/SNAC/ICBM CHANNEL MSG TO CLIENT: Difference between revisions
No edit summary |
No edit summary |
||
Line 39: | Line 39: | ||
| ''[Class: [[Protocols/OSCAR/Foodgroups/ICBM#TLV_Class:_ICBM_TAGS|ICBM__TAGS]]]'' Actual message | | ''[Class: [[Protocols/OSCAR/Foodgroups/ICBM#TLV_Class:_ICBM_TAGS|ICBM__TAGS]]]'' Actual message | ||
|} | |} | ||
=== From Aleksandr Shutko: SNAC(04,07) message for client from server === | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF > | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0><tr> | |||
<td><b><font color="white">SNAC(04,07) </font></b></td> | |||
<td width=70% align=right><b><font color="white">ICBM__CHANNEL_MSG_TOCLIENT </font></b> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
You'll receive this snac when another client send you a message thru server. | |||
Within the ICBM (Inter-Client Basic Message) types, a channel is defined. | |||
Each channel represents a different kind of message.<br><br> | |||
Channel 1 is used for simple plain text messages. Channel 2 is used for complex | |||
messages (rtf, utf8) and negotiating "rendezvous". These transactions end in | |||
something more complex happening, such as a chat invitation, or a file transfer. | |||
Channel 4 is used for various ICQ messages. Examples are normal messages, | |||
URLs, and old-style authorization.<br><br> | |||
This snac contain one fixed part (sender uin, channel, msg-id cookie, sender | |||
info) and <b>channel-dependend</b> tlv-chain with message data. | |||
See also [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|additional information]] about online | |||
userinfo block.<br><br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 07</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC subtype</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>SNAC request-id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx xx xx<br> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td width=5> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel (see table below)</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>sender warning level</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>number of TLVs in fixed part</td> | |||
</tr> | |||
</table> | |||
<!-- TLV 0x01 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 01</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x01) - user class</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|User class]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x01 end --> | |||
<!-- TLV 0x06 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 06</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x06) - user status</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_STATUS|User status]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x06 end --> | |||
<!-- TLV 0x0F begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0F</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0F) - <span >online time</span></td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>client online time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x0F end --> | |||
<!-- TLV 0x03 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 03</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x03) - account creation time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>user account creation time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x03 end --> | |||
<hr> | |||
<!-- TLV 0xXX --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0xXX) - icbm data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> ....</td> | |||
<td width=5> </td> | |||
<td width=17%>....</td> | |||
<td width=5> </td> | |||
<td width=60%>....</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=35> </td> | |||
<td width=23%>....</td> | |||
<td width=17% valign=top> ....</td> | |||
<td valign=top>....</td> | |||
</tr> | |||
</table> | |||
<!-- TLV 0xXX --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0xXX) - icbm data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> ....</td> | |||
<td width=5> </td> | |||
<td width=17%>....</td> | |||
<td width=5> </td> | |||
<td width=60%>....</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=white> | |||
<table width=100% cellSpacing=1 cellPadding=1 align=center border=0> | |||
<tr> | |||
<td bgcolor=#f0f0f0 valign=top width=15%><b> <font size=2>[[Protocols/OSCAR/SNAC/ICBM_CHANNEL_MSG_TO_CLIENT#Channel_1_Example|Channel 1]] </b></font></td> | |||
<td bgcolor=#f0f0f0 valign=top> Channel 1 message format (plain-text messages)</td> | |||
</tr> | |||
<tr > | |||
<td bgcolor=#f0f0f0 valign=top><b> <font size=2>[[Protocols/OSCAR/SNAC/ICBM_CHANNEL_MSG_TO_CLIENT#Channel_2_Example|Channel 2]] </b></font></td> | |||
<td bgcolor=#f0f0f0 valign=top> Channel 2 message format (rtf messages, rendezvous)</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f0f0f0 valign=top><b> <font size=2>[[Protocols/OSCAR/SNAC/ICBM_CHANNEL_MSG_TO_CLIENT#Channel_4_Example|Channel 4]] </b></font></td> | |||
<td bgcolor=#f0f0f0 valign=top> Channel 4 message format (typed old-style messages)</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
== Examples == | == Examples == | ||
=== Channel 1 Example === | === Channel 1 Example === | ||
=== From Aleksandr Shutko: SNAC(04,07)/CH1 channel1 message from server for client === | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF > | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0><tr> | |||
<td><b><font color="white">SNAC(04,07)/CH1 </font></b></td> | |||
<td width=70% align=right><b><font color="white">ICBM__CHANNEL_MSG_TOCLIENT/CH1 </font></b> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0><tr><td><br> | |||
This is the message from server that was sent by another client. It contain | |||
two parts: fixed part (sender uin, msg-id cookie, channel, sender info) and | |||
message data part. See also [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|additional information]] | |||
about online userinfo block. | |||
<br><br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 07</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC subtype</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>SNAC request-id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx xx xx<br> xx xx xx xx</td> | |||
<td> </td> | |||
<td valign=top>qword</td> | |||
<td> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td> 00 01</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>sender warning level</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>number of TLVs in fixed part</td> | |||
</tr> | |||
</table> | |||
<!-- TLV 0x01 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 01</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x01) - user class</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|User class]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x01 end --> | |||
<!-- TLV 0x06 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 06</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x06) - user status</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_STATUS|User status]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x06 end --> | |||
<!-- TLV 0x0F begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0f</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0f) - user idle time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>client idle time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x0F end --> | |||
<!-- TLV 0x03 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 03</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x03) - account creation time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>user account creation time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x03 end --> | |||
<!-- TLV 0x04 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 04</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x04) - automated response flag</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td colspan=5> empty (this TLV appears in automated responses like away messages)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x04 end --> | |||
<hr> | |||
<!-- TLV 0xXX --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 02</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x02) - message data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td colspan=5> | |||
<!-- nested tlv(0501) begin --> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=30> </td> | |||
<td> | |||
<table width=560 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=560 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=21%> 05</td> | |||
<td width=5> </td> | |||
<td>byte</td> | |||
<td width=5> </td> | |||
<td width=60%>fragment identifier (array of required capabilities)</td> | |||
</tr> | |||
<tr> | |||
<td> 01</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>fragment version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=560 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=21%> xx ..</td> | |||
<td width=5> </td> | |||
<td>array</td> | |||
<td width=5> </td> | |||
<td width=60%>byte array of required capabilities (1 - text)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- nested tlv(0501) end--> | |||
<!-- nested tlv(0101) begin --> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=30> </td> | |||
<td> | |||
<table width=560 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=560 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=21%> 01</td> | |||
<td width=5> </td> | |||
<td>byte</td> | |||
<td width=5> </td> | |||
<td width=60%>fragment identifier (message text)</td> | |||
</tr> | |||
<tr> | |||
<td> 01</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>fragment version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=560 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=21%> 00 00</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>Message charset number</td> | |||
</tr> | |||
<tr> | |||
<td width=21%> ff ff</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>Message charset subset</td> | |||
</tr> | |||
<tr> | |||
<td width=21%> xx ..</td> | |||
<td width=5> </td> | |||
<td>string (ascii)</td> | |||
<td width=5> </td> | |||
<td width=60%>Message text string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0501) end--> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dumps with flap header: | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr> | |||
<td bgcolor=#E9E9E9> | |||
<font size=3><pre style="font-size: 13px"> | |||
2a 02 ae e3 00 66 00 04 00 07 00 00 9a b3 8d eb *....f.......... | |||
3e bc 91 9e 4a ba ef c9 00 01 07 31 30 30 30 30 >...J......10000 | |||
30 30 00 00 00 04 00 01 00 02 00 50 00 06 00 04 00.........P.... | |||
00 01 00 00 00 0f 00 04 00 00 04 66 00 03 00 04 ...........f.... | |||
00 00 00 00 00 02 00 24 05 01 00 01 00 01 01 00 .......$........ | |||
1b 00 00 00 00 74 65 73 74 20 70 6c 61 69 6e 2d .....test plain- | |||
74 65 78 74 20 6d 65 73 73 61 67 65 text message | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
=== Channel 2 Example === | === Channel 2 Example === | ||
=== From Aleksandr Shutko: SNAC(04,07)/CH2 channel 2 message from server for client === | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF> | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td><b><font color="white">SNAC(04,07)/CH2 </font></b></td> | |||
<td width=70% align=right><b><font color="white">ICBM__CHANNEL_MSG_TOCLIENT/CH2 </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
This is the message from server that was sent by another client. It contain | |||
two parts: fixed part (sender uin, msg-id cookie, channel, sender info) and | |||
message data part. See also [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|additional information]] | |||
about online userinfo block.<br><br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 07</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC subtype</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>SNAC request-id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx xx xx<br> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>sender warning level</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>number of TLVs in fixed part</td> | |||
</tr> | |||
</table> | |||
<!-- TLV 0x01 begin --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 01</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x01) - user class</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|User class]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x01 end --> | |||
<!-- TLV 0x06 begin --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 06</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x06) - user status</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_STATUS|User status]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x06 end --> | |||
<!-- TLV 0x0F begin --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0F</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0F) - <span>online time</span></td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>client online time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x0F end --> | |||
<!-- TLV 0x03 begin --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 03</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x03) - account creation time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>user account creation time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x03 end --> | |||
<hr> | |||
<!-- TLV 0x05 --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 05</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x05) - rendezvous message data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>message type (0 - request, 1 - cancel, 2 - accept)</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx<br> xx xx xx xx</td> | |||
<td> </td> | |||
<td valign=top>qword</td> | |||
<td> </td> | |||
<td valign=top>msg-id cookie (same as above)</td> | |||
</tr> | |||
<tr valign=top> | |||
<td> xx .. xx</td> | |||
<td> </td> | |||
<td>guid</td> | |||
<td> </td> | |||
<td>[[Protocols/OSCAR/UUIDs|capability]] (determines format | |||
of message data in "extention data" below)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<!-- TLV 0x04 --> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=580 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x04) - external ip</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=55%>external ip</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x05 --> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=580 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 05</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x05) - listening port</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>listening port</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0A --> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=580 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 0A</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x0A) - unknown</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>unknown (usually 1)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0B --> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=580 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 0B</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x0B) - unknown</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>unknown</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0F --> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=580 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 0F</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x0F) - unknown</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td colspan=5> empty</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x2711 --> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=580 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 27 11</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>TLV.Type(0x2711) - extention data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#c9c9e9>Following contents is capability-specific.</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=580 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20></td> | |||
<td> | |||
<table width=550 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> | |||
<tr><td bgcolor=#c9c9e9 style="font-size: 13px;"> | |||
Data format description for capability <b><font face="Courier New"> | |||
{09461349-4C7F-11D1-8222-444553540000}</font></b> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=550 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>length of following data</td> | |||
</tr> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word (LE)</td> | |||
<td width=5> </td> | |||
<td width=55%>protocol version</td> | |||
</tr> | |||
<tr> | |||
<td> xx .. xx</td> | |||
<td> </td> | |||
<td>guid (LE)</td> | |||
<td> </td> | |||
<td>[[Protocols/OSCAR/UUIDs#ICQ_Message_Extensions|plugin]] or zero bytes</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>unknown</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword (LE)</td> | |||
<td> </td> | |||
<td>client capabilities flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>unknown</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>seems to be a downcounter</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=550 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word (LE)</td> | |||
<td width=5> </td> | |||
<td width=55%>length of following data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>seems to be a downcounter as in first chunk above</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td></td> | |||
<td> </td> | |||
<td>unknown, usually zeros</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=550 cellSpacing=0 cellPadding=2 align=center border=0> | |||
<tr> | |||
<td>if plugin field in first chunk above is zero,<br>here is | |||
[[Protocols/OSCAR/Messages#Message|message]], overwise here is | |||
plugin-specific data. | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dumps with flap header: | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr> | |||
<td bgcolor=#E9E9E9> | |||
<font size=3><pre style="font-size: 13px"> | |||
2A 02 08 2C 01 9D 00 04 00 07 00 00 90 2F 30 11 *..,.???......???/0. | |||
70 95 A0 00 26 1F 00 00 00 02 07 31 32 33 34 35 p??????.&......12345 | |||
36 37 00 00 00 04 00 01 00 02 00 50 00 06 00 04 67.........P.... | |||
20 12 00 00 00 0F 00 04 00 00 06 F3 00 03 00 04 ..........???.... | |||
40 5A 93 78 00 05 01 5B 00 00 70 95 A0 00 26 1F @Z???x...[..p??????.&. | |||
00 00 09 46 13 49 4C 7F 11 D1 82 22 44 45 53 54 ...F.IL.T???"DEST | |||
00 00 00 0A 00 02 00 01 00 0F 00 00 27 11 01 33 ............'..3 | |||
1B 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |||
00 00 00 00 00 00 03 00 00 00 00 E3 FF 0E 00 E3 ...........???..??? | |||
FF 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ???............... | |||
00 21 00 CC 00 7B 5C 72 74 66 31 5C 61 6E 73 69 .!.???.{\rtf1\ansi | |||
5C 61 6E 73 69 63 70 67 31 32 35 31 5C 64 65 66 \ansicpg1251\def | |||
66 30 5C 64 65 66 6C 61 6E 67 31 30 34 39 7B 5C f0\deflang1049{\ | |||
66 6F 6E 74 74 62 6C 7B 5C 66 30 5C 66 6E 69 6C fonttbl{\f0\fnil | |||
5C 66 63 68 61 72 73 65 74 32 30 34 7B 5C 2A 5C \fcharset204{\*\ | |||
66 6E 61 6D 65 20 4D 53 20 53 61 6E 73 20 53 65 fname MS Sans Se | |||
72 69 66 3B 7D 4D 53 20 53 68 65 6C 6C 20 44 6C rif;}MS Shell Dl | |||
67 3B 7D 7D 0D 0A 7B 5C 63 6F 6C 6F 72 74 62 6C g;}}..{\colortbl | |||
20 3B 5C 72 65 64 30 5C 67 72 65 65 6E 30 5C 62 ;\red0\green0\b | |||
6C 75 65 30 3B 7D 0D 0A 5C 76 69 65 77 6B 69 6E lue0;}..\viewkin | |||
64 34 5C 75 63 31 5C 70 61 72 64 5C 63 66 31 5C d4\uc1\pard\cf1\ | |||
66 30 5C 66 73 32 30 3C 23 23 69 63 71 69 6D 61 f0\fs20<##icqima | |||
67 65 30 30 30 38 3E 5C 70 61 72 0D 0A 7D 0D 0A ge0008>\par..}.. | |||
00 00 00 00 00 FF FF FF 00 26 00 00 00 7B 39 37 .....?????????.&...{97 | |||
42 31 32 37 35 31 2D 32 34 33 43 2D 34 33 33 34 B12751-243C-4334 | |||
2D 41 44 32 32 2D 44 36 41 42 46 37 33 46 31 34 -AD22-D6ABF73F14 | |||
39 32 7D 92} | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
=== Channel 4 Example === | === Channel 4 Example === | ||
=== From Aleksandr Shutko: SNAC(04,07) message for client from server === | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF > | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr><td><b><font color="white">SNAC(04,07) </font></b></td> | |||
<td width=70% align=right><b><font color="white">ICBM__CHANNEL_MSG_TOCLIENT/CH4 </font></b> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
You'll receive this snac when another client send you a message on channel 4 | |||
thru server. ICQ clients use this snac to send messages to an old/offline/invisible | |||
clients if message type != 1 or message flags != 0 (for example plain-text | |||
multi-recipient message to an offline client) but this doesn't mean that you | |||
will never receive usual channel 4 plain-text message. See also | |||
[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|additional information]] about online userinfo | |||
block.<br><br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 07</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC subtype</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>SNAC request-id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx xx xx<br> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td width=5> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel (see table below)</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>sender warning level</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>number of TLVs in fixed part</td> | |||
</tr> | |||
</table> | |||
<!-- TLV 0x01 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 01</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x01) - user class</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|User class]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x01 end --> | |||
<!-- TLV 0x06 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 06</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x06) - user status</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_STATUS|User status]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x06 end --> | |||
<!-- TLV 0x0F begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0f</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0f) - user idle time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>client idle time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x0F end --> | |||
<!-- TLV 0x03 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 03</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x03) - account creation time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>user account creation time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x03 end --> | |||
<hr> | |||
<!-- TLV 0x05 begin --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 05</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x05) - message data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword (LE)</td> | |||
<td width=5> </td> | |||
<td width=60%>Sender uin</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>[[Protocols/OSCAR/Messages#Message_Types|Message type]]</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>[[Protocols/OSCAR/Messages#Message_Flags|Message flags]]</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>Message string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx .. 00</td> | |||
<td> </td> | |||
<td>string (asciiz)</td> | |||
<td> </td> | |||
<td>Message string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- tlv 0x05 end --> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dumps with flap header: | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr> | |||
<td bgcolor=#E9E9E9> | |||
<font size=3><pre style="font-size: 13px"> | |||
2a 02 ae e2 00 6a 00 04 00 07 00 00 9a b3 8d eb *....j.......... | |||
3e bc 8e 0a 59 65 b9 56 00 04 07 31 30 30 30 30 >...Ye.V...10000 | |||
30 30 00 00 00 04 00 01 00 02 00 50 00 06 00 04 00.........P.... | |||
00 01 00 00 00 0f 00 04 00 00 00 d2 00 03 00 04 ................ | |||
00 00 00 00 00 05 00 28 40 42 0f 00 04 00 20 00 .......(@B.... . | |||
55 72 6c 20 64 65 73 63 72 69 70 74 69 6f 6e fe Url description. | |||
68 74 74 70 3a 2f 2f 74 65 73 74 2e 75 72 6c 00 http://test.url. | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
Line 52: | Line 2,027: | ||
{{Protocols/OSCAR/Foodgroups/ICBM/SNACs/Simple}} | {{Protocols/OSCAR/Foodgroups/ICBM/SNACs/Simple}} | ||
[[Category:With_Contrib]] | |||
[[Category:Stub]] | [[Category:Stub]] | ||
[[Category:AOL]] | [[Category:AOL]] |
Latest revision as of 11:48, 14 February 2021
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
Foodgroups |
OSERVICE (0x0001) |
LOCATE (0x0002) |
BUDDY (0x0003) |
ICBM (0x0004) |
ADVERT (0x0005) |
INVITE (0x0006) |
ADMIN (0x0007) |
POPUP (0x0008) |
PD (0x0009) |
USER_LOOKUP (0x000A) |
STATS (0x000B) |
TRANSLATE (0x000C) |
CHAT_NAV (0x000D) |
CHAT (0x000E) |
ODIR (0x000F) |
BART (0x0010) |
FEEDBAG (0x0013) |
ICQ (0x0015) |
BUCP (0x0017) |
ALERT (0x0018) |
PLUGIN (0x0022) |
UNNAMED_FG_24 (0x0024) |
MDIR (0x0025) |
ARS (0x044A) |
ID | Origin | Name | Foodgroup | Service | Status | Version |
---|---|---|---|---|---|---|
0x0004, 0x0007 | Host | ICBM__CHANNEL_MSG_TOCLIENT | Unspecified | BOS | Active | 1.25 |
This is the ICBM__CHANNEL_MSG_TOHOST after it has been reformatted by the host and sent to the destination client.
SNAC Header
Foodgroup | uint16 (word) | 00 04 |
Subgroup | uint16 (word) | 00 07 |
Flags | uint16 (word) | 00 00 |
Request ID | uint32 (dword) | 00 00 00 00 |
SNAC Data
Name | Type | Notes |
---|---|---|
cookie | ICBM Cookie | Opaque data generated by conversation initiator and used to link up the conversation and errors |
channel | uint16 (word) | [Class: ICBM__CHANNELS] Channel the message is on |
info | OSERVICE__USERINFO | Information about the sender of the message |
icbmTlvs | TLV | [Class: ICBM__TAGS] Actual message |
From Aleksandr Shutko: SNAC(04,07) message for client from server
|
Channel 1 is used for simple plain text messages. Channel 2 is used for complex
messages (rtf, utf8) and negotiating "rendezvous". These transactions end in
something more complex happening, such as a chat invitation, or a file transfer.
Channel 4 is used for various ICQ messages. Examples are normal messages,
URLs, and old-style authorization. This snac contain one fixed part (sender uin, channel, msg-id cookie, sender
info) and channel-dependend tlv-chain with message data.
See also additional information about online
userinfo block.
|
|
Examples
Channel 1 Example
From Aleksandr Shutko: SNAC(04,07)/CH1 channel1 message from server for client
|
This is the message from server that was sent by another client. It contain
two parts: fixed part (sender uin, msg-id cookie, channel, sender info) and
message data part. See also additional information
about online userinfo block.
|
Example SNAC dumps with flap header:
|
Channel 2 Example
From Aleksandr Shutko: SNAC(04,07)/CH2 channel 2 message from server for client
|
|
Example SNAC dumps with flap header:
|
Channel 4 Example
From Aleksandr Shutko: SNAC(04,07) message for client from server
|
|
Example SNAC dumps with flap header:
|
ICBM SNACs
|