AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UPNP / Portscan

Offene Frage von "timi"
Ein Thema von c.kauer · begonnen am 20. Aug 2006 · letzter Beitrag vom 16. Jul 2009
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#21

Re: UPNP / Portscan

  Alt 24. Aug 2006, 13:04
Naja das liegt wohl daran das nicht auf jedem Router alles vom Standart implementiert ist.
  Mit Zitat antworten Zitat
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: UPNP / Portscan

  Alt 25. Aug 2006, 00:12
Zum Thema Devices suchen:
Zitat von ACE-ppc:
zu 1. kann man so machen .. ich persönlich benutze UPnPMonitor.CreateAsyncFind mit einem CallBack
Das funktioniert bitte wie? Der Upnpdevicefinder braucht mir mittlerweile zu lange...
Robert
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#23

Re: UPNP / Portscan

  Alt 29. Aug 2006, 23:59
Zitat von MrPayne:
Das funktioniert bitte wie? Der Upnpdevicefinder braucht mir mittlerweile zu lange...
Nach was suchst du denn ... RootDevice oder InternetGatewayDevice ??

Und CreateAsyncFind gehört zum TUPnPDeviceFinder !!

Das Callback Interface sieht dann so aus, und muss selst noch deklariert werden.
Delphi-Quellcode:
type
  IUPnPDeviceFinderCallback = interface(IUnknown)['{415A984A-88B3-49F3-92AF-0508BEDF0D6C}']
    procedure DeviceAdded(iFindData: Integer; UPnPDevice: UPnPDevice); stdcall;
    procedure DeviceRemoved(iFindData: Integer; wsUDN: WideString); stdcall;
    procedure SearchComplete(iFindData: Integer); stdcall;
  end;
  Mit Zitat antworten Zitat
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: UPNP / Portscan

  Alt 30. Aug 2006, 17:49
Ich such nur nach Routern also InternetGatewayDevice. Thanks erstmal, werd nu versuchen ob ich das so hinkrieg
Robert
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#25

Re: UPNP / Portscan

  Alt 31. Aug 2006, 23:00
Zitat von MrPayne:
Ich such nur nach Routern also InternetGatewayDevice. Thanks erstmal, werd nu versuchen ob ich das so hinkrieg
Versuche doch mal nach root device zu suchen und dann die dienste und untergeräte zu enumerieren .. evtl. bringt das mehr speed.
  Mit Zitat antworten Zitat
timi

Registriert seit: 6. Jul 2008
2 Beiträge
 
#26

Re: UPNP / Portscan

  Alt 7. Jul 2008, 15:18
servus,

so ich habe es auch geschafft, meinen router zu finden und aufzulisten.
was nun aber noch nicht klappt, sind die prozeduren addportclick und getportlist. upnp ist definitiv aktiviert.

anhand eurer beispiele habe ich mir folgende funktion checkrouter() gebastelt:

Delphi-Quellcode:
function checkrouter(): string;
  var
  rhost,ehost, eport, protocol, iport, iclent, enable, pdes, leasd: olevariant;
  UPnPDeviceFinder : IUPnPDeviceFinder;
  UPnpDevices : IUPnpDevices;
  EnumVariant, EnumVariant2 : IEnumVariant;
  rgvar, rgvar2 : OleVariant;
  celtFetched, celtFetched2 : Cardinal;
  UPnpDevice : IUPnpDevice;
  Counter, Counter2 : Integer;
  Erg : HResult;
  UPnpService : IUPnpService;

begin
      message('Einen Moment bitte. Suche nach Router im Netzwerk läuft...');
      Counter := 0;
      UPnPDeviceFinder := CoUPnPDeviceFinder.Create;
      UPnpDevices := UPnPDeviceFinder.FindByType('urn:schemas-upnp-org:service:WANIPConnection:1', 0);
      message(IntToStr(UPnpDevices.Count) + ' UPnP Geräte gefunden!');
      try
        EnumVariant := IEnumVariant(UPnpDevices._NewEnum);
        while (EnumVariant.Next(1, rgvar, celtFetched) = S_OK) do
          begin
            UPnpDevice := IUPnpDevice(IUnknown(rgvar));
            Inc(Counter);
            irc('Device ' + IntToStr(Counter)+ ': ' + UPnpDevice.FriendlyName + ': ' + UPnpDevice.PresentationURL);
            irc(UPnpDevice.UniqueDeviceName);
      // UPnpDevice.Services.Item[].
            EnumVariant2 := IEnumVariant(UPnpDevice.Services._NewEnum);
            Erg := EnumVariant2.Next(1, rgvar2, celtFetched2);
            Counter2 := 0;
            GetPortlist(IUPnPService(IDispatch(rgvar)), form1.ListBox1); // Hier möchte ich die Liste der Ports anzeigen
            AddPortclick(IUPnPService(IDispatch(rgvar))); // Hier möchte ich den Port 1000 freigaben;
            
           // message('Listing und Portfreigabe erfolgreich');
   
            while (Erg = S_OK) do
             begin
               message('erg ist noch S_OK');
               UPnpService := IUPnPService(IDispatch(rgvar2));
               inc(counter2);
               message('Service: ' + IntToStr(Counter2));
               message('ServiceID: ' + UPnpService.Id);
               Erg := EnumVariant2.Next(1, rgvar2, celtFetched2);
            end;
            end;
        except
           message('Fehler');
    end;
end;
mein problem ist: [b]ich bin mir nicht ganz sicher, was ich bei dem prozeduraufruf statt "WANIPconn:Upnpservice" eintrage?[b]

wenn ich es mit..
 AddPortclick(IUPnPService(IDispatch(rgvar))); ..versuche, listet er mir nur den router auf aber es kommt keine meldung, ob das portmapping erfolgreich war oder nicht.
wenn ich statt "regvar" die variable "regvar2" nehme, gibt er mir aus: not assigned.

bei der prozedur getportlist kommt dann die fehlermeldung:

---------------------------
Debugger Exception Notification
---------------------------
Project upnp.exe raised exception class EAccessViolation with message 'Access violation at address 7095E2EF in module 'upnp.dll'. Write of address 0048C914'. Process stopped. Use Step or Run to continue.

ich habe auch schon versucht die prozedur erst in der while-schleife

while (Erg = S_OK) do aufzurufen, doch anhand einer test-message habe ich gemerkt, dass es gar nicht erst zu dem aufruf kommt.

so sorry für das durcheinander, vielleicht kann man es auch einfacher erklären als ich hier meine frage gestellt habe?!

habt vielen dank für eure bemühungen,

viele grüße
tim
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#27

Re: UPNP / Portscan

  Alt 9. Jul 2008, 09:50
Hallo,

du hast ja in deinem Code das Upnp Gerät schon gefunden.

Jetzt fehlt dir noch der Aufbau der Innereien des Gerätes, gehe mal nach folgender Reihenfolge vor:

1. UPNP Gerät finden
2. WANConnectionDevice finden (falls du nicht direkt danach gesucht hast)
3. Services des WANConnectionDevice durchlaufen und WANIPConnection finden
4. jetzt kannst du mit der WANIPConnection weiterarbeiten um z.B. Portmappings auszulesen

Du solltest dir noch das Service Template des WANIPConnection anschauen (s.Anhang).
Zur Veranschaulichung hänge ich noch ein kleines Bild mit an.

Gruß Thomas
Miniaturansicht angehängter Grafiken
upnp_115.jpg  
Angehängte Dateien
Dateityp: pdf upnp_igd_wanipconnection_1.0_143.pdf (341,8 KB, 52x aufgerufen)
  Mit Zitat antworten Zitat
timi

Registriert seit: 6. Jul 2008
2 Beiträge
 
#28

Re: UPNP / Portscan

  Alt 9. Jul 2008, 11:02
hi tkc,

vielen dank für deine antwort! ich denke mir würde ein beispiel code am besten helfen, denn bei den folgenden punkten fehlt mir das wissen, wo und wie ich anfangen soll:

2. WANConnectionDevice finden (falls du nicht direkt danach gesucht hast)
3. Services des WANConnectionDevice durchlaufen und WANIPConnection finden

ich lerne das immer am besten, wenn ich einen vorhanden beispielcode code habe und ihn nach und nach durchgehe, abändere und dann merke, was passiert.

wäre es evtl möglich, wenn du mir den sourcecode von deinem kleinen testprogramm schicken könntest?

ich wäre dir sehr dankbar!

viele grüße
tim
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#29

Re: UPNP / Portscan

  Alt 9. Jul 2008, 12:35
Hi,
kann ich leider nicht machen, da ich eine eigene Komponente dafür benutze und diese noch weit von einem Release weg ist .

Du kannst mir aber dein Projekt schicken, dann schaue ich mal danach.

mfg
Thomas
  Mit Zitat antworten Zitat
Xen

Registriert seit: 8. Aug 2008
9 Beiträge
 
#30

Re: UPNP / Portscan

  Alt 12. Jul 2009, 23:08
Nennt mich Thread-Leichenschänder, aber was zur Hölle hat
der Threadstarter da am Anfang gemacht?

Wurde da eine ganze Klasse aus der DLL exportiert oder jede Funktion einzeln?
Komischerweise finde ich auch keine der genannten Funktionen wenn ich mir die DLL via TDump anschaue.

Wie man DLLs importiert (zumindest einzelne Funktionen) hab ich ja verstanden. Wieso dem Threadstarter aber Datentypen & Co zur verfügung stehen ist mir aber ein Rätzel.

Wäre nett wenn mich Jemand aufklären könnte was der Threadstarter bei
Zitat:
UPNP Dll in Delphi importiert. Mit den dann zur Verfügung stehenden Interfaces[...]
genau gemacht hat.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz