Re: UPNP / Portscan
Naja das liegt wohl daran das nicht auf jedem Router alles vom Standart implementiert ist.
|
Re: UPNP / Portscan
Zum Thema Devices suchen:
Zitat:
|
Re: UPNP / Portscan
Zitat:
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; |
Re: UPNP / Portscan
Ich such nur nach Routern also InternetGatewayDevice. Thanks erstmal, werd nu versuchen ob ich das so hinkrieg :wink:
|
Re: UPNP / Portscan
Zitat:
|
Re: UPNP / Portscan
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:
mein problem ist: [b]ich bin mir nicht ganz sicher, was ich bei dem prozeduraufruf statt "WANIPconn:Upnpservice" eintrage?[b]
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; wenn ich es mit..
Delphi-Quellcode:
..versuche, listet er mir nur den router auf aber es kommt keine meldung, ob das portmapping erfolgreich war oder nicht.
AddPortclick(IUPnPService(IDispatch(rgvar)));
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
Delphi-Quellcode:
aufzurufen, doch anhand einer test-message habe ich gemerkt, dass es gar nicht erst zu dem aufruf kommt.
while (Erg = S_OK) do
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 |
Re: UPNP / Portscan
Liste der Anhänge anzeigen (Anzahl: 2)
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 |
Re: UPNP / Portscan
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 |
Re: UPNP / Portscan
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 |
Re: UPNP / Portscan
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:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 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