<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=783351</guid>
        <pubDate>Thu, 21 Jul 2005 12:55:28 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=783351</link>
        <description><![CDATA[Guest: Все. Я разобрался. Спаисбо всем откликнувшимся. Ести кому интересна данная тема советую заглянуть сюда http://www.xakep.ru/post/16494/default.asp]]></description>
        <author>Guest</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782900</guid>
        <pubDate>Thu, 21 Jul 2005 07:14:55 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782900</link>
        <description><![CDATA[Guest: 2 Oleg2004: OSb XP SP1, режим поддерживает. Вопрос тогда такой - у кого нибудь этот снифф ловит исходящие пакеты? P.S. В предоставленном исходнике нужно исправить несколько строк в конце, иначе не компилится, но лучше, начная с вычисления размера все удалить.]]></description>
        <author>Guest</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782636</guid>
        <pubDate>Wed, 20 Jul 2005 20:26:06 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782636</link>
        <description><![CDATA[Oleg2004: <strong class='tag-b'>brus</strong><br>
А какая винда?<br>
Неразборчивый режим не все версии поддерживают]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782363</guid>
        <pubDate>Wed, 20 Jul 2005 14:30:41 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782363</link>
        <description><![CDATA[Guest: Извиняюсь, не совсем точно описал ситуацию, исходящие пакеты в моей подсети тоже не перехватываются. Кстати выше приведенный код тоже не позволяет перехватывать исходящие пакеты, возникает вопрос - может быть этот сниффер фиксирует только входящие пакеты? С другой стороны все должно работать...]]></description>
        <author>Guest</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782302</guid>
        <pubDate>Wed, 20 Jul 2005 13:30:39 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782302</link>
        <description><![CDATA[Guest: Да я пользовался именно этим кодом. А насчет пакетов - да он приходят, с этим все нормально.]]></description>
        <author>Guest</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782253</guid>
        <pubDate>Wed, 20 Jul 2005 12:59:13 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782253</link>
        <description><![CDATA[Дьякон: Скорее всего этот код и был взят за основу...]]></description>
        <author>Дьякон</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782197</guid>
        <pubDate>Wed, 20 Jul 2005 12:11:13 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782197</link>
        <description><![CDATA[IEZ: Ниже приведён полный код программы. Данный код не претендует на звание крутого снифера, однако при желании его можно доработать, чтобы можно было просматривать содержимое пакетов. Так же на его основе можно легко сделать простой анализатор трафика. А главное - не надо делать всяких драйверов; всё просто и понятно. <br>
<br>
Суть этого сниффера заключается в том, что используются сокеты второй версии и созданный сокет переводится в режим promiscuous (прослушивания). <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;conio.h&#62;</div><div class="code_line">#include &#60;stdio.h&#62;</div><div class="code_line">#include &#60;winsock2.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#define MAX_PACKET_SIZE &nbsp; &nbsp;0x10000</div><div class="code_line">#define SIO_RCVALL &nbsp; &nbsp; &nbsp; &nbsp; 0x98000001</div><div class="code_line">// Буфер для приёма данных</div><div class="code_line">char Buffer[MAX_PACKET_SIZE]; // 64 Kb</div><div class="code_line">&nbsp;</div><div class="code_line">//Структура заголовка IP-пакета</div><div class="code_line">&nbsp;</div><div class="code_line">typedef struct IPHeader {</div><div class="code_line">&nbsp;&nbsp;UCHAR &nbsp; iph_verlen; &nbsp; // версия и длина заголовка</div><div class="code_line">&nbsp;&nbsp;UCHAR &nbsp; iph_tos; &nbsp; &nbsp; &nbsp;// тип сервиса</div><div class="code_line">&nbsp;&nbsp;USHORT &nbsp;iph_length; &nbsp; // длина всего пакета</div><div class="code_line">&nbsp;&nbsp;USHORT &nbsp;iph_id; &nbsp; &nbsp; &nbsp; // Идентификация</div><div class="code_line">&nbsp;&nbsp;USHORT &nbsp;iph_offset; &nbsp; // флаги и смещения</div><div class="code_line">&nbsp;&nbsp;UCHAR &nbsp; iph_ttl; &nbsp; &nbsp; &nbsp;// время жизни пакета</div><div class="code_line">&nbsp;&nbsp;UCHAR &nbsp; iph_protocol; // протокол</div><div class="code_line">&nbsp;&nbsp;USHORT &nbsp;iph_xsum; &nbsp; &nbsp; // контрольная сумма</div><div class="code_line">&nbsp;&nbsp;ULONG &nbsp; iph_src; &nbsp; &nbsp; &nbsp;// IP-адрес отправителя</div><div class="code_line">&nbsp;&nbsp;ULONG &nbsp; iph_dest; &nbsp; &nbsp; // IP-адрес назначения</div><div class="code_line">} IPHeader;</div><div class="code_line">&nbsp;</div><div class="code_line">char src[10];</div><div class="code_line">char dest[10];</div><div class="code_line">char ds[15];</div><div class="code_line">unsigned short lowbyte;</div><div class="code_line">unsigned short hibyte;</div><div class="code_line">&nbsp;</div><div class="code_line">void main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;WSADATA &nbsp; &nbsp; wsadata; &nbsp; // Инициализация WinSock.</div><div class="code_line">&nbsp;&nbsp;SOCKET &nbsp; &nbsp; &nbsp;s; &nbsp; &nbsp; &nbsp; &nbsp; // Cлущающий сокет.</div><div class="code_line">&nbsp;&nbsp;char &nbsp; &nbsp; &nbsp; &nbsp;name[128]; // Имя хоста (компьютера).</div><div class="code_line">&nbsp;&nbsp;HOSTENT* &nbsp; &nbsp;phe; &nbsp; &nbsp; &nbsp; // Информация о хосте.</div><div class="code_line">&nbsp;&nbsp;SOCKADDR_IN sa; &nbsp; &nbsp; &nbsp; &nbsp;// Адрес хоста</div><div class="code_line">&nbsp;&nbsp;IN_ADDR sa1; &nbsp; &nbsp; &nbsp; &nbsp;//</div><div class="code_line">&nbsp;&nbsp;unsigned long &nbsp; &nbsp; &nbsp; &nbsp;flag = 1; &nbsp;// Флаг PROMISC Вкл/выкл.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// инициализация</div><div class="code_line">&nbsp;&nbsp;WSAStartup(MAKEWORD(2,2), &amp;wsadata);</div><div class="code_line">&nbsp;&nbsp;s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );</div><div class="code_line">&nbsp;&nbsp;gethostname(name, sizeof(name));</div><div class="code_line">&nbsp;&nbsp;phe = gethostbyname( name );</div><div class="code_line">&nbsp;&nbsp;ZeroMemory( &amp;sa, sizeof(sa) );</div><div class="code_line">&nbsp;&nbsp;sa.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp;sa.sin_addr.s_addr = ((struct in_addr *)phe-&#62;h_addr_list[0])-&#62;s_addr;</div><div class="code_line">&nbsp;&nbsp;bind(s, (SOCKADDR *)&amp;sa, sizeof(SOCKADDR));</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Включение promiscuous mode.</div><div class="code_line">&nbsp;&nbsp;ioctlsocket(s, SIO_RCVALL, &amp;flag);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Бесконечный цикл приёма IP-пакетов.</div><div class="code_line">&nbsp;&nbsp;while( !_kbhit() )</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int count;</div><div class="code_line">&nbsp;&nbsp; &nbsp;count = recv( s, Buffer, sizeof(Buffer), 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;// обработка IP-пакета</div><div class="code_line">&nbsp;&nbsp; &nbsp;if( count &#62;= sizeof(IPHeader) )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;IPHeader* hdr = (IPHeader *)Buffer;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;//Начинаем разбор пакета...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;strcpy(src,&quot;Пакет: &quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CharToOem(src,dest);</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(dest);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Преобразуем в понятный вид адрес отправителя.</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;From &quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;sa1.s_addr = hdr-&#62;iph_src;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(inet_ntoa(sa1));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Преобразуем в понятный вид адрес получателя.</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot; To &quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;sa1.s_addr = hdr-&#62;iph_dest;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(inet_ntoa(sa1));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычисляем протокол. Полный список этих констант</div><div class="code_line">&nbsp;&nbsp; &nbsp;// содержится в файле winsock2.h</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot; Prot: &quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(hdr-&#62;iph_protocol == IPPROTO_TCP) printf(&quot;TCP &quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(hdr-&#62;iph_protocol == IPPROTO_UDP) printf(&quot;UDP &quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычисляем размер. Так как в сети принят прямой порядок</div><div class="code_line">&nbsp;&nbsp; &nbsp;// байтов, а не обратный, то прийдётся поменять байты местами.</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;Size: &quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;lowbyte = hdr-&#62;iph_length&#62;&#62;8;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hibyte = hdr-&#62;iph_length&#60;&#60;8;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hibyte = hibyte + lowbyte;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;%s&quot;,itoa(hibyte,&quot;&quot;,10));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычисляем время жизни пакета.</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot; TTL:%s&quot;,itoa(hdr-&#62;iph_ttl,&quot;&quot;,10));</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;closesocket( s );</div><div class="code_line">&nbsp;&nbsp;WSACleanup();</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Для успешной компиляции, необходимо подключить к проекту файл ws2_32.lib.]]></description>
        <author>IEZ</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782154</guid>
        <pubDate>Wed, 20 Jul 2005 11:36:00 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782154</link>
        <description><![CDATA[Дьякон: А на карточку пакеты приходят? По идее предоставленный код должен их перехватывать. Проверь сетевым монитором.]]></description>
        <author>Дьякон</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782132</guid>
        <pubDate>Wed, 20 Jul 2005 11:23:47 +0000</pubDate>
        <title>Сниффер в windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=102817&amp;view=findpost&amp;p=782132</link>
        <description><![CDATA[brus: Пытаюсь написать сниффер для винды, проблема вот в чем, он прекрасно ловит все пакеты в моей подсетке, и входящие из других, а вот исходящие в другие подсети не видит. Вот главная часть кода : <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP); </div><div class="code_line">&nbsp;</div><div class="code_line">ZeroMemory(&amp;saddr, sizeof(saddr)); </div><div class="code_line">&nbsp;</div><div class="code_line">saddr.sin_family = AF_INET ; </div><div class="code_line">saddr.sin_addr.S_un.S_addr = inet_addr(&quot;moi_lokalnii_ip&quot;); </div><div class="code_line">&nbsp;</div><div class="code_line">bind(sock, (sockaddr *)&amp;saddr, sizeof(sockaddr)); </div><div class="code_line">&nbsp;</div><div class="code_line">u_long flag = 1; </div><div class="code_line">ioctlsocket(sock, SIO_RCVALL, &amp;flag); </div><div class="code_line">&nbsp;</div><div class="code_line">while (true) </div><div class="code_line">{ </div><div class="code_line">&nbsp;&nbsp; cnt = recv(sock, buf, MAXBUFSIZE, 0); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//........обрабатываем принятый пакет </div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body">Тег CODE&#33;</div></div>]]></description>
        <author>brus</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	