Difference between revisions of "Protocols/OSCAR/SNAC/ICBM CHANNEL MSG TO HOST"
Line 65: | Line 65: | ||
| ''[Class: [[Protocols/OSCAR/Foodgroups/ICBM#TLV_Class:_ICBM_TAGS|ICBM__TAGS]]]'' Message data and parameters; it must contain either the IM or DATA tag | | ''[Class: [[Protocols/OSCAR/Foodgroups/ICBM#TLV_Class:_ICBM_TAGS|ICBM__TAGS]]]'' Message data and parameters; it must contain either the IM or DATA tag | ||
|} | |} | ||
+ | === From Aleksandr Shutko: SNAC(04,06) ICBM__CHANNEL_MSG_TOHOST === | ||
+ | |||
+ | <table width=640 cellSpacing=0 cellPadding=0 border=0> | ||
+ | <tr> | ||
+ | <td> | ||
+ | <br> | ||
+ | Client use this snac to send message thru server. Within the ICBM | ||
+ | (Inter-Client Basic Message) types (family 4), a channel is defined. | ||
+ | Each channel represents a different kind of message.<br><br> | ||
+ | |||
+ | Channel 1 is used for what would commonly be called an "instant message" (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 3 is used for chat messages (not in the same family as | ||
+ | these channels). 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 (target uin, channel, msg-id cookie) | ||
+ | and <b>channel-dependend</b> tlv-chain.<br><br> | ||
+ | |||
+ | First dword in msg-id cookies is actually the computer uptime in milliseconds | ||
+ | (ie GetTickCount(), at least this is what the ICQ Lite and the other official | ||
+ | clients I have tested uses).<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 06</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=20> </td> | ||
+ | <td width=147> 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> </td> | ||
+ | <td> xx xx</td> | ||
+ | <td> </td> | ||
+ | <td>word</td> | ||
+ | <td> </td> | ||
+ | <td>message channel (see table below)</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> | ||
+ | <td> xx</td> | ||
+ | <td> </td> | ||
+ | <td>byte</td> | ||
+ | <td> </td> | ||
+ | <td>screenname string length</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> | ||
+ | <td> xx ..</td> | ||
+ | <td> </td> | ||
+ | <td>string</td> | ||
+ | <td> </td> | ||
+ | <td>screenname string</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=147> xx xx</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0xXX) - icbm info</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=147> ....</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=17%>....</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>....</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=147> </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=147> xx xx</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0xXX) - icbm info</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=147> ....</td> | ||
+ | <td width=5> </td> | ||
+ | <td>....</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>....</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_HOST#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_HOST#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_HOST#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,06)/CH1 ICBM__CHANNEL_MSG_TOHOST/CH1 === | ||
+ | |||
+ | <table width=640 cellSpacing=0 cellPadding=0 border=0> | ||
+ | <tr> | ||
+ | <td> | ||
+ | <br> | ||
+ | Client use this snac to send message thru server on channel 1. | ||
+ | All clients use this snac to send plain-text messages to an old | ||
+ | clients and to clients that doesn't support channel 2 messages. TLV(0x03) | ||
+ | and TLV(0x06) is optional. | ||
+ | <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 06</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 valign=top>qword</td> | ||
+ | <td> </td> | ||
+ | <td width=55% valign=top>msg-id cookie</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> 00 01</td> | ||
+ | <td>word</td> | ||
+ | <td> </td> | ||
+ | <td>message channel</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> xx</td> | ||
+ | <td>byte</td> | ||
+ | <td> </td> | ||
+ | <td>screenname string length</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> xx ..</td> | ||
+ | <td>string</td> | ||
+ | <td> </td> | ||
+ | <td>screenname string</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | <!-- TLV 0xXX --> | ||
+ | <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 02</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0x02) - 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 colspan=5> | ||
+ | |||
+ | <table width=600 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=#E9E9E9> | ||
+ | |||
+ | <table width=580 cellSpacing=0 cellPadding=0 align=center border=0 > | ||
+ | <tr> | ||
+ | <td width=125> 05</td> | ||
+ | <td width=5> </td> | ||
+ | <td>byte</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>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>Length of rest data</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | </td></tr> | ||
+ | <tr><td bgcolor=#E9E9E9> | ||
+ | <table width=580 cellSpacing=0 cellPadding=0 align=center border=0 > | ||
+ | <tr> | ||
+ | <td width=125> xx ...</td> | ||
+ | <td width=5> </td> | ||
+ | <td>array</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>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> | ||
+ | |||
+ | <table width=600 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=#E9E9E9 > | ||
+ | |||
+ | <table width=580 cellSpacing=0 cellPadding=0 align=center border=0 > | ||
+ | <tr> | ||
+ | <td width=125> 01</td> | ||
+ | <td width=5> </td> | ||
+ | <td>byte</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>fragment identifier (text message)</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>Length of rest data</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | </td></tr> | ||
+ | <tr><td bgcolor=#E9E9E9> | ||
+ | |||
+ | <table width=580 cellSpacing=0 cellPadding=0 align=center border=0 > | ||
+ | <tr> | ||
+ | <td width=125> 00 00</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>Message charset number</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> ff ff</td> | ||
+ | <td> </td> | ||
+ | <td>word</td> | ||
+ | <td> </td> | ||
+ | <td >Message language number</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> xx ..</td> | ||
+ | <td> </td> | ||
+ | <td>string (ascii)</td> | ||
+ | <td> </td> | ||
+ | <td>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> | ||
+ | |||
+ | </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 --> | ||
+ | <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 03</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0x03) - request an ack from server</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=610 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 0x06 --> | ||
+ | <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 06</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0x06) - store message if recipient offline</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=610 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> | ||
+ | |||
+ | |||
+ | </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 23 6c 00 47 00 04 00 06 00 00 00 01 00 06 *.#l.G.......... | ||
+ | 67 c3 15 01 3d 3a 00 00 00 01 07 31 30 30 30 30 g...=:.....10000 | ||
+ | 30 30 00 02 00 23 05 01 00 01 01 01 01 00 1a 00 00...#.......... | ||
+ | 00 ff ff 74 65 73 74 20 63 68 61 6e 6e 65 6c 20 ...test channel | ||
+ | 31 20 6d 65 73 73 61 67 65 00 06 00 00 1 message.... | ||
+ | |||
+ | </pre></font> | ||
+ | </td></tr></table> | ||
+ | </td></tr></table> | ||
+ | |||
=== Channel 2 Example === | === Channel 2 Example === | ||
+ | |||
+ | === From Aleksandr Shutko: SNAC(04,06)/CH2 ICBM__CHANNEL_MSG_TOHOST/CH2 === | ||
+ | |||
+ | <table width=640 cellSpacing=0 cellPadding=0 border=0> | ||
+ | <tr> | ||
+ | <td> | ||
+ | <br>Client use this snac to send message thru server on channel 2.<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 06</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 valign=top>qword</td> | ||
+ | <td> </td> | ||
+ | <td width=55% valign=top>msg-id cookie</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> 00 02</td> | ||
+ | <td>word</td> | ||
+ | <td> </td> | ||
+ | <td>message channel</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> xx</td> | ||
+ | <td>byte</td> | ||
+ | <td> </td> | ||
+ | <td>screenname string length</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> xx ..</td> | ||
+ | <td>string</td> | ||
+ | <td> </td> | ||
+ | <td>screenname string</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | <!-- 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 0x03 --> | ||
+ | <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 03</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0x03) - internal 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%>internal 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> 11 27</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, 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> | ||
+ | |||
+ | <!-- TLV 0x03 --> | ||
+ | <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 03</td> | ||
+ | <td width=5> </td> | ||
+ | <td>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=55%>TLV.Type(0x03) - request an ack from server</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=610 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> | ||
+ | |||
+ | </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 36 87 00 99 00 04 00 06 00 00 00 0F 00 06 *.6???.???.......... | ||
+ | CC EB 54 00 F7 07 00 00 00 02 09 31 32 33 34 35 ??????T.???......12345 | ||
+ | 36 37 38 39 00 05 00 73 00 00 CC EB 54 00 F7 07 6789...s..??????T.???. | ||
+ | 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 00 4B ............'..K | ||
+ | 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 FB FF 0E 00 FB ...........v???..v | ||
+ | FF 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ???............... | ||
+ | 00 21 00 0E 00 54 65 73 74 20 6D 65 73 73 61 67 .!...Test messag | ||
+ | 65 2E 00 00 00 00 00 FF FF FF 00 00 03 00 00 e......?????????..... | ||
+ | |||
+ | </pre></font> | ||
+ | </td></tr></table> | ||
+ | </td></tr></table> | ||
+ | |||
=== Channel 4 Example === | === Channel 4 Example === | ||
+ | === From Aleksandr Shutko: SNAC(04,06)/CH4 ICBM__CHANNEL_MSG_TOHOST/CH4 === | ||
+ | |||
+ | <table width=640 cellSpacing=0 cellPadding=0 border=0> | ||
+ | <tr> | ||
+ | <td> | ||
+ | <br> | ||
+ | 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 | ||
+ | can't send usual plain-text message on channel 4. TLV(0x03) and TLV(0x06) | ||
+ | is optional. | ||
+ | <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 06</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> 00 04</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> | ||
+ | </table> | ||
+ | |||
+ | <!-- TLV 0x05 --> | ||
+ | <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 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 03</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=17%>word</td> | ||
+ | <td width=5> </td> | ||
+ | <td width=60%>TLV.Type(0x03) - request an ack from server</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</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 --> | ||
+ | <table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | ||
+ | <tr><td height=8 colspan=3></td></tr> | ||
+ | <tr><td width=30> </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) - store message if recipient offline</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</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 56 1e 00 6f 00 04-00 06 00 00 00 0b 00 06 *.V..o.......... | ||
+ | 4e b5 6c 01 33 28 00 00-00 04 07 31 30 30 30 30 N.l.3(.....10000 | ||
+ | 30 30 00 05 00 4b 8f e4-5e 00 04 00 43 00 54 68 00...K..^...C.Th | ||
+ | 69 73 20 69 73 20 74 68-65 20 74 65 73 74 20 75 is is the test u | ||
+ | 72 6c 20 6d 65 73 73 61-67 65 20 74 6f 20 61 6e rl message to an | ||
+ | 20 6f 6c 64 20 63 6c 69-65 6e 74 fe 68 74 74 70 old client.http | ||
+ | 3a 2f 2f 68 74 74 70 2e-74 65 73 74 2e 75 72 6c ://http.test.url | ||
+ | 00 00 06 00 00 ..... | ||
+ | |||
+ | </pre></font> | ||
+ | </td></tr></table> | ||
+ | </td></tr></table> | ||
+ | |||
Line 78: | Line 1,407: | ||
{{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:46, 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, 0x0006 | Client | ICBM__CHANNEL_MSG_TOHOST | Unspecified | BOS | Active | 1.25 |
This is the basic inter-client message after which the group was named (Inter-Client Basic Messages).
Contents
SNAC Header
Foodgroup | uint16 (word) | 00 04 |
Subgroup | uint16 (word) | 00 06 |
Flags | uint16 (word) | 00 00 |
Request ID | uint32 (dword) | 00 00 00 00 |
SNAC Data
Length | Description |
---|---|
8 bytes | Random message cookie |
2 bytes |
Channel ID. Can be one of the following:
|
1 byte | Length L of the following |
L bytes | The destination AIM screen name or ICQ number (in ASCII) of this ICBM |
X bytes | TLVs |
Once at the server, the SNAC is reformatted into a ICBM__CHANNEL_MSG_TOCLIENT before it is sent to the destination user.
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 |
dest username | string08 | Destination username, who should receive the message |
icbmTlvs | Rest of SNAC array of TLV | [Class: ICBM__TAGS] Message data and parameters; it must contain either the IM or DATA tag |
From Aleksandr Shutko: SNAC(04,06) ICBM__CHANNEL_MSG_TOHOST
Channel 1 is used for what would commonly be called an "instant message" (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 3 is used for chat messages (not in the same family as
these channels). Channel 4 is used for various ICQ messages.
Examples are normal messages, URLs, and old-style
authorization. This snac contain one fixed part (target uin, channel, msg-id cookie)
and channel-dependend tlv-chain. First dword in msg-id cookies is actually the computer uptime in milliseconds
(ie GetTickCount(), at least this is what the ICQ Lite and the other official
clients I have tested uses).
|
|
Examples
Channel 1 Example
From Aleksandr Shutko: SNAC(04,06)/CH1 ICBM__CHANNEL_MSG_TOHOST/CH1
|
Example SNAC dumps with flap header:
|
Channel 2 Example
From Aleksandr Shutko: SNAC(04,06)/CH2 ICBM__CHANNEL_MSG_TOHOST/CH2
|
Example SNAC dumps with flap header:
|
Channel 4 Example
From Aleksandr Shutko: SNAC(04,06)/CH4 ICBM__CHANNEL_MSG_TOHOST/CH4
|
Example SNAC dumps with flap header:
|
ICBM SNACs
|