var
i:integer;
begin
TcpClient1.RemoteHost:='localhost';
for i:=10 to 30 do
begin
TcpClient1.RemotePort:=IntToStr(i);
try
TcpClient1.Open;
except
end;
if TcpClient1.Connected then
Memo1.Lines.Add(IntToStr(i)+' Открыт');
end;
end;
Открытые порты и процессы
Как в Delphi узнать, какие порты открыты и какие процессы на них висят?
примеров немерено, например из книги Флёнова "Delphi глазами хакера"
Цитата: ahilles
примеров немерено, например из книги Флёнова "Delphi глазами хакера"
а страницу, где ты это нашёл не подскажешь?
конечно книга флёнова не слишком хороший пример, но там есть пример сканера портов страница 146, определить процесс который там висит наверно нельзя, только если согласно общепринятым правилам, но что мешает какому либо приложению нарушить эти правила, (например если я напишу прогу которая занимает порт 21, и все будут думать что работает FTP сервер)
проблема в том, что я делаю не сканер портов, а firewall.
http://msdn2.microsoft.com/en-us/library/aa365928.aspx
http://msdn2.microsoft.com/en-us/library/aa365930.aspx
может кто подскажет, как их в Delphi перевести?
тут есть статья по написанию сетевого фильтра, правда на ассемблере. Посмотри общий принцип и используемые функции.
Вот
сделал... у меня вот что получилось:
Там скоростной сканер с асинхронным режимом описан, правда даже на локалхост он работать будет пару секунд, но быстрее твоего выйдет.