Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Трафик UDP ??? Как получить??? 
:(
    Опции темы
Олег_Игоревич
  Дата 8.5.2005, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 21.1.2005

Репутация: нет
Всего: нет



Доброго ВАМ времени суток, уважаемые!

Возник у меня такой вопрос :
как можно узнать кол-во входящего и исходящего трафика по протоколу UDP и другим , как , к примеру, в программе
OutPost Firewall ?
Заранее спасибо !!!
--------------------
Используй жизнь ПО ПОЛНОЙ !!!  
PM MAIL   Вверх
Rouse_
Дата 9.5.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 5
Всего: 29



Так пойдет?

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    lblInDatagrams: TLabel;
    lbldwNoPorts: TLabel;
    lbldwInErrors: TLabel;
    lbldwOutDatagrams: TLabel;
    lbdwNumAddrs: TLabel;
    procedure Timer1Timer(Sender: TObject);
  end;

  PMibUdpStats = ^TMibUdpStats;
  _MIB_UDPSTATS = packed record
    dwInDatagrams: DWORD;
    dwNoPorts: DWORD;
    dwInErrors: DWORD;
    dwOutDatagrams: DWORD;
    dwNumAddrs: DWORD;
  end;
  TMibUdpStats = _MIB_UDPSTATS;

  function GetUdpStatistics(var pStats: TMibUdpStats): DWORD;
    stdcall; external 'iphlpapi.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Stats: TMibUdpStats;
begin
  if GetUdpStatistics(Stats) = NO_ERROR then
  begin
    lblInDatagrams.Caption := IntToStr(Stats.dwInDatagrams);
    lbldwNoPorts.Caption := IntToStr(Stats.dwNoPorts);
    lbldwInErrors.Caption := IntToStr(Stats.dwInErrors);
    lbldwOutDatagrams.Caption := IntToStr(Stats.dwOutDatagrams);
    lbdwNumAddrs.Caption := IntToStr(Stats.dwNumAddrs);
  end;
end;

end.



--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Олег_Игоревич
Дата 10.5.2005, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 21.1.2005

Репутация: нет
Всего: нет



Большое спасибо Rouse_ ! Всё понятно !!!
--------------------
Используй жизнь ПО ПОЛНОЙ !!!  
PM MAIL   Вверх
DB
Дата 17.11.2005, 12:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Скажите, а как при этом узнать IP адреса входящего и исходящего соединения?
А также номера портов smile
  Вверх
Snowy
Дата 17.11.2005, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



В данном примере никак. Тут статистика.
А статистика это обобщенные данные, а не по каждому соединени.
Тут нужно копать в сторону GetUDPTable или GetExtendedUdpTable.
PM MAIL   Вверх
DB
Дата 17.11.2005, 15:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











GetUDPTable не помогает
Про GetExtendedUdpTable инфу не нашел
может линки подкинете или подскажите как можно определить IP адрес удаленного соединения по UDP протоколу?

Заранее спасибо!!!

  Вверх
AntonSaburov
Дата 17.11.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Открывать сокеты на уровне ROW_SOCKET. Тогда можно ловить весь траффик и делать с ним что хочешь.
PM MAIL WWW ICQ   Вверх
Snowy
Дата 17.11.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



UDP протокол не содержит IP адреса.
Поэтому просто так никак.
Нужно ловить все подряд IP пакеты, а потом уже разбираться, UDP это или нет.
PM MAIL   Вверх
DB
Дата 18.11.2005, 08:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Тогда как определить на какой порт пришел перехваченный IP пакет?
  Вверх
Snowy
Дата 18.11.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



А тут уже нужно вытаскивать из него UDP и смотреть в UDP.
Данные о портах там.
PM MAIL   Вверх
Guest
Дата 18.11.2005, 11:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите пожалуйста как это реализовать
в состав пакета входит:
Код

версия и длина заголовка
тип сервиса
длина всего пакета
Идентификация
флаги и смещения
время жизни пакета
протокол
контрольная сумма
IP-адрес отправителя
IP-адрес назначения

Как вытащить из него UDP?
  Вверх
Romikgy
Дата 18.11.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Guest @ 18.11.2005, 11:29)
протокол

Здесь об этом написано smile
Добавлено @ 12:40
Возьми на посмотреть как работает простейший сниффер.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 18.11.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Guest @ 18.11.2005, 11:29)
Как вытащить из него UDP?

Это сложнее. Сам UDP пакет может быть разбит по нескольким IP пакетам.
Хотя, если тебе нужен только порт - нужно брать данные из тела IP пакета и разбирать, согласно заголовка UDP. Естественно, если тип данных в пакете UDP.
PM MAIL   Вверх
DB
Дата 18.11.2005, 13:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А есть примерчик? smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.