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

Source Code for Module dpkt.qq

  1  # $Id: qq.py,v 1.1 2006/03/17 16:01:56 otaku Exp $ 
  2   
  3  import struct 
  4  from dpkt import Packet 
  5   
  6  # header_type 
  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  # command 
 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   
185 -class QQBasicPacket(Packet):
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
195 -class QQ3Packet(Packet):
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
217 -class QQ5Packet(Packet):
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