Форум: "Сети";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизКак перехватывать пакеты из сети? Найти похожие ветки
← →
Melcor (2003-07-03 08:41) [0]Извините за ламерский вопрос (или не ламерский 8-\ ) Но как можно перехватывать пакеты идущие по сети?
← →
Polevi (2003-07-03 09:55) [1]зачем
← →
SergeyKatruk (2003-07-03 13:35) [2]
Хотя бы для подсчета трафика и выявления наиболее нагруженого узла( например кто выделенку занял, роутер грузит - наболело :( )
← →
Melcor (2003-07-07 05:10) [3]Так идеи есть?
Помогите плз.
← →
Evgeny V (2003-07-07 05:23) [4]#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <winsock2.h>
#include <mstcpip.h>
#define MAX_PACKET_SIZE 0x10000
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
typedef struct _IPHeader
{
unsigned char verlen; // версия и длина заголовка
unsigned char tos; // тип сервиса
unsigned short length; // длина всего пакета
unsigned short id; // Id
unsigned short offset; // флаги и смещения
unsigned char ttl; // время жизни
unsigned char protocol; // протокол
unsigned short xsum; // контрольная сумма
unsigned long src; // IP-адрес отправителя
unsigned long dest; // IP-адрес назначения
}IPHeader;
static BYTE Buffer[MAX_PACKET_SIZE];
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.
bool ens;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s1;
if(Button1->Tag==1)
{
Button1->Tag=0;
flag=0;
ioctlsocket(s, SIO_RCVALL, &flag);
closesocket( s );
WSACleanup();
ens=false;
Button1->Caption="Start";
return;
}
Memo1->Lines->Clear();
Button1->Tag=1;
Button1->Caption="Stop";
ens=true;
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
s1.sprintf("%s",name);
Memo1->Lines->Add(s1);
s1="";
Memo1->Lines->Add(s1);
// Включение promiscuous mode.
flag=1;
ioctlsocket(s, SIO_RCVALL, &flag);
// Приём IP-пакетов.
while( ens )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
s1.sprintf("ver=%X tos=%X len=%X id=%X off=%X ttl=%X prot=%X xsum=%X src=%X dst=%X",
hdr->verlen,hdr->tos,hdr->length,hdr->id,hdr->offset,
hdr->ttl,hdr->protocol,hdr->xsum,hdr->src,hdr->dest);
( s1) #include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <winsock2.h>
#include <mstcpip.h>
#define MAX_PACKET_SIZE 0x10000
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
typedef struct _IPHeader
{
unsigned char verlen; // версия и длина заголовка
unsigned char tos; // тип сервиса
unsigned short length; // длина всего пакета
unsigned short id; // Id
unsigned short offset; // флаги и смещения
unsigned char ttl; // время жизни
unsigned char protocol; // протокол
unsigned short xsum; // контрольная сумма
unsigned long src; // IP-адрес отправителя
unsigned long dest; // IP-адрес назначения
}IPHeader;
static BYTE Buffer[MAX_PACKET_SIZE];
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.
bool ens;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s1;
if(Button1->Tag==1)
{
Button1->Tag=0;
flag=0;
ioctlsocket(s, SIO_RCVALL, &flag);
closesocket( s );
WSACleanup();
ens=false;
Button1->Caption="Start";
return;
}
Memo1->Lines->Clear();
Button1->Tag=1;
Button1->Caption="Stop";
ens=true;
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
s1.sprintf("%s",name);
Memo1->Lines->Add(s1);
s1="";
Memo1->Lines->Add(s1);
// Включение promiscuous mode.
flag=1;
ioctlsocket(s, SIO_RCVALL, &flag);
// Приём IP-пакетов.
while( ens )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
s1.sprintf("ver=%X tos=%X len=%X id=%X off=%X ttl=%X prot=%X xsum=%X src=%X dst=%X",
hdr->verlen,hdr->tos,hdr->length,hdr->id,hdr->offset,
hdr->ttl,hdr->protocol,hdr->xsum,hdr->src,hdr->dest);
Memo1->Lines->Add(s1);
Application->ProcessMessages();
//что-то делаем с пакетом...
}
}
}
Кратко, проверил, у меня ловит, код на с++ bulder:-))
← →
Evgeny V (2003-07-07 05:54) [5]Пытался найти ссылку на статью откуда все это скатал, не получилось, поищи сам на королевстве дельфи
Сниффер: щит и меч.
Автор: Константин Максимов
Опубликовано: 10.10.2002
Версия текста: 1.0
Принцип работы сниффера.
Основы передачи данных в сети Ethernet.
Структура программы для прослушивания сети.
← →
Melcor (2003-07-14 02:28) [6]Спасиба! Тока у меня еще (немного по-пожже) возникнет вопрос. Как эти пакеты посылать. Надо послать тот же пакет который пришел (точь в точь такой)
← →
panov (2003-07-14 03:11) [7]Спасиба! Тока у меня еще (немного по-пожже) возникнет вопрос. Как эти пакеты посылать. Надо послать тот же пакет который пришел (точь в точь такой)
А вот это для чего?
← →
Melcor (2003-07-18 04:49) [8]Для анализа и отправки дальше.... например. И есл не секрет, есть ли какие либо компоненты для отправки (и вообще работы с сетями, кроме стандартных)
Заранее благодарен!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c