Сообщения

Показаны сообщения с ярлыком "HTTP"

Работа с HTTP

Изображение
Кучи вопросов на форуме antichat.ru посвящены работе с HTTP протоколом. В посте я не буду вдаваться в подробности работы с сокетами, а лишь дам примеры программ для отправки GET и POST запросов на JavaScript , PHP , PERL , C , Delphi , Assembler .

Скачиваем архивы

P.S: Пишу диплом, поэтому на время разучился мыслить не по ГОСТ-у Недавно пришлось решать задачу обновления программы. Алгоритм получился довольно банальный: Получить текущую версию Сравнить с актуальной версией В случае несовпадения, скачать и заменить оригинальные файлы Для решения поставленной задачи, было принято решение, использовать в качестве файлового сервера веб-сервер и производить обмен данными по протоколу HTTP (см. RFC 2616 ). В качестве веб-сервера я поставил Apache , а программу писал на Си c использованием Winsock . Основной фишкой проекта является то, что програмуля умеет скачивать и сама распаковывать архивы формата 7-zip (см. алгоритм LZMA ), что может пригодиться для хитрого трояна, либо для обновления модулей ботнет-а.

Base64

Моя модификация вот этого . Понадобилось для HTTP аутентификации // base64 by Gar|k //#define B64_DEF_LINE_SIZE 72 //#define B64_MIN_LINE_SIZE 4 // buf - строка для кодирования // sizebuf - размер строки // rez - буффер для результата // функция возвращает размер полученого хеша int base64_encode(char *buf,int sizebuf,char *rez,int linesize) { static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; unsigned char in[3], out[4]; int i, len, blocksout=0,count=0; while(count!=sizebuf) { len = 0; for( i = 0; i > 2 ]; out[1] = cb64[ ((in[0] & 0x03) > 4) ]; out[2] = (unsigned char) (len > 1 ? cb64[ ((in[1] & 0x0f) > 6) ] : '='); out[3] = (unsigned char) (len > 2 ? cb64[ in[2] & 0x3f ] : '='); memcpy(rez,out,4); rez+=4; blocksout++; } if( blocksout >= (linesize/4) || count==sizebuf ) blocksout = 0; } *rez++=0; return count; }