Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сниффер [D7, NT4, Win2k, WinXP]


Страницы:   1 2

JaoDa ©   (2005-02-04 14:54:00) 

У кого-нибудь есть сорсы сниффера под Win XP или пример работы с
библиотекой Winpcap переложенный на Delphi?

зы: у меня есть под 98-ую, которые работают с packed32.dll, но в XP они, увы, не пахают :/


Rouse_   (2005-03-22 15:46:00) [1]

Разницы никакой...


Максим   (2005-03-22 14:09:00) [2]

Rouse_, так и сделал. Думал можно некий фильтр задать при создании сокета. Оказывается, все проще.
Еще такой вопрос, мне нужно писать в БД когда приходит пакет с содержанием "$$$ logged on" (все остальное игнорить). Как думаете существенно ли где это делать ? В ShowPacket(...)  или может в ParcePacket(...) ?


Rouse_   (2005-03-22 09:54:00) [3]

> Уважаемый All, подскажите пож-ста, как добиться того, чтобы приходили только пакеты с портом 9999 (dest или src) и одним адресом, скажем 10.0.222.222 ?
Так а какая разница какие приходят - ты отображай только те которые соответствуют введенным тобой условиям...


Максим   (2005-03-22 07:49:00) [4]

Verg, как скажешь.
Уважаемый All, подскажите пож-ста, как добиться того, чтобы приходили только пакеты с портом 9999 (dest или src) и одним адресом, скажем 10.0.222.222 ?


Alex Konshin   (2005-03-22 04:00:00) [5]

Тореро   (18.03.05 07:10) [13]
Подсеть в том же сегменте локалки? Если нет - то и не будет: эти пакеты вполне могут не пропускаться маршрутизатором.


Verg   (2005-03-21 21:52:00) [6]


> Максим   (21.03.05 15:17) [16]


ntohs/ntohl


thaddy   (2005-03-21 20:40:00) [7]

Winpcap example (in KOL delphi, bit API same):
http://members.chello.nl/t.koning8/kolsniffer.zip


Максим   (2005-03-21 15:17:00) [8]

Rouse_, Хотел Вас поправить.
Порт храниться в пакете двумя байтами, в обратном порядке, поэтому надо что то вроде:
    SrcPort := Lo(TCPHeader.sourcePort)*$100+Hi(TCPHeader.sourcePort);
    DestPort := Lo(TCPHeader.destinationPort)*$100+Hi(TCPHeader.destinationPort);
вставить в процедуру ParcePacket


Максим   (2005-03-21 14:46:00) [9]

Rouse_, подскажите пож-ста, как ограничить пакеты только с одним портом и одним адресом ?


Максим   (2005-03-21 14:39:00) [10]

Rouse_, Поздравляю !
Отличный код !


Тореро   (2005-03-18 07:10:00) [11]

Всё, не надо. теперь ужо другая проблема. оно не перехватывает пакеты других подсетей. с помощью чего можно реально перехватить пакеты, проходящие в других подсетях ?


Тореро   (2005-03-13 17:56:00) [12]

Rouse_ можешь помочь мне, ламеру неразумному, плз ? Вот смотри. я поставил несколько фильтров, и теперь получаю сетевые пакеты только с сообщениями IRC. как мне их расшифровать и привести к нормальному тексту ? а то выдаёт чёрт знает что...


Tor-3000   (2005-02-26 12:40:00) [13]

Rouse_
посмотри
http://forum.sources.ru/index.php?s=&showtopic=79575&hl=пакет


Rouse_   (2005-02-25 21:51:00) [14]

> Ethernet
Это пример сниффера сетевого уровня а не канального...


atruhinov   (2005-02-17 02:13:00) [15]

Помогите пожайлуста!!!
Здесь уже приводился пример сниффера, я разобрался, но
прочитать Ethernet заголовок не получается.

type
 PEthernetHdr = ^TEthernetHdr;
 TEthernetHdr = packed record
   ether_dhost: TEtherAddr;            
   ether_shost: TEtherAddr;            
   ether_type: word;                    
 end;

var
 etherheader:PEthernetHdr;

begin

 iRet := recv(RawSocket, buf, sizeof(buf), 0);
 .
 .
 .
 etherheader:=PEthernetHdr(@buf);
 .
 .
 .

Выводиться блок IP но Ethernet ни в какую.
Если кто-то сталкивался с этой проблемой - помогите!!!


Verg   (2005-02-15 17:30:00) [16]


> 7] InGo   (15.02.05 10:56)
> Подскажите, а можно ли по какому-нибудь критерию в заголовке
> убить пакет, чтоб он дальше не прошел?


Что значит убить? Он (пакет) ужепришел, понимаешь? Его ужеполучили. Если SOCK_RAW его получил, то и все остальные его получили. Постфакт...

Если посреди комнаты кто-то крикнул, и ты этот крик услышал, то как ты можешь заставить других "забыть", про услышанный им тоже, тот же самый крик?

Снифер - это снифер, он НЕ посредник. Информация (пакеты) проходит не ЧЕРЕЗ него, а И ЕМУ ТОЖЕ.


InGo   (2005-02-15 10:56:00) [17]

Подскажите, а можно ли по какому-нибудь критерию в заголовке убить пакет, чтоб он дальше не прошел?


Rouse_   (2005-02-07 22:48:00) [18]

> Verg ©   (07.02.05 20:58) [4]
О, кстати, Андрей, ты не мог бы завтра выйти в асю? Я хотел с тобой именно по данному примеру проконсультироваться, да все никак тебя не застать... :(
С Ethernet заголовком небольшая проблема...
Зыранее сенькс.


JaoDa   (2005-02-07 21:46:00) [19]

ваауууу и всё работает. крассотищщща!!! :))))))))) пасиб большое! :)))))))

зы: имя автора ядра обязуюсь сохранить! :)


Verg   (2005-02-07 20:58:00) [20]

Первое, что бросилось в глаза:


> const
>  // Размеры используемых структур
>  IPHeaderSize : DWORD = SizeOf(TIPHeader);
>  TCPHeaderSize = SizeOf(TTCPHeader);
>  UDPHeaderSize = SizeOf(TUDPHeader);



>  Inc(frmMain.TotalPacketCount);
>  // Читаем из буфера IP заголовок
>  Move(Packet[0], IPHeader, SizeOf(TIPHeader)); // Допустим, нам не нужны опции
> IPHeaderSize := (IPHeader.iph_verlen and $F) shl 2;
>  // Пишем время жизни пакета
>  LogData := LOG_STR_0 +
>    Format(LOG_STR_1, [frmMain.TotalPacketCount, IPHeader.iph_ttl]);
>  // определяем тип протокола
...................


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо