Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

открыт ли 21 80 порт на удал... [D4, D5, WinXP]


Renald ©   (2004-05-13 01:30:00) 

Есть ИП (10.33.22.х) нужно проверить открыт ли 21 или 80 порт
чтоб понять что унего стоят FTP и HTTP server
обычными компонен делфи


Renald   (2004-05-15 18:23:00) [1]

Спасибо Verg !!!! .Я просто сейчас проверить не cмог.Я в WinXP(internet)  a Delph4 у меня в Win98 .Скомпилирую там


Verg   (2004-05-15 18:16:00) [2]


> [15] Renald   (15.05.04 18:08)
> что не работает тоже ?


Я не понял. Я вроде по-русски написал, что эта программа [14] прекрасно работает. Дает правильный ответ на вопрос - доступен ли порт 21 на заданном IP.
Что еще неясно?
Какой там снифер, и чего там показывает - мне фиалетово.


Renald   (2004-05-15 18:08:00) [3]

что не работает тоже ?
у меня нет ZeroMemory(@Sa, sizeof(Sa));


Verg   (2004-05-15 17:59:00) [4]

А почему у меня работет вот этот код?

program FTPConnect;

{$APPTYPE CONSOLE}

uses
 Windows,
 WinSock;
var
 WSAData : TWSAData;
 S : TSocket;
 Sa : TSockAddrIn;
begin
 if WSAStartup(MakeWord(1,1), WSAData) = NO_ERROR then
 begin
   ZeroMemory(@Sa, sizeof(Sa));
   S := socket(PF_INET, SOCK_STREAM, 0);
   Sa.sin_family := AF_INET;
   Sa.sin_port   := htons(21);
   Sa.sin_addr.S_addr := inet_addr('193.233.9.194');
   if S<> INVALID_SOCKET then
   begin
     if connect(S, Sa, sizeof(Sa)) = SOCKET_ERROR then
        WriteLn('Connection error')
     else
        WriteLn('Ok!');
     closesocket(S);
   end else Writeln('Socket error');
   WSACleanup;
 end;
 Readln;
end.


Renald   (2004-05-15 17:53:00) [5]

>Если на заданном IP обслуживается 21 порт, то [8] соединяется или не соединяется к этому IP?!

не соеденинятся.
код взят в сети со сканера
я пробывал перебрать -(pchar('10.22.3.3'));ипы
в поисках хоть одного открытого 21 - ненашел.
Хотя он открыт -видно другими инструментами.

Я нашел почему не соединяется,потому что соединение
проиходит по номеру порта 0 к удаленной машине,и конечно
соединения не будет.Вот я и думаю,где ж в коде затесался НОЛЬ?


Verg   (2004-05-15 13:08:00) [6]

Если на заданном IP обслуживается 21 порт, то [8] соединяется или не соединяется к этому IP?!


Renald   (2004-05-15 13:02:00) [7]

я смотрю через firefall Outpost и видно что запросы к адресу
идет но обращаются к порту 0,а не 21.код [8]
хотя в коде вроде верно
const
port = 21;
.....
A.sin_port:=htons(port); // ставим номер порта! он равен 21


Verg   (2004-05-15 11:54:00) [8]

[8]

> перешол на низкий,
> код на ладони,но неработает


И
[9]

> код работает,но номер порта 0 .?


Так работет или не работает код из [8]?
Или какой вопрос-то? Почему снифер неверно работает?


Renald   (2004-05-15 09:52:00) [9]

Да еще  A.sin_port:=htons(port);
на  A.sin_port:=port;
ничего недает,код работает,но номер порта 0 .?


Renald   (2004-05-15 01:42:00) [10]

Что то не пашет так,перешол на низкий,
код на ладони,но неработает,через снифер
вижу запросы идут по заданному удал адресу,
но не порта 21 , а  порт 0.
Вчем же дело если A.sin_port:=htons(port); ?

D:WSAData;
 S:TSocket;
 A:TSockAddr;
const = 21;
port

 { Если WSAStartup() возвращает не нулевое значение, выводим сообщение об ошибке
 и выходим из программы}
if WSAStartup($101,D)<>0 then exit;

 { Определяем тип семейства сокетов, и IP адрес для сканирования }
 A.sin_family:=AF_INET;
 A.sin_addr.S_addr:=inet_addr(pchar('10.22.3.3'));
 { Создаем сокет }
 S:=socket(AF_INET,SOCK_STREAM,0);
 { Если возвращено значение INVALID_SOCKET, выводим сообщение об ошибке }
 if S=INVALID_SOCKET then showmessage('socket error');
 { Определяем порт (задается константой) }
 A.sin_port:=htons(port);
 { Пытаемся подконнектиться, если удачно - выводим сообщение, что порт открыт,
 в другом случае - сообщение о том, что порт закрыт (или недоступен) }
 if connect(S,A,sizeof(A))=0 then
showmessage (inttostr(port)+' opened') else
showmessage (inttostr(port)+' closed');
end;
{ Завершаем работу с сокетами }
WSACleanup;

end;


Renald   (2004-05-13 17:22:00) [11]

спасибо попробую


Digitman   (2004-05-13 15:12:00) [12]


> SEH не помогает


поможет, если режим будет ctBlocking


Renald   (2004-05-13 14:48:00) [13]

TClientSocket = PS

делаю
PS.port=21
ps.host='nosov';
try
ps.open;
except
end;

настр компонента
client-ctNonlocking
service -

обработчик connect
Ps.close;

