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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сканер XScanner вывод результата 
:(
    Опции темы
almel1961
Дата 16.11.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот пример сканера удобен быстро сканит одно плохо просто выводит список портов неуказывая какие
Код

(*==================================*)
(* XScanner by XProger              *)
(* mail: [email protected]            *)
(* site: http://XProger.mirgames.ru *)
(*==================================*)
unit Code;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms,
  StdCtrls, ExtCtrls, WinSock, AppEvnts, Buttons, Gauges, Spin;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    SpeedButton1: TSpeedButton;
    ProgressBar1: TGauge;
    ListBox1: TListBox;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    procedure SpeedButton1Click(Sender: TObject);
  end;

  TMyThread = class(TThread)
   protected
    procedure Execute; override;
  end;

  TFSocket = record
   sa: TSockAddr;
   FData: integer;
   TimeOut: integer;
  end;

const
 MAX_PORTS=500;
 Ping=5000;

var
  Form1: TForm1;
  FSocket: array [0..MAX_PORTS - 1] of TFSocket;
  FPort: WORD;
  FInfo: TWSADATA;
  FHost: integer;
  FPStart, FPEnd: WORD;
  SThread: TMyThread;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
 if (Msg.message>=FPStart+WM_USER)
                                and (Msg.message<=FPEnd+WM_USER)
 then
 if WSAGETSELECTERROR(Msg.lParam)=0
 then
  case WSAGETSELECTEVENT(msg.lParam) of
   FD_CONNECT:
      begin
       ListBox1.Items.Add(IntToStr(ListBox1.Count+1)+
                        ') IP: '+inet_ntoa(FSocket[0].sa.sin_addr)+'  |  '+
                        'Port: '+intToStr(Msg.message - WM_USER));
       Application.ProcessMessages;
      end;
  end;
 Handled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i: integer;
begin
 if WSAStartup(MAKEWORD(2, 0), FInfo)<>0
 then Halt;
 for i:=0 to MAX_PORTS-1 do
 with FSocket[i] do
  begin
   TimeOut := 0;
   FData := Socket(AF_INET, SOCK_STREAM, 0);
   if FData = SOCKET_ERROR
   then
    begin
     WSACleanup;
     Halt;
    end;
  end;
 Application.OnMessage:=Form1.ApplicationEvents1Message;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
 i: integer;
begin
 if SThread<>nil
 then
  begin
   SThread.Terminate;
   SThread.WaitFor;
   SThread:=nil;
  end;
 for i:=0 to MAX_PORTS-1 do
  CloseSocket(FSocket[i].FData);
 WSACleanup;
end;

procedure InitSockets;
var
 i: integer;
begin
 for i:=0 to MAX_PORTS-1 do
  with FSocket[i] do
   if (FPort>=FPEnd) or (SThread.Terminated)
   then break
   else
    if GetTickCount-TimeOut>PING
    then
     begin
      sa.sin_family:=AF_INET;
      sa.sin_addr.S_addr:=FHost;
      sa.sin_port:=htons(FPort);
      //
      WSAAsyncSelect(FData, Application.Handle, WM_USER+FPort, FD_CONNECT);
      connect(FData, FSocket[i].sa, SizeOf(FSocket[i].sa));
      TimeOut:=GetTickCount;
      inc(FPort);
      Form1.Label2.Caption:='Port: '+intToStr(FPort);
      Form1.ProgressBar1.Progress:=trunc(((FPort-FPStart)*100)/(FPEnd-FPStart));
      Application.ProcessMessages;
      //
      Sleep(PING div MAX_PORTS);
     end;
end;

procedure TMyThread.Execute;
var
 i: integer;
 buf: in_addr;
begin
 FPStart:=Form1.SpinEdit1.Value;
 FPEnd:=Form1.SpinEdit2.Value;
 FHost:=inet_addr(PChar(Form1.Edit1.Text));
 if (FPEnd<=FPStart)or (Form1.SpinEdit1.Value>32768) or
                            (Form1.SpinEdit2.Value>32768)
 then FHost:=SOCKET_ERROR;
 if FHost=SOCKET_ERROR
 then
  begin
   if not Terminated
   then SThread:=nil;
   Form1.SpeedButton1.Caption:='Запуск';
   Exit;
  end;
 buf.S_addr:=FHost;
 Form1.Edit1.Text:=inet_ntoa(buf);
 Form1.ListBox1.Clear;
 FPort:=FPStart;
 for i:=0 to MAX_PORTS-1 do
  with FSocket[i] do
   begin
    TimeOut:=0;
    FData:=Socket(AF_INET, SOCK_STREAM, 0);
   end;
 //
 while not Terminated do
  begin
   InitSockets;
   if FPort>=FPEnd
   then break;
  end;
 //
 for i:=0 to MAX_PORTS-1 do
  CloseSocket(FSocket[i].FData);
 //
 if not Terminated
 then
  begin
   SThread:=nil;
   Form1.SpeedButton1.Caption:='Запуск';
  end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 if SThread=nil
 then
  begin
   SThread:=TMyThread.Create(false);
   SpeedButton1.Caption:='Стоп';
  end
 else
  begin
   SThread.Terminate;
   SThread.WaitFor;
   SThread:=nil;
   SpeedButton1.Caption:='Запуск';
  end;
end;

end.




процедура getservbyport отвечает за информацию по портам, а куда её прекрутить?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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