отсылка пакетов на ICQ-сервак

 
0
 
Python
ava
DiMikyL | 02.11.2010, 16:43
Доброго времени ВСЕМ!
Очень нужна консультация о том, как отправить пакет серваку:
нужно узнать сам формат отправки на ICQ-сервак пакета для того, чтобы там сразу авторизироваться, а затем отослать сообщение какому-либо другу!
вот что надыбал - http://docs.nojabrsk.ru/semenov/4/4/icq.htm.
Однако, не могу понять, какую, допустим, писать версию протокола, если я программно буду отправлять пакет?? Да и сам формат отсылаемых команд???
В принципе, я разобрался, как работает вся эта муть с обменом пакетами...(http://www.xakep.ru/magazine/xs/048/050/1.asp)


Есть код на С:

typedef struct TLV
{
unsigned short int Type;
unsigned short int Lenght;
char* value;
}TLV;

typedef struct FLAP_HDR
{
unsigned char Sign;
unsigned char ChID;
unsigned short int SEQ;
unsigned short int Len;
TLV uin;
TLV pass;
TLV version;
}FLAP;
int err,i,error;
FLAP flap;
flap.Sign=0x2A;
flap.ChID=0x01;
flap.SEQ=htons(0);
flap.Len=htons(91);
flap.uin.Type=0x01;
flap.uin.Lenght=0x09;
flap.uin.value="495631328";
flap.pass.Type=0x02;
flap.pass.Lenght=0x06;
flap.pass.value="123456";
flap.version.Type=0x03;
flap.version.Lenght=0x0a;
flap.version.value=;

Но не могу пока перевоплотить в код саму структуру пакета (http://www.icqinfo.ru/protocol_v8.shtml).


Да, и все это нужно для консоли!
Помогите, пожалуйста!!!
Kommentare (1)
ava
fray | 12.11.2010, 15:23 #
вообще import struct, но меня смущает
flap.uin.value="495631328";

тут вроде уин в 4-х байтах лежит
http://docs.nojabrsk.ru/semenov/4/4/icq.htm

Вот в вашем модуле Оскар TLV выглядит как


def TLV(type,value):
header="!HH"
head=struct.pack(header,type,len(value))
return head+str(value)


значит размер TLV переменой длинны

Как бы так.. за исключением того что в Си нельзя динамическим формировать структуру переменного размера.

typedef struct TLV
{
unsigned short int Type;
unsigned short int Lenght;
char value[Lenght];
}TLV;



ФЛАП


def sendFLAP(self,data,channel = 0x02):
header="!cBHH"
self.seqnum=(self.seqnum+1)%0xFFFF
seqnum=self.seqnum
head=struct.pack(header,'*', channel, seqnum, len(data))
self.transport.write(head+str(data))



РS.
Как мне надоели эти icq-спамеры smile
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  fray   DiMikyL
advanced
Absenden