Prosty skaner portów
0wn3r25
Podobny artykuł do tego możecie znaleźć na stronie : www.hackme.pl.
Krótki opis programu :
Program będzie w średniej prędkości skanował wskazane przez was porty (Wyznaczone np. pierwszy port to 30, a ostatni 60).
No to piszemy :
Co będzie nam potrzebne, aby napisać ten skaner?
Środowisko programistyczne (kompilator) Delphi 7 Personal Edition.
oraz komponenty do niego : (ClientSocket & ServerSocket).
Instalacja komponentów (ClientSocket & ServerSocket) :
- Wypakowywujemy dclsockets70.bpl do folderu Lib (Ścieżka domyślna : C:\Program Files\Borland\Delphi7\Lib).
- Po wypakowaniu dclsockets70.bpl należy otworzyć Delphi i z górnego menu wybrać "Components" i tam "Install Packages.." i klikamy na przycisk Add.. i idziemy do folderu Lib i tam klikamy 2 razy na dclsockets70.bpl i dajemy OK.
- Jeżeli zrobiliście wszystko prawidłowo to powinna wam się pojawić zakładka w komponentach pt. "Internet".
No to do roboty :
- Wrzucamy na formę komponent ClientSocket z zakładki Internet. (Zmieniamy nazwę na ps)
- Wrzucamy na formę 4x Edit z zakładki Standard. (W Edit2 dajemy text: 1, a w Edit3 dajemy: 6553).
- Wrzucamy na formę 3x Buttony z zakładki Standard. (Caption: Skanuj, Stop-Skan, Wyczyść).
- Wrzucamy na formę 1x ListBox również z zakładki Standard.
- Wrzucamy na formę 3x Label także z zakładki Standard. (Caption: Adres IP, Port startowy, Port końcowy).
Ustawiamy wszystko według własnego uznania, u mnie mniej więcej to tak wygląda :
http://img296.imageshack.us/img296/240/screen1337oo0.jpg
Czas na kod!!! :
Pomiędzy kodem a formą możemy się przełączać naciskając przycisk F12.
---Klikamy 2x na przycisk Skanuj i wklepujemy kod :
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
Edit1.Enabled := False;
Edit2.Enabled := False;
Edit3.Enabled := False;
Edit4.Enabled := False;
Button2.Enabled := True;
PortNo := StrToInt(Edit2.Text);
Ps.Address := Edit1.Text;
Ps.Port := PortNo;
Ps.Active := True;
end;
---Klikamy 2x na przycisk Stop-Skan i wklepujemy :
procedure TForm1.Button2Click(Sender: TObject);
begin
Portno := StrToInt(Edit3.Text);
Button1.Enabled := True;
Edit1.Enabled := True;
Edit2.Enabled := True;
Edit3.Enabled := True;
Edit4.Enabled := True;
Button2.Enabled := False;
end;
---Klikamy 2x na przycisk Wyczysc i wklepujemy kod :
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit4.Text := '';
Listbox1.Items.Clear;
end;
---W objects inspector w komponencie ps wchodzimy w zakładke Events i klikamy 2 razy w puste miejsce OnError i powinno przenieść nas do kodu źródłowego i tam wklepujemy :
procedure TForm1.psError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
Errorcode := 0;
Edit4.Text := 'Porty Zamknięte: ' + InTtoStr(PortNo);
Ps.Active := False;
Inc(PortNo);
if PortNo <= StrToInt(Edit3.Text) then
begin
Ps.Address := Edit1.text;
Ps.Port := PortMo;
Ps.Active := True;
end;
end;
---Teraz w zakładce Events komponentu ps klikamy 2 razy na puste miejsce koło OnConnect i wklepujemy taki kod :
procedure TForm1.psConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
ListBox1.Items.Add('Porty Otwarte: ' + IntToStr(PortNo));
Ps.active := False;
Inc(PortNo);
if PortNo <= StrToInt(Edit3.Text) then
begin
Ps.Address := Edit1.Text;
Ps.Port := PortNo;
Ps.Active := True;
end;
end;
---Teraz klikamy na Formę i w zakładce Events szukamy OnClose, klikamy 2 razy i wklepujemy kod :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Ps.Active := False;
end;
---Jeszcze dodajemy pod var taki kod :
var
Form1: TForm1;
PortNo : Integer;
Gdy już napisaliśmy wszystko jak należy tworzymy jakiś folder na pulpicie, nazywamy go przykładowo Skaner portów
, zapisujemy tam wszystkie pliki i dajemy z górnego menu w Delphi Project > Compile i gotowe!
Program możecie ustrajać jak wam się podoba wystarczy tylko z zakładki Additional wziąć Image i tam w Object Inspectorze w zakładce Properties macie Picture i sobie wybieracie i wsadzacie jakiś obrazek.
Mam nadzieje że ulepszycie ten kod źródłowy.
Kod możecie modyfikować jak chcecie i dodawać nowe funkcje, ale żeby to zrobić potrzeba zdobyć wiedzę, dlatego podaje parę stronek :
http://www.4programmers.net
http://www.binboy.sphere.pl/
http://www.ofkurs.kgb.pl/
http://www.haxite.org/
http://www.hackme.pl/news.html
No i to by było chyba na tyle :)
Może popraw z.
na:
@muciu
konstrukcja "goto" nie jest nigdzie uzasadniona i do tego co napisałeś służy break; ;)
@muciu
A dla mnie jeszcze ładniej wygląda:
[code]
if portno <= strtoint(edit3.text) then
begin
ps.address := edit1.text;
ps.port := portno;
ps.active := true;
end;
[/code]
Ładnie i przejżyście :P :)
Nie wstawiaj spacji przed dwukropkiem. Może w Delphi to ułatwia, ale w Języku polskim jest to błąd. Poza tym da się w Delphi wpisać wszystkie znaki diakrytyczne. Na przykład wchodzisz do notatnika piszesz ten znak, kopiujesz go i wklejasz do Delphi, więc jeśli chodzi o wiedzę to się nie wysuwaj bo ortograficznej to ty na pewno nie masz.
A ten klucz do Delphi to tak można sobie publikować gdzie się chce?
zamiast konstrukcji typu:
Ładniej wygląda:
Kod jest bardziej czytelny, pozatym używanie goto jest uzasadnione tylko przy wychodzeniu z zagnierzdzonych pętli.