a78d3b95d15dcb715b314191ddb5de55 winsock и C++. Часть ||. Атака клоунов.

Итак, в предыдущем посте мы рассмотрели, как запускать винсок. Сегодня же мы углубимся на столько глубоко, что сможем сделать простой браузер(HTTP клиент) который будет получать страничку и класть ее в файл. Некоторые сразу наверно подумали про лоадер возможность сделать свой первый вирус :). Но все не так просто. Пожалуй сначала я приведу код, а потом уже буду его объяснять.

#include 
#include 
#pragma comment(lib, "ws2_32.lib")

//Настройки программы
#define outfile "C:\\out.txt"
#define hostname "nig.org.ua"
#define script "nig.org.ua/"
#define port 80

BOOL GetIpByHostName(PCHAR pHostName, PCHAR pIp, DWORD dwIpSize)
{//Функция, о которой я рассказал в предыдущем посте...
   hostent *pHosten;
   if(!(pHosten = gethostbyname(pHostName)))
   {
      return 0;
   }
   if((unsigned int)lstrlen(inet_ntoa(*(in_addr*)*pHosten->h_addr_list)) > dwIpSize)
   {
      return 0;
   }
   lstrcpy(pIp, inet_ntoa(*(in_addr*)*pHosten->h_addr_list));
   return 1;
}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

   WSADATA wsaData;//Стартуем винсокет
   WSAStartup(MAKEWORD(2,2),&wsaData);//Это мы проходили

   SOCKET s;//Нам нужен сокет - создаем такую переменную
   struct sockaddr_in ssin;//И структура для настройки

   memset((char *)&ssin,0,sizeof(ssin));//Занулим структуру настройки

   char cIp[17];//Здесь мы получаем IP
   memset(cIp,'\0',17);
   GetIpByHostName(hostname,cIp,17);//Конец получения IP

   s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//Создаем сокет. На весь интернет по протоколу TCP

   ssin.sin_family = AF_INET;//И настраиваем
   ssin.sin_port = htons(port);//Указываем порт
   ssin.sin_addr.s_addr = inet_addr(cIp);//Указываем IP

   connect(s,(SOCKADDR *)&ssin,sizeof(ssin));//Подсоединяем настройки к сокету

   char cQuery[64000];//Работа с HTTP
   sprintf(cQuery,"GET http://%s HTTP/1.1\r\nHost: %s\r\n\r\n",script,hostname);//Делаем запрос

   send(s,cQuery,sizeof(cQuery),0);//Отправляем

   memset(cQuery,'\0',64000);//Обнуляем

   recv(s,cQuery,64000,0);//Получаем

   HANDLE hFile = CreateFile(outfile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);//Открываем файл на запись

   DWORD dwBuff;

   WriteFile(hFile,cQuery,sizeof(cQuery),&dwBuff,NULL);//И пишем в него все, что получили

   CloseHandle(hFile);//Закрываем дескриптор файла

   closesocket(s);//Закрываем сокет

   WSACleanup();//И закрываем винсокет

   return 0;
}

Итак, перед вами исходник. Если вы ничего не понимаете то закройте это неме читайте дальше. Пристально посмотрите на код со строки SOCKET s; . Что же это за переменная? Это переменная, обозначающая сокет. Конечно, можно использовать и int, но SOCKET — более говорящее название. Для соединения, посылки и приема сообщений нужен SOCKET. Без него никуда.

Следующая структура sockaddr_in — это структура настройки сокета. Здесь нужно понять, что без настройки сокет работать не будет. Ему нужно сказать, куда подсоединяться (порт и IP). Иначе к чему вообще обращаться?!?

memset — это функция, которая зануляет структуру настройки. Ведь если мы обьявляем структуру в функции то она заполнена белибердой. А если эта белиберда есть какое нить странное сочетания IP:PORT и при подключении мы подключимся к системе управления ракетной установкой? icon biggrin winsock и C++. Часть ||. Атака клоунов. . По голове надают…

Далее три строчки, которые получают IP адрес. Думаю тут объяснять мало что нужно. Скармливаешь хостнаме получаешь IP.

Следущей строчкой мы как раз создаем сокет. В начале мы его только обьявили, а теперь над включить. Это образно, так что кто знает, тот пусть не пинает icon smile winsock и C++. Часть ||. Атака клоунов. . Для новичков эту функцию и ее параметры можно «шаблонной» делать. Так что это из рядя «запомнить».

А дальше мы производим настройку тремя строчками. Заполняем структуру. Здсь вроде бы вопросов возникнуть не должно.

Следующей строчкой мы подсоединяемся и указываем сокету использовать настройки из структуры.  Функция принимает несколько другую структуру, и чтобы компилятор не ворчал, мы «переделываем» нашу структурку.

