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
如果解析出错