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