Дальше это сплошная работа с HTTP, скажу лишь, что sprintf — это функция форматного вывода в строку, т.е. генерирует строку аля «по шаблону». Полезная. А то можно и чрез strcpy/n*strcat и это огромная куча кода.

Дальше мы командой send отправляем в сокет s данные из cQuery размером sizeof(cQuery) то есть размером этого массива. Последний параметр — флаг — равен нулю.

Дальше обнуляем структуру, чтобы не было вопросов про «а откуда здесь это?!?». И принимаем из сокета s даныые в cQuery размером 64000. Врятли будет больше. Кстати сказать функция возвращает количество прочитанных байт.

Запись в файл я комментировать дословно не буду, ибо это не к винсоку относится. Скажу лишь, что мы записываем в файл cQuery, и записываем sizeof(cQuery) байт.

Вроде бы все, терминатимся, и все чикипуки. Напоследок пару слов о оптимизации программы:

1) Подумайте, как можно использовать возвращаемый параметр recv и параметр размера данных (sizeof(cQuery)) в WriteFile

2) А прокси то использовать проще всего. Правда HTTP. Почему? Да потому, что достаточно лишь заменит ip на ip проксика и порт на порт проксика и все будет анонимненько :). Так что это широкая сфера применения :).

3) Ну если вы дочитали до сюда то вот еще одна идейка: А ведь можно сделать функцию для загрузки страницы и юзать ее :).

tt twitter big4 winsock и C++. Часть ||. Атака клоунов. tt digg big4 winsock и C++. Часть ||. Атака клоунов. tt facebook big4 winsock и C++. Часть ||. Атака клоунов. tt gmail big4 winsock и C++. Часть ||. Атака клоунов. tt myspace big4 winsock и C++. Часть ||. Атака клоунов. tt reddit big4 winsock и C++. Часть ||. Атака клоунов.

Комментарии (2) на “winsock и C++. Часть ||. Атака клоунов.”

  • VkriterT:

    Познавательно,пойду быдлокодить софтину которая показует реальный ip :mrgreen:

    Ответить
  • VkriterT:

    111.exe — 63 error(s), 11 warning(s)

    :cry: :cry: :cry: ,не судьба!Первый раз на c++ что то пишу :| ,если получится мой узнаватель ip сделать отпишу

    Ответить

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

RSS-подписка NIG Twitter-подписка NIG

Метки
Друзья
Блог линуксоида Программы для диагностики компьютера
Супер Pixel
Убивалка флешаБэкконект шелл. Часть вторая.Бэкконект шелл. Начало.НАМ для деления чиселПростая арифметикаПередача файлов. Часть третья. Клиент.Dll injectionСканер портовКодировка текста в BMPРухнул на два дняПередача файлов. Часть вторая. Сервер.Поворот и BMPCRC32 суммаBMP форматфайловые вирусыассемблер, строкиАссемблер и матрицапримеры ассемблерМногопоточное программированиеАрхитектура клиент — серверРаздача ICQПишем шуткупишем паукаПривет от ДжеймсаОбход firewallЗагрузка картинок на Gyazo, прямо из ThunarКейлоггер 3Плюшки в контекстном меню Thunarc по сетиКейлоггер 2КейлоггерСкачать Ассемблер!VirusCheckerОтморозки мешают жить ?! Не проблемма !Cкрипты для взлома аккаунтов QIPWinAPI. Работа с файлами. Часть третья. ЧтениеDlink exploitБрут сайта etxt.ruКрасивая раскладка клавиатуры в GnomeМои безделушки на PerlКак запускать Perl скрипты под WindowsБрутфорс партнёрки ZipCoinПарсер upwap.ruИзменения в блогеЧудо ЗаливалкаСкрипт для загрузки файлов на Zalil.ruЯндекс «чоткий» поисковик!WinAPI. Работа с файлами. Часть вторая. ЗаписьWinAPI. Работа с файлами. Часть первая. ПоискПолучение MD5 хеша средствами C++Что нам стоить letitfile.com забрутить?WarCraft III запуск под LinuxЭнтропия файлаWinsock и C++. Мини прокси. Часть |\\/. Завершающая.Перепилил чекер для 4gameЧекер акаунтов YoupornCMailSend v 1.1. Отправка почы без проблемСлучайные числаWinsock и C++. Часть |||. smtp монстр.Брутфорс LetitFile.comИспользование X-Forwarded-For, для обмана веб-сервера, подмена IP подручными средствамиДело было вечером, делать было нечего…Мысли о аудио сервереПарсер ников из твиттераКонец школоло…Perl+Linux. Заметка первая (Удобный Paste bin).Бэкконект шелл.E-MAIL + winsocket + Cpp. Сложно?winsock и C++. Часть ||. Атака клоунов.C++ резолвинг адресаPerl, анализ HTML кода и определение CMSМатематика в C++winsock и C++