Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: CL | DM;

Вниз

ограничение траффика   Найти похожие ветки 

 
Warstone ©   (2006-07-20 15:11) [0]

Задача:
Ограничить входящий(в последствии и исходящий) траффик на машине, так чтобы пользователь, сидящий за ней кроме как по скорости немог определить ограничение. При этом в силу конфигурации сети (ADSL-Ethernet модем - Switch - машины(одна из которых - рассматриваемая)), не получится поставить прокси или что-то подобное.

Из того что сделал:
Я пошел путём хукования :) (от слово-то какое). Перехватываю функцию recv. На данный момент тренируюсь на отдельном приложении (Download Master если кому-то интересно). Действительно, скорость ограничевается (пока как константа до 5К бит/сек), но при этом загрузка ЦП возрастает с 0.5% до 70-75%, что недопустимо (так как можно понять, что ограничение стоит). Попытка перехватить select никчему не привела (ИМХО DM её не вызывает).

Внимание, вопрос: Что я делаю не так :) Или, покажите/дайте ссылку на работающий пример. Не обязательно Delphi, но желательно (не хочу потом переводить на другой язык).

Спасибо за внимание.

ЗЫ: Просьба писать по существу. Вопрос стоит ребром. Я из-за той машины в Контру поиграть не могу, а там или по нету лазиют, либо E-Mule стоит.

Если нужны исходники того, что уже сделал - скажите - выложу.


 
Лапыч ©   (2006-07-20 15:22) [1]

Давайте совершенствовать профессиональный жаргон: слова "трафик" (traffic) и "буфер" (buffer) пишутся с одной буквой "ф".


 
Warstone ©   (2006-07-20 19:18) [2]

Просил-же! Кроме как брякнуть - ничего не можите? Знаю я откуда эти слова пошли, но в целях скорости написания текста 2-ю "ф" не писал. Кто-нить может что-нибудь посоветовать?


 
Virgo_Style ©   (2006-07-21 10:58) [3]

Предпоследняя строка наводит на мысль о "западлостроительстве" (с).


 
Ketmar ©   (2006-07-21 11:43) [4]

как-то не так делаете паузу? без кода сказать сложно...


 
Warstone ©   (2006-07-21 17:59) [5]

Я её вообще не делаю...
Код:

function TrueRecv(s: TSocket; var Buf; len, flags: Integer): Integer;
begin
 WriteProcessMemory(CurrProc,AdrRecv,@OldRcv,SizeOf(OldCode),Writen);
 Result:=Recv(s,Buf,len,flags);
 WriteProcessMemory(CurrProc,AdrRecv,@JmpRecv,SizeOf(far_jmp),Writen);
end;

function NewRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
 buflen:integer;
 first:boolean;
 i:integer;
 Tick:Cardinal;
begin
 Tick:=GetTickCount;
 buflen:=Floor((Tick-LastTime)*5);
 if buflen>len then buflen:=len;
 LastTime:=Tick;
 Result:=TrueRecv(s,Buf,buflen,flags);
end;


Атакуемая программа ограничевается в скорости (5 кб), но при этом загрузка процессора возрастает до 75%


 
Ketmar ©   (2006-07-21 21:09) [6]

ой. не надо так API перехватывать -- это во-первых. багов наловите.
во-вторых: а что будет, если buflen станет нулём? правильно, обрыв соединения будет.

вердикт: сначала переписать перехват. потом будем думать дальше. %-)


 
Warstone ©   (2006-07-21 23:10) [7]

А как? Раскажите как перехватить recv? И ещё пару процедур винсокса?
Ага... тока если buflen =0 то всё ок...(закачка продолжается дальше и процесска переконнекта не происходит) Хотя... может в этом и есть закорючка...

Вердикт: А вместо критики можно было конструктивные предложения выдвигать... или ссылки на них давать. ИМХО сюда не за критикой ходят... хотя немного здоровой - не помешает, но вместе с конструктивными предложениями.


 
Ketmar ©   (2006-07-22 00:03) [8]

"что, опять?" (ц)
опять патологическое неумение вопрошающего пользоваться поиском во всяких местах ставится в вину отвечающему? знаете -- надоело. обвиняйте в следующий раз кого-нибудь другого, не меня. пусть этот другой  вам подсказки даёт.


 
Anatoly Podgoretsky ©   (2006-07-23 13:45) [9]

Прокси всегда поставить можно.
А вопрос действительно в лучшем случае пахнет западло строительством или хуже.


 
Warstone ©   (2006-07-23 20:59) [10]

И что? Прокси поставить не удастя так как в сети 3 машины и ни одного сервера. (Эл. энергия будет дороже). Поском пользовался, ничего не нашел... пропахал ~10 страниц в этой ветки - нет ничего. Так что... А критика... я кстати от вас ничего путного ещё не слышал (to Ketmar). Прокси по причинам, описанным выше - не олучается поставить. А западлостроительноство... наверно, но в отличие от мелких падлостроителей у меня есть работающий код. Мне не нравиться что он жрёт 75% проца. И только это. Хотя нормальный вариант (просто вызов ориг. функции) не жлет ничего... или так мало, что не регистрируется. Я понимаю что тут есть некоторые старожилы... Тока то что они тут довольно давно ещё не даёт им право отклоняться от сути конференции... Или я не туда пришел? Надо было куда-то в другое место? На RSDN был... к сожалению там улов ещё меньше... Видно нету народа который это делал... Придется мастерить драйвер.


 
Anatoly Podgoretsky ©   (2006-07-23 22:32) [11]

Для прокси не требуется выделеный сервер, в качестве прокси может выступать любая машина, обычное дело для малых сетей.


 
Медведъ   (2006-07-24 09:34) [12]

не удивительно что возрастает CPU usage, в перехватчике нужно анализировать скорость и на основне статистики делать sleep
а в твоем способе при хорошей скорости происходит очень большое колво холостых вызовов


 
Warstone ©   (2006-07-24 10:24) [13]

Медведь... Пасибо прям балзам на душу... тока при Sleep(3) DM вподает в ступор и не выходит оттуда. А по поводу прокси сервера... Машина должна быть запущена всегда, верно?(Чтоб можно было лазить всегда) Вот поэтому и не получится...


 
Ketmar ©   (2006-07-24 21:21) [14]

>Warstone ©   (23.07.06 20:59) [10]
ой-вэй. "и пришёл бука". и стал рассказывать, на что у кого-то есть права, а на что -- нет. значок модератора не предъявите?

если мои хинты не помогают -- это печально. готовый код я даю очень редко, а вот направление, в котором копать -- часто. если копалка не работает/на ремонте -- проблема никак не моя.



Страницы: 1 вся ветка

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
2-1164636182
Фёдр_иваныч
2006-11-27 17:03
2006.12.17
Разложение числа на множетели


1-1162395405
*Ray*
2006-11-01 18:36
2006.12.17
работа с DBGrid как с Excel


15-1164646391
Орион
2006-11-27 19:53
2006.12.17
Иконки погоды


15-1164326626
Бугага
2006-11-24 03:03
2006.12.17
Газзаев: "ЦСКА проиграл, а виноват «Луч-Энергия»


4-1154970086
Navi
2006-08-07 21:01
2006.12.17
Как получить иконку файла по его расширению?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский