Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   IP Scanner (https://www.delphipraxis.net/60071-ip-scanner.html)

Luckie 3. Jan 2006 14:30

Re: IP Scanner
 
Also wenn ich mit meinem Portscanner die IP des Routers scanne, findert er offene Ports und Pingen geht auch wunderbar. Den Router scheint es also wirklich zu geben - nur bei diesem IPScanner wohl nicht. ;)

Neutral General 3. Jan 2006 14:46

Re: IP Scanner
 
Ja vielleicht ist dein Router auf dem Port auf dem ich ihn anpinge nicht erreichbar...
Ich pinge ja nicht auf jedem Port :mrgreen:

Luckie 3. Jan 2006 14:51

Re: IP Scanner
 
Wo puingst du denn? 21 und 80 waren eben offen.

ehoffman 3. Jan 2006 15:10

Re: IP Scanner
 
Zitat:

Zitat von Neutral General
Ja vielleicht ist dein Router auf dem Port auf dem ich ihn anpinge nicht erreichbar...
Ich pinge ja nicht auf jedem Port :mrgreen:

Stop! Bitte nichts durcheinander bringen. Man "pingt nicht auf einem Port". Auf einem Port kann man bestenfalls prüfen ob er offen, geschlossen oder gefiltert ist (wenn die Firewall das preisgibt). Ein Ping ist was völlig anderes, siehe: http://de.wikipedia.org/wiki/Ping_%2...Cbertragung%29

@FAlter:
Du hast zwei Netzwerke in einem LAN. Netzwerk 1) 192.168.0.0/255.255.255.0 (was du als LAN bezeichnest) und Netzwerk 2) 192.168.47.0/255.255.255.0. Damit sind das zwei getrennte Netzwerke, auch wenn sie an einem Kabel hängen. Sprich du hast in jedem Netzwerke genau 1 IP-Adresse (+ eventuell den Router wenn Internet in Netwerk 1).

Ein Ping (mit dem IP Scanner aber auch allgemein) sollte nicht funktionieren, da die Netzwerkkarten unterscheiden in welchem Netz sie sind und nur auf Broadcasts im eigenen Netz "antworten". Welches Netz es ist bestimmt die Netzmaske. Mehr dazu: http://de.wikipedia.org/wiki/IPv4

@faux:
Der IP Scanner probiert nur durch, d.h. 192.168.N.1 bis 192.168.N.255 - wobei ja 192.168 immer davon gesetzt wird. Es ist nicht gesagt, dass deine anderen Netwerkgeräte mit einer IP-Adresse sich in dem 192.168er Bereich befinden (private IP-Range Class C networks). Windows vergibt auch ganz gern mal aus dem Class B Netz 169.254.0.0/16 (= 169.254.1.1 bis 169.254.255.255, private IP-range Class B network) ... Ausserdem sind die VMware Sachen ja eh "nur" virtuelle Devices. Da wäre ich mir nicht sicher, ob auf dem NIC überhaupt per Broadcast (= Die Netwerkkarte "ruft": Hallo wer ist alles da?) erreichbar sind.

@Lucky:
Dann sollte auch das Programm deinen Router wohl finden können. Aber vielleicht pingt er ja gar nicht, sondern testet wirklich Ports auf open/closed. Man müsste halt mal sehen was der Code genau macht.

Viele Grüße,
Eike

Neutral General 3. Jan 2006 15:36

Re: IP Scanner
 
Also neue Version ist hochgeladen mit neuem Screenshot. Also es ist so ziemlich alles verbessert. Und es wird auf dem Port 80 gepingt. (Auch wenn das anscheinend die falsche Bezeichung für diese Handlung zu sein scheint :mrgreen:)

Änderungen:

:arrow: Port: 80
:arrow: Größe der Form veränderbar
:arrow: "Router" in "Unbekannt" umbenannt (zumindest solange, bis ich nicht Router von anderen Geräten unterscheiden kann :mrgreen:)
:arrow: Cancel-Button hinzugefügt mit dem man den Scan-Vorgang vorzeitig unterbrechen kann

Bugs:
:arrow: Wenn man nach dem ersten Scan das Timeout ändert und nochmal scannt, dann gehts nicht -.- ka warum...

@ FAlter und alle die mich mit dem gleichen Zeug nerven (sry): *entfernt* Siehe ehoffman.
@ ehoffman: thx das du es den anderen erklärt hast ;)

ManuMF 3. Jan 2006 16:42

Re: IP Scanner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

scho besser. :zwinker:
Nur sollte die Größenänderung während des Scans deaktiviert werden (siehe anhang).

Gruß,
ManuMF

Neutral General 3. Jan 2006 16:58

Re: IP Scanner
 
Ok. Unsizeable-beim-Scannen-Version ist im ersten Post hochgeladen :)

faux 3. Jan 2006 17:14

Re: IP Scanner
 
Zitat:

Zitat von ehoffman
@faux:
Der IP Scanner probiert nur durch, d.h. 192.168.N.1 bis 192.168.N.255 - wobei ja 192.168 immer davon gesetzt wird. Es ist nicht gesagt, dass deine anderen Netwerkgeräte mit einer IP-Adresse sich in dem 192.168er Bereich befinden (private IP-Range Class C networks). Windows vergibt auch ganz gern mal aus dem Class B Netz 169.254.0.0/16 (= 169.254.1.1 bis 169.254.255.255, private IP-range Class B network) ... Ausserdem sind die VMware Sachen ja eh "nur" virtuelle Devices. Da wäre ich mir nicht sicher, ob auf dem NIC überhaupt per Broadcast (= Die Netwerkkarte "ruft": Hallo wer ist alles da?) erreichbar sind.

Jaja, das ist mir alles klar. Neutral General hat es auch so erklärt, dass er nur die 192.168.0.0 - Netze scannt.
Mein Bluetooth-Adapter hat die IP 192.168.0.100. Klar dass der nicht gefunden wird. Der ist nichmal im Netzwerk.
Ich meine aber die VMware-Karten. Die sind per Netzwerk-Bidge ins Netzwerk eingebunden.
Mein Fehler. Sie wurden sogar gefunden, und zwar mit dem NetBIOS-Name "CLIENT1" etc.

Grüße
Faux

robinWie 4. Jan 2006 09:35

Re: IP Scanner
 
Zitat:

Windows vergibt auch ganz gern mal aus dem Class B Netz 169.254.0.0/16 (= 169.254.1.1 bis 169.254.255.255, private IP-range Class B network)
Dann müsste man das Programm am besten so umschreiben das es auch mehrer Netze abfragt. Dabei ist aber vorsicht geboten, weil wenn auch IPs im externen Netz (Internet) abgefragt werden ist die Sache Illeagal. Wegen Spionage und so.

faux 4. Jan 2006 09:44

Re: IP Scanner
 
Zitat:

Zitat von robinWie
ann müsste man das Programm am besten so umschreiben das es auch mehrer Netze abfragt.

Das habe ich auch schon vorgeschlagen, dass man eine IP-Range einstellen kann zB.

Zitat:

Zitat von Neutral General
Änderungen:

:arrow: Port: 80

Wie kann man denn auf einen bestimmten Port pingen? :gruebel:
Entweder Ping oder nicht Ping, aber auf einen Port Pingen...?!

Grüße
Faux

FriFra 4. Jan 2006 09:56

Re: IP Scanner
 
Zitat:

Zitat von faux
Wie kann man denn auf einen bestimmten Port pingen? :gruebel:
Entweder Ping oder nicht Ping, aber auf einen Port Pingen...?!

Pingen kann man nicht auf Port 80, aber ein TCP-connect ist schon möglich. Aber wozu soll das gut sein? Es gibt viele Clients mit und viele Clients ohne Webserver, daran kann man auch nicht erkennen, worum es sich handelt... wozu sollte das also gut sein? :roll:

ehoffman 4. Jan 2006 10:55

Re: IP Scanner
 
Zitat:

Zitat von FriFra
Pingen kann man nicht auf Port 80, aber ein TCP-connect ist schon möglich. Aber wozu soll das gut sein? Es gibt viele Clients mit und viele Clients ohne Webserver, daran kann man auch nicht erkennen, worum es sich handelt... wozu sollte das also gut sein? :roll:

Ok, hier wird der Begriff "Ping" halt anders verwendet - gemeint ist (und das macht das Programm) ein TCP connect auf Port 80. Im übrigen kann man damit ziemlich gut feststellen ob ein Rechner "existiert" oder nicht. So machen es die üblichen Portscanner (wie z.B. nmap) ja auch. Genutzt wird dazu der 3-Wege-Handshake von TCP.

Siehe: http://de.wikipedia.org/wiki/Transmi...Wege-Handshake

Dabei sende der Client der die Verbindung aufbauen will ein TCP-Paket mit gesetztem SYN-Bit und der Sequenznnummer N an den Server. Der Server antwortet dann mit einem TCP-Paket mit:
  • SYN-Bit und eigener initialer Sequenznummer Y und
  • gesetztem ACK-Bit + Sequenznummer des Clients plus 1 (N+1).
Der Client antwortet dann darauf mit einem ACK und Sequenznummer Y+1. Die Verbindung ist jetzt aufgebaut und das Scannprogramm "weiss" nun das es dort einen Rechner gibt und der Port geöffnet ist.

Ist der Port geschlossen sollte ein normaler TCP/IP-Stack mit einem TCP-Paket antworten in welchem das RST (Reset) Bit gesetzt ist. Der Scanner "weiss" dann, ok da ist ein Rechner aber der Port ist geschlossen. Antwortet der Server überhaupt nicht, dann gibt es zwei Möglichkeiten: Entweder da ist kein Rechner mit dieser IP-Adresse oder da ist ein Rechner mit Firewall, wobei die Firewall so konfiguriert ist das Verbindungswünsche auf eben diesem Port ohne Antwort gefiltert (Firewallregel DROP) werden (In diesem Fall gibt z.B. nmap dann "filtered" aus, wobei das eben auch "kein Rechner" bedeuten kann. Daher scannt man immer mehr als einen Port :-D )

Rechtlich gesehen ist übrigens bereits das Portscanning von fremden Rechnern strafbar und wird als "Angriff auf fremde Rechnersysteme" gewertet. Das ist im übrigen auch ganz gut so, da die meisten DDoS-Attacken oben genannten 3-Wege-Handshake zum lahmlegen der Server benutzen (Wenn nach dem Verbindungsaufbau die Verbindung nicht korrekt geschlossen, sondern einfach abgebrochen wird, dann wartet der Server auf eigehende Datenpakete bis ein meist recht langes Timeout abläuft. Machen das viele Clients sehr oft, dann wartet der Server nur noch und kann seinen eigentlichen Diensten nicht mehr nachkommen).

So nun aber genug "kluggeschi****".

Viele Grüße,
Eike

pacman1986 19. Jan 2006 14:52

Re: IP Scanner
 
was muss ich binden wenn ich den ping befehl benutzen will? oder hast du das selbst geproggt ?

Neutral General 19. Jan 2006 15:02

Re: IP Scanner
 
von den Indys den TIDIcmpClient.

pacman1986 19. Jan 2006 15:27

Re: IP Scanner
 
tx

CPP-Programmer 22. Jan 2006 12:10

Re: IP Scanner
 
Source text wäre nicht schlecht! :-D :P

(zum weiterbasteln)

robinWie 22. Jan 2006 12:17

Re: IP Scanner
 
Zitat:

Source text wäre nicht schlecht!
Ich benutze diese Unit. Die habe ich mal hier aus der DP runtergeladen und mit GetHost_Name ausgebaut.
Vielleicht kanss du die ja brauchen. :wink:

Delphi-Quellcode:
unit NetworkFunctions;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, WinInet, WinSock;

type
  PNetResourceArray = ^TNetResourceArray;
  TNetResourceArray = array[0..100] of TNetResource;

type
  IPAddr = DWORD;

  PICMP_ECHO_REPLY = ^ICMP_ECHO_REPLY;
  ICMP_ECHO_REPLY = packed record
    Address      : ULONG;
    Status       : ULONG;
    RoundTripTime : ULONG;
    DataSize     : WORD;
    Reserved     : WORD;
    Data         : Pointer;
  end;

  PIP_OPTION_INFORMATION = ^IP_OPTION_INFORMATION;
  IP_OPTION_INFORMATION = packed record
    Ttl        : byte;
    Tos        : byte;
    Flags      : byte;
    OptionsSize : byte;
    OptionsData : Pointer;
  end;

procedure GetComputerList(List: TStrings);
function InternetAvailable:Boolean;                                // Only DFÜ / RAS
function Ping(IP:string; TimeOut:Cardinal) : Boolean;                // TimeOut ~1000
function GetNetworkName(IPAddr: string): string;
function GetIp(const HostName: string): string;
function GetHost_Name(IPAddr: string): string;

implementation

function IcmpCreateFile : DWORD; stdcall; external 'icmp.dll';
function IcmpCloseHandle(const IcmpHandle : DWORD) : longbool; stdcall; external 'icmp.dll';
function IcmpSendEcho(const IcmpHandle : DWORD;const DestinationAddress : IPAddr;const RequestData : Pointer;const RequestSize : WORD;const RequestOptions : PIP_OPTION_INFORMATION;const ReplyBuffer : Pointer;const ReplySize : DWORD;const TimeOut : DWORD) : DWORD; stdcall; external 'icmp.dll'

function GetNetworkName(IPAddr: string): string;
  var SockAddrIn: TSockAddrIn;
      HostEnt: PHostEnt;
      WSAData: TWSAData;
begin
  WSAStartup($101, WSAData);
  SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
  HostEnt:= GetHostByAddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    Result := StrPas(Hostent^.h_name)
  else
    Result := '';
end;

function GetIp(const HostName: string): string;
  type
    TaPInAddr = array[0..10] of PInAddr;
    PaPInAddr = ^TaPInAddr;
  var
    phe: PHostEnt;
    pptr: PaPInAddr;
    i: Integer;
    GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := '';
  phe := GetHostByName(PChar(HostName));
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  i := 0;
  while pPtr^[i] <> nil do begin
    Result := inet_ntoa(pptr^[i]^);
    Inc(i);
  end;
  WSACleanup;

end;

function Ping(IP:string; TimeOut:Cardinal):Boolean;
  var hICMP                          : DWORD;
      pierWork                       : PICMP_ECHO_REPLY;
      dwSize                         : DWORD;
      Class1,Class2,Class3,Class4     : String;
      i,j                            : Byte;
begin
  Result:=False;
  j:=1;
  for i:=1 to Length(IP) do begin
    if IP[i]<>'.' then begin
      case j of
        1: Class1:=Class1+IP[i];
        2: Class2:=Class2+IP[i];
        3: Class3:=Class3+IP[i];
        4: Class4:=Class4+IP[i];
      end;
    end else
      Inc(j);
  end;
  hICMP := IcmpCreateFile;
  if hICMP = INVALID_HANDLE_VALUE then exit;
  try
    dwSize  := SizeOf(ICMP_ECHO_REPLY)+8;
    pierWork := AllocMem(dwSize);
    try
      if IcmpSendEcho(hICMP,MAKELONG(MAKEWORD(StrToInt(Class1), StrToInt(Class2)),MAKEWORD(StrToInt(Class3), StrToInt(Class4))),nil,0,nil,pierWork,dwSize,TimeOut) = 0 then
        Result:=False
      else
        Result:=True;
    finally
      FreeMem(pierWork,dwSize);
    end;
  finally
    IcmpCloseHandle(hIcmp);
  end;
end;

  // Nur für DFÜ / RAS
function InternetAvailable:Boolean;
begin
  Result := InternetCheckConnection(nil, 0, 0);
end;

function CreateNetResourceList(ResourceType: DWord;
                              NetResource: PNetResource;
                              out Entries: DWord;
                              out List: PNetResourceArray): Boolean;
var
  EnumHandle: THandle;
  BufSize: DWord;
  Res: DWord;
begin
  Result := False;
  List := Nil;
  Entries := 0;
  if WNetOpenEnum(RESOURCE_GLOBALNET,ResourceType,0,NetResource,EnumHandle) = NO_ERROR then begin
    try
      BufSize := $4000; // 16 kByte
      GetMem(List, BufSize);
      try
        repeat
          Entries := DWord(-1);
          FillChar(List^, BufSize, 0);
          Res := WNetEnumResource(EnumHandle, Entries, List, BufSize);
          if Res = ERROR_MORE_DATA then begin
            ReAllocMem(List, BufSize);
          end;
        until Res <> ERROR_MORE_DATA;

        Result := Res = NO_ERROR;
        if not Result then begin
          FreeMem(List);
          List := Nil;
          Entries := 0;
        end;
      except
        FreeMem(List);
        raise;
      end;
    finally
      WNetCloseEnum(EnumHandle);
    end;
  end;
end;

procedure GetComputerList(List: TStrings);
  procedure ScanLevel(ResourceType, DisplayType: DWord; NetResource: PNetResource);
  var
    Entries: DWord;
    NetResourceList: PNetResourceArray;
    i: Integer;
  begin
    if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then try
      for i := 0 to Integer(Entries) - 1 do begin
        if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or
          (NetResourceList[i].dwDisplayType = DisplayType) then begin
          List.AddObject(NetResourceList[i].lpRemoteName,
                        Pointer(NetResourceList[i].dwDisplayType));
        end;
        if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
          ScanLevel(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER,@NetResourceList[i]);
      end;
    finally
      FreeMem(NetResourceList);
    end;
  end;
begin
  ScanLevel(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, Nil);
end;

function LocalIP: string;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of Char;
  I: Integer;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := '';
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  I := 0;
  while pPtr^[I] <> nil do
  begin
    Result := inet_ntoa(pptr^[I]^);
    Inc(I);
  end;
  WSACleanup;
end;

function GetHost_Name(IPAddr: string): string;
var
  SockAddrIn: TSockAddrIn;
  HostEnt: PHostEnt;
  WSAData: TWSAData;
begin
  WSAStartup($101, WSAData);
  SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
  HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    Result := StrPas(Hostent^.h_name)
  else
    Result := 'Unbekannt';
end;

end.

CPP-Programmer 22. Jan 2006 19:12

Re: IP Scanner
 
Da sag ich mal ein big thx!

Chrissi91 22. Jan 2006 19:54

Re: IP Scanner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi :hi:,

gar nicht mal so schlecht, jetzt wunder ich mich aber ein bisschen. :gruebel:

Fritzbox <-- Mein Vater, wo die eigentliche Internetverbindung ist.
Chrissi <-- Das bin ich. Mit W-Lan verbunden.
Unbekannt <-- :gruebel:

Ist Unbekannt vielleicht der PC meines Vaters und Fritzbox nur die Internetverbindung?

P.S.: Super Programm. Wäre als Open-Source sicher nicht schlecht. :zwinker:

ringli 22. Jan 2006 20:25

Re: IP Scanner
 
Ich bekomme mit dem Scanner gar nichts angezeigt wenn ich als normaler Benutzer angemeldet bin. Als Admin funktioniert es. Ist aber ein typischer Fehler wenn die Indy's benutzt werden... :wink:

Cyberbob 22. Jan 2006 20:59

Re: IP Scanner
 
Zitat:

Zitat von Chrissi91
Ist Unbekannt vielleicht der PC meines Vaters und Fritzbox nur die Internetverbindung?

Ja der DSL-Router hat eine eigene IP, die ist unabhängig von den Computern.

Chrissi91 23. Jan 2006 05:29

Re: IP Scanner
 
Gut zu wissen. ^^

Sonst hätte ich einen Grund, warum die letzte Internetrechnung so teuer war. :lol:

3_of_8 23. Jan 2006 13:04

Re: IP Scanner
 
LOL, du hast doch nen Volumenvertrag. Da ist das sch..., äh, ziemlich egal.

Sharky 23. Jan 2006 17:49

Re: IP Scanner
 
Hai Crissi91 und 3_of_8,

ich bitte euch nachdrücklich darum alle Postings zu lassen die nichts aber auch garnichts mit einem Thread zu tun haben und in denen ihr nur "private" Kommentare abegeben wollt.

Nehmt euch dies bitte zu Herzen. :warn:

pacman1986 31. Jan 2006 19:06

Re: IP Scanner
 
hätte da noch ein vroschlag zu machen :
könntest duch ein doppelklick auf die ip die Freigaben des Pcs anzeigen, wäre ein cooles gimick für lans

Chrissi91 31. Jan 2006 19:15

Re: IP Scanner
 
Zitat:

Zitat von Sharky
Hai Crissi91 und 3_of_8,

ich bitte euch nachdrücklich darum alle Postings zu lassen die nichts aber auch garnichts mit einem Thread zu tun haben und in denen ihr nur "private" Kommentare abegeben wollt.

Nehmt euch dies bitte zu Herzen. :warn:

Meines hatte ein wenig zu damit zu tun, aber ich werde es berücksichtigen.

Aber mal eine andere Frage zu meiner ersten, nicht ganz ernstgemeinten Vermutung.

Wenn jemand zufällig an das Passwort für unsere WLAN - Verbindung gekommen ist, und er über unsere Leitung im Internet ist, würde er dann im IP Scanner angezeigt werden bzw. könnte er das verhindern?

3_of_8 31. Jan 2006 19:16

Re: IP Scanner
 
Ich würde sagen, ja.

glkgereon 31. Jan 2006 19:56

Re: IP Scanner
 
Also ich habes mal ausprobiert, (beide Anhänge) und es tut rein gar nichts.

Also die Listung müsste theoretisch so aussehen:

192.168.2.136 - PC - Win2k
192.168.2.155 - PC - Win2k
192.168.2.187 - PC - Win2k (Meins)
192.168.2.1 - Router - SMC

er scannt offensichtlich (Progressbar...), aber es kommt nix...

Dust Signs 1. Feb 2006 13:23

Re: IP Scanner
 
Bei mir scannt er auch und es kommt nichts. Mich würde interessieren, was er scannt... ich habe nämlich auf meinem ASUS-Board zwei Netzwerkanschlüsse und beide sind verbunden...

Dust Signs

glkgereon 1. Feb 2006 13:25

Re: IP Scanner
 
Zitat:

Zitat von Dust Signs
Bei mir scannt er auch und es kommt nichts. Mich würde interessieren, was er scannt... ich habe nämlich auf meinem ASUS-Board zwei Netzwerkanschlüsse und beide sind verbunden...

Dust Signs

das könnte auch noch sein...das er ne andere Karte scannt

ich habe allinall drei karten drin...
eine hat verbindung zu oben genannten ips
eine ist deaktiviert
eine ist virtuell und via VPN verbunden, allerdings müsste da dann auch was kommen^^

zeig doch einfach mal irgendwo an, welchen bereich du scannst ;)

retnyg 1. Feb 2006 13:29

Re: IP Scanner
 
Zitat:

Zitat von Luckie
Code:
Betriebssystem   : Microsoft Windows XP Professional Service Pack 2 (Build 2600)
Computername   : HAL9000
Benutzer      : Michael
Mitglied von   : Benutzer

Arbeitsgruppe   : MSHOME
MAC Adresse   : 0-30-F1-9E-8F-DD
Adapter      : T-Sinus 111data - Paketplaner-Miniport (DNS: 192.168.2.1)
InternetIP   : **.**.**.**
lokale IPs   : 192.168.2.102

danke für deine ip-adresse *portscanner start* ~.^

[edit=alcaeus]IP-Adresse rauseditiert ;) Mfg, alcaeus[/edit]

alcaeus 1. Feb 2006 13:33

Re: IP Scanner
 
Auch wenn sein Beitrag schon etwas aelter ist, hab ich die IP-Adresse mal rauseditiert ;)

Greetz
alcaeus

Dust Signs 1. Feb 2006 13:33

Re: IP Scanner
 
Ich glaube nicht, dass dein Scanner überhaupt den richtigen Bereich scannt - mein Rechner ist nämlich einmal in einem Klasse B-Netzwerk (Anschluss 1) und einmal per Ethernet mit einer Punkt-zu-Punkt-Verbindung (Anschluss 2) konfiguriert; letzterer hat auch eine entsprechende Subnetzmaske.

Dust Signs

Neutral General 1. Feb 2006 13:36

Re: IP Scanner
 
Hi,

Also da seht ihr was passiert.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
 Form1.BorderStyle := bsSingle;// Damit man nicht während dem Scanvorgang rumschieben kann
ListBox1.Clear;
Progressbar1.Position := 0;
Button2.Enabled := true;
Button1.Caption := 'Working...';
Button1.Enabled := false;
Netz := GetNetz;
for i:= 1 to 255 do begin
 try
  if Beenden then Exit; // wenn man auf das X klick um zu beenden dann wird Beende = true gesetzt
  Ping.Host := '192.168.' + IntToStr(Netz) + '.' + IntToStr(i);
  Ping.Ping();
 except
 
 end;
end;
// Wieder alles setzen wie es vorher war
Button1.Enabled := true;
Button2.Enabled := false;
Form1.BorderStyle := bsSizeable;
Button1.Caption := 'Scan IPs';
end;
Wobei ich gestehen muss das ich folgendes aus der DP "geklaut" und etwas
umgeschrieben hab:

Delphi-Quellcode:
function GetNetz: Byte;
var
  rSockVer  : Word;
  aWSAData  : TWSAData;
  szHostName : array[0..255] of Char;
  pHE       : PHostEnt;
