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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтр пакетов, нужен хелп, не малый хелп .. 
:(
    Опции темы
XStrike
  Дата 31.3.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



здравствуйте, вот не так давно появилась задача, надо сделать прогу, задать ейконкретный порт(по которому общается клиент с сервером), и заставить ее анализировать пакеты идущие ... ну и сделать пару правил по которым пакеты будут остановлены, и не дойдут до сервера...
пакеты в принципе я узнаю легко, сниффером ... порт так-же знаю ...

вопрос 1: как думаете? лучше такую программу цеплять на каждого клиента, или на сервер? как надежней?
вопрос 2: на каком языке лучше писать? (пишу в разделе Дельфи так как с ним лучше знаком)
вопрос 3: может у кого есть примеры подобных прог?

за ранее спасибо ..
PM MAIL   Вверх
Romikgy
Дата 31.3.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(XStrike @ 31.3.2006, 07:05 Найти цитируемый пост)
вопрос 1: как думаете? лучше такую программу цеплять на каждого клиента, или на сервер? как надежней?

имхо на сервер, хотя для этих целей что-т типа файрвола делается

Цитата(XStrike @ 31.3.2006, 07:05 Найти цитируемый пост)
вопрос 2: на каком языке лучше писать? (пишу в разделе Дельфи так как с ним лучше знаком)


все равно

Цитата(XStrike @ 31.3.2006, 07:05 Найти цитируемый пост)
вопрос 3: может у кого есть примеры подобных прог?

у меня нет smile

Цитата(XStrike @ 31.3.2006, 07:05 Найти цитируемый пост)
за ранее спасибо ..

за ранее пожалуста , только правила на форум почитай надосуге smile



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

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


Эксперт
****


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

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



Для этих целей отлично подходит TIdTCPMappedPort С закладки Indy Servers
PM MAIL   Вверх
XStrike
Дата 31.3.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



увы .. не нашел ... понимаю .... звучит туповато ... Snowy ... Link please smile
PM MAIL   Вверх
Snowy
Дата 31.3.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Да какой тут линк.
Запускай дельфи. Найди закладку Indy Servers. Найди на най компонент IdMappedPortTCP.
Брось его на форму. Нажми F1. Читай хелп.

Посты по нему:
http://forum.vingrad.ru/index.php?showtopic=83150
http://forum.vingrad.ru/index.php?showtopi...st&p=618877
PM MAIL   Вверх
XStrike
Дата 31.3.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



thanks огромное ... выручил чайника ... smile
кстати ... вопрос ... в связи с правилами ...
канал у меня не очень... форум довольно тяжко грузится ... Snowy ... разрешаешь аськой воспользоваться ???

Это сообщение отредактировал(а) XStrike - 31.3.2006, 14:25
PM MAIL   Вверх
Snowy
Дата 31.3.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот код мапера.
Данный код просто протоколирует данные - скидывает все в файл.
Но вместо этого может и другие действия выполнять.
Код

type
  TForm1 = class(TForm)
    MAP: TIdMappedPortTCP;
    Button1: TButton;
    ePort: TEdit;
    eHost: TEdit;
    eFile: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure MAPOutboundData(AThread: TIdMappedPortThread);
    procedure MAPExecute(AThread: TIdMappedPortThread);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  fs:    TFileStream;
  ini:   TStringList;

implementation

{$R *.dfm}

const
  IniFile = 'Mapper.ini';
  cnHost  = 'Host';
  cnPort  = 'Port';
  cnFile  = 'LogFile';

procedure TForm1.Button1Click(Sender: TObject);
begin
  if MAP.Active then
  begin  // Выключить маппер
    MAP.Active := false;
    Button1.Caption := 'ON';
    fs.Free;
  end else begin // включить маппер
    MAP.MappedHost := eHost.Text;
    MAP.MappedPort := StrToInt(ePort.Text);
    fs := TFileStream.Create(eFile.Text, fmCreate); // открываем Log File
    MAP.Active := true;
    Button1.Caption := 'OFF';
  end;
end;

procedure TForm1.MAPOutboundData(AThread: TIdMappedPortThread);
begin // Исходящие пакеты
  fs.Write(#13#10'<<<<'#13#10,8); // пишем в лог маркер исходящих
  fs.Write(AThread.NetData[1], Length(AThread.NetData)); // пишем в лог данные
end;

procedure TForm1.MAPExecute(AThread: TIdMappedPortThread); 
begin // Входящие пакеты
  fs.Write(#13#10'>>>>'#13#10,8); // пишем в лог маркер входящих пакетов
  fs.Write(AThread.NetData[1], Length(AThread.NetData)); // пишем в лог данные
end;

function GetValue(Name, Def: string): string; // функция работы с ini файлом
begin
  result := ini.Values[Name];
  if result = '' then result := Def;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  inherited;
  ini := TStringList.Create; // подгрузить параметры из ini файла
  if FileExists(IniFile) then ini.LoadFromFile(IniFile);
  eHost.Text := GetValue(cnHost, eHost.Text);
  ePort.Text := GetValue(cnPort, ePort.Text);
  eFile.Text := GetValue(cnFile, eFile.Text);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ini.Values[cnHost] := eHost.Text; // сохранить параметры в ini файл
  ini.Values[cnPort] := ePort.Text;
  ini.Values[cnFile] := eFile.Text;
  ini.SaveToFile(IniFile);
end;

end.

Добавлено @ 13:03
Приаттачиваю полный проект

Присоединённый файл ( Кол-во скачиваний: 164 )
Присоединённый файл  Mapper.zip 2,14 Kb
PM MAIL   Вверх
XStrike
Дата 31.3.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



еще вопрос ... будет ли маппер определять айпи адреса ... так как коннектов к серверу будет много (до двух сотен пользователей одновременно) ... принцип таков, заставлю его анализировать пакеты ... отслеживать надо будет только 2-4 из всех ... т.е. если проходит такой пакет, тогда в течении скажем 8-и секунд не пропускать на сервер такой-же пакет(заменять его другим, к примеру пакетом отключения от сервера, или просто "глушить" пакет ....) но ... пакет ведь идет прямо от клиента ... и если не сделать анализа по айпи ... программа будет обламывать всех юзеров ... а нужно только отправителя/получателя....

З.Ы. если кому интересно ... это античит для онлайн игрушки ...

Это сообщение отредактировал(а) XStrike - 31.3.2006, 15:05
PM MAIL   Вверх
Snowy
Дата 31.3.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(XStrike @ 31.3.2006, 14:53 Найти цитируемый пост)
будет ли маппер определять айпи адреса
Конечно. Bindings есть у всех Indy серверов. В нем и найдешь IP:
AThread.Connection.Socket.PeerIP
Это и есть IP клиента.
PM MAIL   Вверх
XStrike
Дата 31.3.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



проект не полный ... не хватает .res файла ... пытался его скомпилировать ... не вышло ... говорит типа файл reconstructed ... но не появляется ...
PM MAIL   Вверх
XStrike
Дата 1.4.2006, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



user posted image
user posted image
user posted image
user posted image

а вот и ошибки ... скрины ...
PM MAIL   Вверх
Snowy
Дата 1.4.2006, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(XStrike @ 31.3.2006, 20:44 Найти цитируемый пост)
проект не полный ... не хватает .res файла
А он и не нужен.

Цитата(XStrike @ 31.3.2006, 20:44 Найти цитируемый пост)
говорит типа файл reconstructed ... но не появляется ...
Нажми "сохранить" - появится.

Цитата(XStrike @ 1.4.2006, 01:38 Найти цитируемый пост)
а вот и ошибки
Под Delphi7 компилится без проблем.
Написан под Indy9. Для Indy10 код скорее всего будет другим.

PM MAIL   Вверх
XStrike
Дата 1.4.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



сохранял ... не появляется ... переписывал полностью - ничего .... видать дело в дельфи ... я в 6-м это делал ...
кстати ... может есть линк на апдейт ?
PM MAIL   Вверх
XStrike
Дата 2.4.2006, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Snowy, я достал 7-й дельфи и всё стало на место ... получил исполняемый файлик ...но беда в другом ... по идее должен идти лог пакетов идущих через указанный порт(ePort) ... но как бы не хотелось - файл постоянно пустой ....

как я понимаю, если вешать мапера на порт сервера(55901, так как именно сюда обращается клиент) то сам сервер нужно переводить на другой порт(ведь на 1 порт 2 процесса не повесить, так?) ... делал и это(вешал сервер на 55902, так как именно он используется SubServer'ом, если такой используется) ... но результ был вообще ужасный ... клиент не соединялся с сервером ...
Думаю дело в том что надо использовать в программке еще один порт, и на него пересылать данные одновременно с их записью в файл (хотя в будующем протоколирование заменю фильтрацией некоторых пакетов) ... но как бы я не старался ... перенаправить их на другой порт так и не получилось ... smile

пока удалось добавить ePort2, cnPort2 и оформить его в ini файл ...

Это сообщение отредактировал(а) XStrike - 2.4.2006, 01:36
PM MAIL   Вверх
Snowy
Дата 2.4.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



DefaultPort установи 55901
MappedPort - 55902
MappedHost - localhost
Клиенты должны цепляться на 55901 (DefaultPort)
Маппер будет все перенаправлять на 55902 (MappedPort) localhost'a.
Вероятно ты DefaultPort оставил 8080. Вот и не работает...
Я просто не выносил его в настройку, а сделал фиксированным.
Смени на нужный.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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