![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сетевые подключения ...
star © (2002-01-03 12:58:00)Недавно обнаружил я, что некоторые из работников моей конторы от безделья лазят по расшаренным папкам чужих машин. Решил я это дело пресечь написав программку типа сетевого монитора, только сидящую в трее и выскакивающую при чьем-либо подключении к моей машине, и сообщающую, кто подключился. Полез в АПИ и обнаружил функцию NetSessionEnum. Функция хорошая, но приходится ее вызывать в таймере, периодически проверяя, не подключился ли кто. Это не есть хорошо, хотелось бы не загружать машину бесполезной работой. Может кто знает другой способ? Например, может винды генерируют какое-либо сообщение при подключении пользователя? Или перехватывать прерывания от сетевухи или еще что... Может у кого есть мысли по этому поводу? Кроме того, когда я пытаюсь отключать пользователей функцией NetSessionDel, им все-же удается скопировать несколько маленьких файлов прежде, чем моя машина их отрубит... В общем, что делать - пока не знаю. Если есть мысли - буду очень рад ...
cypher (2002-05-22 23:54:00) [1]Если вопрос открыт, могу рассказать как заставить работать функции Net в любых осях
Сергей Ф (2002-05-16 20:48:00) [2]Согласен с Alex_LG. По-моему, тоже можно использовать firewall.
Например, такой: Kerio Personal Firewall( http://www.kerio.com). Последняя версия 2.1.4. Весит около 2 Мб, правда, платный :(((
Будет сидеть в трэе, а как только к зашаренной папке кто-то подключиться, выведет сообщение на экран и спросит, разрешить или запретить подключение. Укажет всю информацию о том компьютере, с которого производилась попытка подключения.
IMHO, это один из лучших firewall"ов.
Сатир (2002-05-14 17:21:00) [3]2 DelGod_
модуль нашел. FastNet. но вот в работе спотыкается:-(, когда на button1 жму, получается access violation in project1.exe.
может ещё чего надо? у меня стоит прокси, а карта LAN, это случайно не причина глюка? ... ладно , пойду в хелпе покопаюсь
Сатир (2002-05-13 19:04:00) [4]2_DelGod
а в каком модуле TPowerSock лежит?
GatesBill (2002-05-13 00:22:00) [5]>- Папки запаролить дело хорошее, однако странное дело: >Миллениум входит на запароленные папки 98-х без всяких >вопросов, как-будто паролей не стоит ...
Не подскажет ли кто из М и л е н и й щ и к о в ... так это или нет?
( ... но верится с трудом).
NeyroSpace (2002-04-24 01:35:00) [6]Всем привет!
1. Я тоже намучался с Net* ф-циями и тоже пишу свой монитор вместо MS NetWatch. Полазив по MSDN я кое-что понял. Все LAM Ф-ции, определенные в NetApi32.dll на 9х/Me работать не будут, да и сама NetApi32 в 9x сильно обрезана (я попытался заменить ее NT-шной, но она потянула за собой кучу других dll вплоть до ядра :-). Но на 9x/Me есть альтернатива SrvApi.dll. Примеры можно найти здесь: <a> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/ntlmapi_29mb.asp</a>.Если загляните, то увидите, что для 9x/Me определены свои структуры _50, кот предоставляют минимальную инфу о сети :-(. Не мучтесь и не набивайте все это, а лучше берите прототипы с Project Jedi.
2. Проблема с таймером знакома, простого решения не знаю - вопрос открыт.
3. Про сканер портов я уже отвечал, есть способ через IpHlpApi.dll гораздо аккуратнее. Но там таже проблема с событиями.
PS
Если можно и мне киньте исдники может чего упустил, разгребая MSDN :-)
erik (2002-04-17 15:34:00) [7]Я бы рекомендовал использовать комбинированый метод. Если приходит пакет на определенный порт, то вызывать NetSessionEnum
И разумеется делать в треде а не в таймере.
Alex_LG (2002-04-17 14:41:00) [8]а как на счёт фаерволов?
J'JF (2002-04-17 08:15:00) [9]А я под W2K не могу заставить работать NetSessionEnum (и вообще все семейство команд Net*). Воспользовался примерами из данного форума - дохлый номер. Понятно, что в W2K другой список формальных параметров. Может кто подскажет, как их правильно описывать и вызывать? Хотя бы на примере NetSessionEnum (дальше сам разберусь)! Заранее благодарен.
P.S. Delphi 5.
Алексей Кудринский (2002-03-06 22:34:00) [10]Не могу заставить NetSessionEnum работать (OS-WinXP, причина-AccessViolation)...
Кто-нибудь, вышлите иcходники, пожалуйста! Больше нигде не могу найти.
DelGod_ (2002-01-09 17:29:00) [11]>Если бы где найти исходники порт-сканнер
порт сканер у меня есть свой, корявый слегка, но работает
{s: TPowersock;}
procedure TForm1.NextPORT;
begin
s.disconnect;
inc(It);
s.port:=it;
statusbar1.SimpleText := "Scanning "+s.Host+" : "+inttostr(s.port);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Enabled := false;
Edit2.Enabled := false;
Edit3.Enabled := false;
Edit4.Enabled := false;
speedbutton1.Enabled := false;
speedbutton2.Enabled := true;
listbox1.Items.Add("Scan begin");
go:=true;
it:=0;
s.timeout:=strtoint(edit6.text);
s.Host := edit1.text +"."+edit2.text + "."+edit3.text + "."+edit4.text;
NextPORT;
s.Connect;
listbox1.Items.Add("Scan complete");
Edit1.Enabled := true;
Edit2.Enabled := true;
Edit3.Enabled := true;
Edit4.Enabled := true;
speedbutton2.Enabled := false;
speedbutton1.Enabled := true;
s.Disconnect;
end;
procedure TForm1.sConnect(Sender: TObject);
begin
if not go then
begin
s.Disconnect;
exit;
end;
listbox1.items.Add(s.host+":"+inttostr(s.port));
NextPORT;
if it>=65000 then
begin
listbox1.Items.Add("Scan complete");
statusbar1.Simpletext := "";
go:=false;
Edit1.Enabled := true;
Edit2.Enabled := true;
Edit3.Enabled := true;
Edit4.Enabled := true;
speedbutton1.Enabled := true;
speedbutton2.Enabled := false;
exit;
end;
if go then s.connect else exit;
end;
procedure TForm1.sConnectionFailed(Sender: TObject);
begin
if not go then
begin
s.disconnect;
exit;
end;
NextPORT;
if it>=65000 then
begin
listbox1.Items.Add("Scan complete");
statusbar1.Simpletext := "";
go:=false;
Edit1.Enabled := true;
Edit2.Enabled := true;
Edit3.Enabled := true;
Edit4.Enabled := true;
speedbutton1.Enabled := true;
speedbutton2.Enabled := false;
exit;
end;
if go then s.connect else exit;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
go:=false;
listbox1.Items.Add("Scan aborted");
statusbar1.Simpletext := "";
s.cancel;
Edit1.Enabled := true;
Edit2.Enabled := true;
Edit3.Enabled := true;
Edit4.Enabled := true;
speedbutton1.Enabled := true;
speedbutton2.Enabled := false;
end;
star (2002-01-09 11:10:00) [12]Скиньте, если не трудно, посмотрю, что это такое.
Я же пишу не порт-сканнер, а просто оповещатель о подключении пользователя ...
Если бы где найти исходники порт-сканнера ...
DelGod (2002-01-09 04:07:00) [13]есть рульная прога portmonitor сайт разработчика irctoolz.com
но её там почему-то нет :-(( но я могу кинуть вам на мыло
я думаю она вам подойдёт сидит в трее при подключении на какой-то порт "выпрыгивает" на середину екрана:-))
Victor (2002-01-08 05:37:00) [14]Поставь Windows 2000 :)
Igorok (2002-01-06 12:10:00) [15]2Star
Может ты на своей машине рашарил папку с паролем и сам же на свою машину через сетевое окружение входишь? Тогда понятно почему он пароль не спрашивает ;) А ведь он и не должен ...
nikkie (2002-01-04 16:28:00) [16]я поискал - мне кажется NetAlertStart, NetAlertStop должны помочь. в MSDN про них не написано, а Google дал такую ссылку:
http://docsrv.caldera.com:1997/cgi-bin/man/man?NetAlertStart+3
star (2002-01-04 15:41:00) [17]Все эти галочки, кеширование паролей и пр. пройдено в глубоком детстве. Я же говорю, пререпробовал по всякому.
Мне не это главное, мне главное отлавливать САМ МОМЕНТ подключения пользователя, а не опрашивать их присутствие по таймеру. А вот КАК это сделать, я и не знаю. Переворотил тут весь MSDN, искал сообщения, генерируемые виндами при коннекте - не нашел. Уже голова болит от аглицких письменов ...
Woron (2002-01-04 14:48:00) [18]2Star: Вышли и мне plz исходнички
А насчет паролей, простой способ проверить поставить новый и войти.
Чаще всего при вводе пароля на папку (при подключении) не убираем галочку СОХРАНИТЬ ПАРОЛЬ.
Когда-то не хотелось переставлять системы на компах юзерей, так нашел в реестре, где они храняться. Но уже забыл
star (2002-01-04 12:52:00) [19]2 Fellomena: вышлю, только обработаю попонятнее.
Пробовал запускать Spy++, и коннектился к машине - ничего - никаких сообщений ... Может есть еще какие spy, но я про них не слышал ...
А что касается Милениума и 98 - я проверил еще раз - Милениум полностью игнорирует пароли 98. Может у меня какой-нибудь коряво взломанный вариант???
Fellomena (2002-01-04 12:39:00) [20]2 star: мне тоже вышли plz...
2 samuray: а ты не думал над вариантом установки hook-а ? Предварительно запусти какой-нибудь spy, подключись сам к своей машине и смотри (в spy-е) какое событие произошло. На него и ставь hook.
...но это я так - теоритически сказала - сама не пробовала.
Да, пока не забыла, Милениум невходит на запароленные папки 98 - я в сетке сижу, где есть всё 98, Me, 2000, XP и пароли держаться на 98 =)