выдает массагу
Asyncronus socket error 10061,
SEH не помогает,что не правельно?
вместо имени -прописка ИПа так же
delphi4


Renald   (2004-05-13 14:42:00) [14]

пробывал
TClientSocket =PS

PS.port=21;
ps.host='antonov';

try
PS.open
except
end;

настрой компонента
client -ctNonlocking
service - нет

в обработчике Connect
PS.close;
//--------------------------------
выдает мессагу Asynchrous socket error 10061 !!?
и SEH непомогает
задание не имени а ИПа - тоже самое
другие порты-тоже,
хотя известно что машина есть и порт открыт

Может стороний компонент есть спецальный


panov   (2004-05-13 13:16:00) [15]

TClientSocket


Renald   (2004-05-13 12:16:00) [16]

каким компонентом?
TPowersock \ TNMSMTP \ TNMEcho ?

может из сканера выдрать что нибудь?
Function CheckUrl(url:string):boolean;
var
hSession, hfile, hRequest: hInternet;
dwindex,dwcodelen :dword;
dwcode:array[1..20] of char;
res : pchar;
begin
 if pos('http://',lowercase(url))=0 then
    url := 'http://'+url;
 Result := false;
 hSession := InternetOpen('InetURL:/1.0',
      INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
 if assigned(hsession) then
   begin
     hfile := InternetOpenUrl(
          hsession,
          pchar(url),
          nil,
          0,
          INTERNET_FLAG_RELOAD,
          0);
     dwIndex  := 0;
     dwCodeLen := 10;
     HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE,
             @dwcode, dwcodeLen, dwIndex);
     res := pchar(@dwcode);
     result:= (res ='200') or (res ='302');
     if assigned(hfile) then
       InternetCloseHandle(hfile);
     InternetCloseHandle(hsession);
   end;
 
end;

ps.TimeOut := spinedit5.Value;
ps.Host := edit1.text;
portno:=spinedit1.Value;
ps.Port := spinedit1.Value;
ps.Connect;
end;
-
var
 i:integer;
begin
 powersock1.Host := edit4.Text ;
 powersock1.Port := spinedit3.Value ;
 if not powersock1.Connected then powersock1.Connect;
 gauge1.MaxValue := spinedit4.value;
 for i:=1 to spinedit4.Value do
 begin
   statusbar1.SimpleText := 'Sending '+inttostr(i)+ 'message(s)';
   powersock1.Write(richedit2.Lines.Text );
   gauge1.Progress := i;
 end;
 powersock1.Disconnect ;
 gauge1.Progress :=0;
end;
-
 i:integer;
begin
 gauge2.MaxValue := spinedit6.Value +1;
 gauge2.MinValue := 0;
 nmsmtp1.Host := edit5.Text;
 nmsmtp1.Port := 25;
 nmsmtp1.UserID := edit6.Text ;
 if not nmsmtp1.Connected then nmsmtp1.Connect;
 nmsmtp1.PostMessage.FromAddress := edit8.Text ;
 nmsmtp1.PostMessage.FromName := edit7.Text ;
 nmsmtp1.PostMessage.ToAddress.Clear ;
 nmsmtp1.PostMessage.ToAddress.Add(edit10.text);
 nmsmtp1.PostMessage.Subject := edit11.Text ;
 nmsmtp1.PostMessage.Body.Assign(richedit3.lines);
 for i:=1 to spinedit6.Value do
 begin
   if not nmsmtp1.Connected then nmsmtp1.Connect;
   nmsmtp1.PostMessage.FromAddress := edit8.Text ;
   nmsmtp1.PostMessage.FromName := edit7.Text ;
   nmsmtp1.PostMessage.ToAddress.Clear ;
   nmsmtp1.PostMessage.ToAddress.Add(edit10.text);
   nmsmtp1.PostMessage.Subject := edit11.Text ;
   nmsmtp1.PostMessage.Body.Assign(richedit3.lines);
   nmsmtp1.SendMail;
   gauge2.Progress := i;
 end;
 nmsmtp1.Disconnect ;
 gauge1.Progress := 0;
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
 NMEcho1.ReportLevel := Status_Basic;
 NMEcho1.TimeOut := 20000;
 NMEcho1.Host := Edit14.Text;
 NMEcho1.Port := StrToInt(Edit15.Text);
 NMEcho1.Connect;
end;

statusbar1.SimpleText := 'Scanning interrupt';
richedit1.Lines.Add (timetostr(time)+' - Scanning interrupt');

portno:=spinedit2.value+1;

label son,endson;
begin
if portno > spinedit2.Value then goto son else
statusbar1.simpletext:='Scanning port : '+inttostr(portno);
ps.Disconnect;
portno:=portno+1;
ps.port:=portno;
if scan then ps.Connect;
goto endson;
son:
statusbar1.SimpleText := 'Scanning complete';
richedit1.Lines.Add (timetostr(time)+' - Scanning complete');
endson:

label son,endson;

if portno > spinedit2.Value then goto son else
ps.disconnect;
richedit1.Lines.Add (timetostr(time)+' - Connect on port '+inttostr(portno));
portno:=portno+1;
ps.port:=portno;
if scan then ps.Connect;
goto endson;
son:

richedit1.Lines.Add (timetostr(time)+' - Scanning complete');
endson:
end;

procedure TForm1.SpeedButton16Click(Sender: TObject);
begin
activeports1.update;
end;


Rouse_   (2004-05-13 09:09:00) [17]

Соелдиняйся с портом, посылай ему что нибудь - жди ответ - анализируй...


Наверх

Титульная страница Поиск, карта сайта Написать письмо