net.sf.jqql.packets.in._05
Class TransferReplyPacket
java.lang.Object
net.sf.jqql.packets.Packet
net.sf.jqql.packets.InPacket
net.sf.jqql.packets._05InPacket
net.sf.jqql.packets.in._05.TransferReplyPacket
public class TransferReplyPacket
- extends _05InPacket
repy packet for sending packet. This packet may not be reply packet, maybe is sent by server proactive.
It's necessary to check source. If source is QQ_CLIENT, it's a reply packet.
1. head
2. unknown 8 byte, same as request packet
3. session id, the value is different from the current session id. I don't know how to use it.
4. unknown 4 byte, same as request packet
5. length of content behind, excludes packet tail, 2 byte
6. unknown content
7. tail
ä¼ é€åŒ…的回å¤åŒ…,这个包ä¸ä¸€å®šæ˜¯å›žå¤åŒ…,也å¯èƒ½æ˜¯æœåŠ¡å™¨ä¸»åŠ¨å‘出,需è¦åˆ¤æ–source
如果source是QQ_CLIENT,则这个是回å¤åŒ…
1. 头部
2. 未知的8å—节,和请求包一致
3. session id,但是这个值和本次会è¯çš„idå·²ç»ä¸åŒï¼Œä¸çŸ¥æœ‰ä½•用处
4. 未知的4å—节,和请求包一致
5. åŽé¢å†…容的长度,ä¸åŒ…括包尾,2å—节
6. 未知内容
7. 尾部
If the source is not QQ_CLIENT, it's sent proactive by server
different sequence, and content of packet different too. file basic nfo use sequence 0x0000, file data use 0x0001
when sequence is 0x0000, format is :
1. head
2. unknown 8 byte
3. session id, 4 byte
4. unknown 4 byte
5. length of content behind, 2 byte
6. unknown 2 byte
7. photo's md5, 16 byte
8. photo file name's md5, 16 byte
9. photo file length, 4 byte
10. file name length
11. file name
12. unknown 8 byte
13. tail
如果source䏿˜¯QQ_CLIENT,则是æœåŠ¡å™¨ä¸»åŠ¨å‘出的包
ä¸åŒçš„åºå·ï¼ŒåŒ…的内容也ä¸åŒï¼Œæ–‡ä»¶åŸºæœ¬ä¿¡æ¯ä½¿ç”¨åºå·0x0000,文件数æ®ä½¿ç”¨åºå·0x0001
当åºå·æ˜¯0x0000æ—¶ï¼Œæ ¼å¼å¦‚下
1. 头部
2. 未知的8å—节
3. session id, 4å—节
4. 未知的4å—节
5. åŽé¢çš„内容长度,2å—节
6. 未知的2å—节
7. 图片的md5,16å—节
8. 图片文件åçš„md5,16å—节
9. 图片文件长度,4å—节
10. 文件å长度
11. 文件å
12. 未知的8å—节
13. 尾部
when the sequence is 0x0001, format:
1. head
2. unknown 8 byte
3. session id, 4 byte
4. unknown 4 byte
5. data fragment length
6. data content
7. tail
当åºå·ä¸º0x0001æ—¶ï¼Œæ ¼å¼å¦‚下
1. 头部
2. 未知的8å—节
3. session id, 4å—节
4. 未知的4å—节
5. æ•°æ®åˆ†ç‰‡é•¿åº¦
6. æ•°æ®å†…容
7. 尾部
- Author:
- luma
Fields inherited from class net.sf.jqql.packets.Packet |
bodyBuf, bodyDecrypted, command, crypter, ds, duplicated, header, log, sequence, source, user |
Methods inherited from class net.sf.jqql.packets._05InPacket |
decryptBody, encryptBody, getBodyBytes, getFamily, getHeadLength, getLength, getQqNum, getTailLength, parseHeader, parseTail, putBody, putHead, putTail, setQqNum, toString |
Methods inherited from class net.sf.jqql.packets.Packet |
dump, equals, getCommand, getHeader, getSequence, getSource, hash, hashCode, isDuplicated, setDuplicated, setHeader, setSequence |
sessionId
public int sessionId
md5
public byte[] md5
fileNameMd5
public byte[] fileNameMd5
fileName
public String fileName
imageLength
public int imageLength
data
public byte[] data
TransferReplyPacket
public TransferReplyPacket(ByteBuffer buf,
int length,
QQUser user)
throws PacketParseException
- Parameters:
buf
- length
- user
-
- Throws:
PacketParseException
getPacketName
public String getPacketName()
- Overrides:
getPacketName
in class _05InPacket
- Returns:
- descriptive name of packet
包的æè¿°æ€§åç§°
getCryptographStart
protected int getCryptographStart()
- Specified by:
getCryptographStart
in class Packet
- Returns:
- start position of cryptograph, relative to the first byte of packet body.
if this packet is unknown packet, return -1, this method only available to some protocol family.
密文的起始ä½ç½®ï¼Œè¿™ä¸ªä½ç½®æ˜¯ç›¸å¯¹äºŽåŒ…体的第一个å—节æ¥è¯´çš„,如果这个包是未知包,
返回-1,这个方法åªå¯¹æŸäº›åè®®æ—æœ‰æ„义
parseBody
protected void parseBody(ByteBuffer buf)
throws PacketParseException
- Description copied from class:
Packet
- parse packet body, from begin position of buf
è§£æžåŒ…体,从buf的开头ä½ç½®è§£æžèµ·
- Specified by:
parseBody
in class Packet
- Parameters:
buf
- ByteBuffer
- Throws:
PacketParseException
- if parse error
如果解æžå‡ºé”™