begin
  Result:= 0;
  rSockVer:=MakeWord(1, 1);
  WSAStartup(rSockVer, aWSAData );
  try
    FillChar(szHostName, SizeOf(szHostName), #0);
    GetHostName(szHostName, SizeOf(szHostName));
    pHE:=GetHostByName(szHostName);
    if (pHE<>nil) then with pHE^ do begin
      Result := Byte(h_addr^[2]);
     end;
  finally
    WSACleanup;
  end;
end;

Ich denke das sollte die meisten Fragen beantworten. (Ich hoffs^^)

Gruß
Michael

Dust Signs 1. Feb 2006 13:43

Re: IP Scanner
 
46 Zeilen Quellcode, davon 21 kopiert... soll ich jetzt applaudieren? Sowas bastel ich dir auch in 10 Minuten zusammen :roll: . Mach doch was draus: ping richtig mit der korrekten Subnetzmaske und auf einer wählbaren Netzwerkkarte. Schau dir mal gängige Tools dazu an...

Dust Signs

Neutral General 1. Feb 2006 13:48

Re: IP Scanner
 
Zitat:

Zitat von Dust Signs
46 Zeilen Quellcode, davon 21 kopiert... soll ich jetzt applaudieren? Sowas bastel ich dir auch in 10 Minuten zusammen :roll: . Mach doch was draus: ping richtig mit der korrekten Subnetzmaske und auf einer wählbaren Netzwerkkarte. Schau dir mal gängige Tools dazu an...

Dust Signs

Ich hab nie nie gesagt das ich da länger als 10 min gebraucht hab oder das ich sonderlich stolz dadrauf bin.. Ich hab das Ding allein für mich selbst gebaut weil ichs brauchte. Es war eigentlich nicht gedacht zur Veröffentlichung. Dafür ist das viel zu sehr auf meine eigenen Bedürfnisse zugeschnitten. Ich habs mal hier rein gestellt weil ICH es sehr nützlich finde und es euch mal zeigen wollte bzw nicht vorenthalten wollte.

Und der kopierte Quellcode ist nur aus dem Grund dazu gekommen weil ihr ihn gefordert habt. Ich hätte es nicht gebraucht weil ich weiß welche Nr bei uns zu Hause im Netzwerk steht und ich eigentlich dann nur 192.168.2.1-255 prüfen müsste.

Gruß
Michael

KuH_am_SchuH 4. Feb 2006 16:15

Re: IP Scanner
 
wär es möglich dass du die source zum downloaden reinsetzt???

Chrissi91 4. Feb 2006 17:08

Re: IP Scanner
 
Zitat:

Zitat von Neutral General
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
 Form1.BorderStyle := bsSingle;// Damit man nicht während dem Scanvorgang rumschieben kann
ListBox1.Clear;
Progressbar1.Position := 0;
Button2.Enabled := true;
Button1.Caption := 'Working...';
Button1.Enabled := false;
Netz := GetNetz;
for i:= 1 to 255 do begin
 try
  if Beenden then Exit; // wenn man auf das X klick um zu beenden dann wird Beende = true gesetzt
  Ping.Host := '192.168.' + IntToStr(Netz) + '.' + IntToStr(i);
  Ping.Ping();
 except
 
 end;
end;
// Wieder alles setzen wie es vorher war
Button1.Enabled := true;
Button2.Enabled := false;
Form1.BorderStyle := bsSizeable;
Button1.Caption := 'Scan IPs';
end;
Wobei ich gestehen muss das ich folgendes aus der DP "geklaut" und etwas
umgeschrieben hab:

Delphi-Quellcode:
function GetNetz: Byte;
var
  rSockVer  : Word;
  aWSAData  : TWSAData;
  szHostName : array[0..255] of Char;
  pHE       : PHostEnt;
begin
  Result:= 0;
  rSockVer:=MakeWord(1, 1);
  WSAStartup(rSockVer, aWSAData );
  try
    FillChar(szHostName, SizeOf(szHostName), #0);
    GetHostName(szHostName, SizeOf(szHostName));
    pHE:=GetHostByName(szHostName);
    if (pHE<>nil) then with pHE^ do begin
      Result := Byte(h_addr^[2]);
     end;
  finally
    WSACleanup;
  end;
end;

Das hat er doch schon.

ipworks 8. Mär 2006 14:41

Re: IP Scanner
 
Wie ich sehe, besteht bei einigen hier Bedarf an Ping-Funktionen.
Also wenn Interesse besteht, könnte ich ja eine Unit posten, die Pings per Thread zulässt.
Das heisst man kan ein Subnetz über Threads pingen, was wesentlich schneller geht als sich von 0 bis 254 durchzupingen und entweder auf das Timeout zu warten oder auf die Antwort.
Zum Testen könnte ihr ja mal das Tool hier Download IPworksnetscanherunterladen:

PierreB 8. Mär 2006 14:42

Re: IP Scanner
 
Joa, dann poste mal bitte deine Unit. :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz