Package dpkt :: Module qq
[hide private]
[frames] | no frames]

Source Code for Module dpkt.qq

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