SNAC(04,06)/CH4  CLI_SEND_ICBM_CH4 

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.

 00 04   word   SNAC family
 00 06   word   SNAC subtype
 00 00   word   SNAC flags
 xx xx xx xx   dword   SNAC request-id
 xx xx xx xx
 xx xx xx xx
  qword   msg-id cookie
 00 04   word   message channel
 xx   byte   screenname string length
 xx ..   string   screenname string
 00 05   word   TLV.Type(0x05) - message data
 xx xx   word   TLV.Length
 xx xx xx xx   dword (LE)   Sender uin
 xx   byte   Message type
 xx   byte   Message flags
 xx xx   word (LE)   Message string length
 xx .. 00   string (asciiz)   Message string
 00 03   word   TLV.Type(0x03) - request an ack from server
 00 00   word   TLV.Length
 empty
 00 06   word   TLV.Type(0x06) - store message if recipient offline
 00 00   word   TLV.Length
 empty

Example SNAC dumps with flap header:

  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                                    .....


  Main | Basic | Login | Snaclist | Sequences | Misc | Changes | Credits | Terms