1
2
3 import struct
4 from dpkt import Packet
5
6
7 QQ_HEADER_BASIC_FAMILY = 0x02
8 QQ_HEADER_P2P_FAMILY = 0x00
9 QQ_HEADER_03_FAMILY = 0x03
10 QQ_HEADER_04_FAMILY = 0x04
11 QQ_HEADER_05_FAMILY = 0x05
12
13 header_type_str = [
14 "QQ_HEADER_P2P_FAMILY",
15 "Unknown Type",
16 "QQ_HEADER_03_FAMILY",
17 "QQ_HEADER_04_FAMILY",
18 "QQ_HEADER_05_FAMILY",
19 ]
20
21
22 QQ_CMD_LOGOUT = 0x0001
23 QQ_CMD_KEEP_ALIVE = 0x0002
24 QQ_CMD_MODIFY_INFO = 0x0004
25 QQ_CMD_SEARCH_USER = 0x0005
26 QQ_CMD_GET_USER_INFO = 0x0006
27 QQ_CMD_ADD_FRIEND = 0x0009
28 QQ_CMD_DELETE_FRIEND = 0x000A
29 QQ_CMD_ADD_FRIEND_AUTH = 0x000B
30 QQ_CMD_CHANGE_STATUS = 0x000D
31 QQ_CMD_ACK_SYS_MSG = 0x0012
32 QQ_CMD_SEND_IM = 0x0016
33 QQ_CMD_RECV_IM = 0x0017
34 QQ_CMD_REMOVE_SELF = 0x001C
35 QQ_CMD_REQUEST_KEY = 0x001D
36 QQ_CMD_LOGIN = 0x0022
37 QQ_CMD_GET_FRIEND_LIST = 0x0026
38 QQ_CMD_GET_ONLINE_OP = 0x0027
39 QQ_CMD_SEND_SMS = 0x002D
40 QQ_CMD_CLUSTER_CMD = 0x0030
41 QQ_CMD_TEST = 0x0031
42 QQ_CMD_GROUP_DATA_OP = 0x003C
43 QQ_CMD_UPLOAD_GROUP_FRIEND = 0x003D
44 QQ_CMD_FRIEND_DATA_OP = 0x003E
45 QQ_CMD_DOWNLOAD_GROUP_FRIEND = 0x0058
46 QQ_CMD_FRIEND_LEVEL_OP = 0x005C
47 QQ_CMD_PRIVACY_DATA_OP = 0x005E
48 QQ_CMD_CLUSTER_DATA_OP = 0x005F
49 QQ_CMD_ADVANCED_SEARCH = 0x0061
50 QQ_CMD_REQUEST_LOGIN_TOKEN = 0x0062
51 QQ_CMD_USER_PROPERTY_OP = 0x0065
52 QQ_CMD_TEMP_SESSION_OP = 0x0066
53 QQ_CMD_SIGNATURE_OP = 0x0067
54 QQ_CMD_RECV_MSG_SYS = 0x0080
55 QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS = 0x0081
56 QQ_CMD_WEATHER_OP = 0x00A6
57 QQ_CMD_ADD_FRIEND_EX = 0x00A7
58 QQ_CMD_AUTHORIZE = 0X00A8
59 QQ_CMD_UNKNOWN = 0xFFFF
60 QQ_SUB_CMD_SEARCH_ME_BY_QQ_ONLY = 0x03
61 QQ_SUB_CMD_SHARE_GEOGRAPHY = 0x04
62 QQ_SUB_CMD_GET_FRIEND_LEVEL = 0x02
63 QQ_SUB_CMD_GET_CLUSTER_ONLINE_MEMBER = 0x01
64 QQ_05_CMD_REQUEST_AGENT = 0x0021
65 QQ_05_CMD_REQUEST_FACE = 0x0022
66 QQ_05_CMD_TRANSFER = 0x0023
67 QQ_05_CMD_REQUEST_BEGIN = 0x0026
68 QQ_CLUSTER_CMD_CREATE_CLUSTER= 0x01
69 QQ_CLUSTER_CMD_MODIFY_MEMBER= 0x02
70 QQ_CLUSTER_CMD_MODIFY_CLUSTER_INFO= 0x03
71 QQ_CLUSTER_CMD_GET_CLUSTER_INFO= 0x04
72 QQ_CLUSTER_CMD_ACTIVATE_CLUSTER= 0x05
73 QQ_CLUSTER_CMD_SEARCH_CLUSTER= 0x06
74 QQ_CLUSTER_CMD_JOIN_CLUSTER= 0x07
75 QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH= 0x08
76 QQ_CLUSTER_CMD_EXIT_CLUSTER= 0x09
77 QQ_CLUSTER_CMD_SEND_IM= 0x0A
78 QQ_CLUSTER_CMD_GET_ONLINE_MEMBER= 0x0B
79 QQ_CLUSTER_CMD_GET_MEMBER_INFO= 0x0C
80 QQ_CLUSTER_CMD_MODIFY_CARD = 0x0E
81 QQ_CLUSTER_CMD_GET_CARD_BATCH= 0x0F
82 QQ_CLUSTER_CMD_GET_CARD = 0x10
83 QQ_CLUSTER_CMD_COMMIT_ORGANIZATION = 0x11
84 QQ_CLUSTER_CMD_UPDATE_ORGANIZATION= 0x12
85 QQ_CLUSTER_CMD_COMMIT_MEMBER_ORGANIZATION = 0x13
86 QQ_CLUSTER_CMD_GET_VERSION_ID= 0x19
87 QQ_CLUSTER_CMD_SEND_IM_EX = 0x1A
88 QQ_CLUSTER_CMD_SET_ROLE = 0x1B
89 QQ_CLUSTER_CMD_TRANSFER_ROLE = 0x1C
90 QQ_CLUSTER_CMD_CREATE_TEMP = 0x30
91 QQ_CLUSTER_CMD_MODIFY_TEMP_MEMBER = 0x31
92 QQ_CLUSTER_CMD_EXIT_TEMP = 0x32
93 QQ_CLUSTER_CMD_GET_TEMP_INFO = 0x33
94 QQ_CLUSTER_CMD_MODIFY_TEMP_INFO = 0x34
95 QQ_CLUSTER_CMD_SEND_TEMP_IM = 0x35
96 QQ_CLUSTER_CMD_SUB_CLUSTER_OP = 0x36
97 QQ_CLUSTER_CMD_ACTIVATE_TEMP = 0x37
98
99 QQ_CLUSTER_SUB_CMD_ADD_MEMBER = 0x01
100 QQ_CLUSTER_SUB_CMD_REMOVE_MEMBER = 0x02
101 QQ_CLUSTER_SUB_CMD_GET_SUBJECT_LIST = 0x02
102 QQ_CLUSTER_SUB_CMD_GET_DIALOG_LIST = 0x01
103
104 QQ_SUB_CMD_GET_ONLINE_FRIEND = 0x2
105 QQ_SUB_CMD_GET_ONLINE_SERVICE = 0x3
106 QQ_SUB_CMD_UPLOAD_GROUP_NAME = 0x2
107 QQ_SUB_CMD_DOWNLOAD_GROUP_NAME = 0x1
108 QQ_SUB_CMD_SEND_TEMP_SESSION_IM = 0x01
109 QQ_SUB_CMD_BATCH_DOWNLOAD_FRIEND_REMARK = 0x0
110 QQ_SUB_CMD_UPLOAD_FRIEND_REMARK = 0x1
111 QQ_SUB_CMD_REMOVE_FRIEND_FROM_LIST = 0x2
112 QQ_SUB_CMD_DOWNLOAD_FRIEND_REMARK = 0x3
113 QQ_SUB_CMD_MODIFY_SIGNATURE = 0x01
114 QQ_SUB_CMD_DELETE_SIGNATURE = 0x02
115 QQ_SUB_CMD_GET_SIGNATURE = 0x03
116 QQ_SUB_CMD_GET_USER_PROPERTY = 0x01
117 QQ_SUB_CMD_GET_WEATHER = 0x01
118
119 QQ_FILE_CMD_HEART_BEAT = 0x0001
120 QQ_FILE_CMD_HEART_BEAT_ACK = 0x0002
121 QQ_FILE_CMD_TRANSFER_FINISHED = 0x0003
122 QQ_FILE_CMD_FILE_OP = 0x0007
123 QQ_FILE_CMD_FILE_OP_ACK = 0x0008
124 QQ_FILE_CMD_SENDER_SAY_HELLO = 0x0031
125 QQ_FILE_CMD_SENDER_SAY_HELLO_ACK = 0x0032
126 QQ_FILE_CMD_RECEIVER_SAY_HELLO = 0x0033
127 QQ_FILE_CMD_RECEIVER_SAY_HELLO_ACK = 0x0034
128 QQ_FILE_CMD_NOTIFY_IP_ACK = 0x003C
129 QQ_FILE_CMD_PING = 0x003D
130 QQ_FILE_CMD_PONG = 0x003E
131 QQ_FILE_CMD_YES_I_AM_BEHIND_FIREWALL = 0x0040
132 QQ_FILE_CMD_REQUEST_AGENT = 0x0001
133 QQ_FILE_CMD_CHECK_IN = 0x0002
134 QQ_FILE_CMD_FORWARD = 0x0003
135 QQ_FILE_CMD_FORWARD_FINISHED = 0x0004
136 QQ_FILE_CMD_IT_IS_TIME = 0x0005
137 QQ_FILE_CMD_I_AM_READY = 0x0006
138
139 command_str = {
140 0x0001: "QQ_CMD_LOGOUT",
141 0x0002: "QQ_CMD_KEEP_ALIVE",
142 0x0004: "QQ_CMD_MODIFY_INFO",
143 0x0005: "QQ_CMD_SEARCH_USER",
144 0x0006: "QQ_CMD_GET_USER_INFO",
145 0x0009: "QQ_CMD_ADD_FRIEND",
146 0x000A: "QQ_CMD_DELETE_FRIEND",
147 0x000B: "QQ_CMD_ADD_FRIEND_AUTH",
148 0x000D: "QQ_CMD_CHANGE_STATUS",
149 0x0012: "QQ_CMD_ACK_SYS_MSG",
150 0x0016: "QQ_CMD_SEND_IM",
151 0x0017: "QQ_CMD_RECV_IM",
152 0x001C: "QQ_CMD_REMOVE_SELF",
153 0x001D: "QQ_CMD_REQUEST_KEY",
154 0x0022: "QQ_CMD_LOGIN",
155 0x0026: "QQ_CMD_GET_FRIEND_LIST",
156 0x0027: "QQ_CMD_GET_ONLINE_OP",
157 0x002D: "QQ_CMD_SEND_SMS",
158 0x0030: "QQ_CMD_CLUSTER_CMD",
159 0x0031: "QQ_CMD_TEST",
160 0x003C: "QQ_CMD_GROUP_DATA_OP",
161 0x003D: "QQ_CMD_UPLOAD_GROUP_FRIEND",
162 0x003E: "QQ_CMD_FRIEND_DATA_OP",
163 0x0058: "QQ_CMD_DOWNLOAD_GROUP_FRIEND",
164 0x005C: "QQ_CMD_FRIEND_LEVEL_OP",
165 0x005E: "QQ_CMD_PRIVACY_DATA_OP",
166 0x005F: "QQ_CMD_CLUSTER_DATA_OP",
167 0x0061: "QQ_CMD_ADVANCED_SEARCH",
168 0x0062: "QQ_CMD_REQUEST_LOGIN_TOKEN",
169 0x0065: "QQ_CMD_USER_PROPERTY_OP",
170 0x0066: "QQ_CMD_TEMP_SESSION_OP",
171 0x0067: "QQ_CMD_SIGNATURE_OP",
172 0x0080: "QQ_CMD_RECV_MSG_SYS",
173 0x0081: "QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS",
174 0x00A6: "QQ_CMD_WEATHER_OP",
175 0x00A7: "QQ_CMD_ADD_FRIEND_EX",
176 0x00A8: "QQ_CMD_AUTHORIZE",
177 0xFFFF: "QQ_CMD_UNKNOWN",
178 0x0021: "_CMD_REQUEST_AGENT",
179 0x0022: "_CMD_REQUEST_FACE",
180 0x0023: "_CMD_TRANSFER",
181 0x0026: "_CMD_REQUEST_BEGIN",
182 }
183
184
186 __hdr__ = (
187 ('header_type', 'B', 2),
188 ('source', 'H', 0),
189 ('command', 'H', 0),
190 ('sequence', 'H', 0),
191 ('qqNum', 'L', 0),
192 )
193
194
196 __hdr__ = (
197 ('header_type', 'B', 3),
198 ('command', 'B', 0),
199 ('sequence', 'H', 0),
200 ('unknown1', 'L', 0),
201 ('unknown2', 'L', 0),
202 ('unknown3', 'L', 0),
203 ('unknown4', 'L', 0),
204 ('unknown5', 'L', 0),
205 ('unknown6', 'L', 0),
206 ('unknown7', 'L', 0),
207 ('unknown8', 'L', 0),
208 ('unknown9', 'L', 0),
209 ('unknown10', 'B', 1),
210 ('unknown11', 'B', 0),
211 ('unknown12', 'B', 0),
212 ('source', 'H', 0),
213 ('unknown13', 'B', 0),
214 )
215
216
218 __hdr__ = (
219 ('header_type', 'B', 5),
220 ('source', 'H', 0),
221 ('unknown', 'H', 0),
222 ('command', 'H', 0),
223 ('sequence', 'H', 0),
224 ('qqNum', 'L', 0),
225 )
226