![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сниффер [D7, NT4, Win2k, WinXP]
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]);
> // определяем тип протокола
...................