Re: UPNP / Portscan
Liste der Anhänge anzeigen (Anzahl: 1)
also ich mache das so...
Delphi-Quellcode:
Sollte das nicht funktionieren dann ist es vom Router evtl nicht erlaubt!
procedure AddPortClick(WANIPConn:UPnPService);
var sOut : OleVariant; sArg : OleVariant; ret : OleVariant; begin if not Assigned(WANIPConn) then exit; try sOut := VarArrayCreate([0, 0], varVariant); sArg := VarArrayCreate([0, 7], varVariant); sArg[0] := ''; //RemoteHost sArg[1] := 1000; //ExternalPort sArg[2] := 'TCP'; //Protocol sArg[3] := 1000; //InternalPort sArg[4] := '192.168.178.5'; //InternalClient sArg[5] := 1; //Enabled sArg[6] := 'TestMapping'; //PortMappingDescription sArg[7] := 0; //LeaseDuration ret := WANIPConn.InvokeAction('AddPortMapping', sArg, sOut); if ret = S_OK then lbDebug.Items.Add('Port Freischaltung erfolgreich !') else lbDebug.Items.Add('Port Freischaltung fehlgeschlagen !'); VariantClear(sArg); VariantClear(sOut); except end; end; Mein Testprogramm hänge ich mal mit an es öffnet den Port 1000. |
Re: UPNP / Portscan
moin zusammen,
das codebeispiel funktioniert einwandfrei, nun hätte ich noch weitere fragen: 1)suchst man die devices so a) UPnPDeviceFinder.FindByType('urn:schemas-upnp-org:service:WANIPConnection:1', 0) oder b) UPnPDeviceFinder.FindByType('upnp:rootdevice', 0). 2) sehe ich das richtig das ich beim löschen des ports folgendes machen muss? WANIPConn.InvokeAction('DeletePortMapping', sArg, sOut) wobei sARg aus '', Port, 'TCP' besteht? 3) kennst einer eine möglichkeit alle offenen ports auf einem device per upnp aufzulisten? mit aller besten grüssen Jonny |
Re: UPNP / Portscan
Hi,
zu 1. kann man so machen .. ich persönlich benutze UPnPMonitor.CreateAsyncFind mit einem CallBack zu 2. Port löschen
Delphi-Quellcode:
zu 3. ja kenne ich ^^
procedure DelPortClick(WANIPConn:UPnPService);
var sOut : OleVariant; sArg : OleVariant; ret : OleVariant; begin if not Assigned(WANIPConn) then exit; try sOut := VarArrayCreate([0, 0], varVariant); sArg := VarArrayCreate([0, 2], varVariant); sArg[0] := ''; //RemoteHost sArg[1] := 1000; //ExternalPort sArg[2] := 'TCP'; //Protocol ret := WANIPConn.InvokeAction('DeletePortMapping', sArg, sOut); if ret = S_OK then ShowMessage('Port löschung erfolgreich !') else ShowMessage('Port löschung fehlgeschlagen !'); VariantClear(sArg); VariantClear(sOut); except end; end;
Delphi-Quellcode:
procedure GetPortList(WANIPConn:UPnPService;lbDebug:TListBox);
var sOut : OleVariant; sArg : OleVariant; ret : OleVariant; iCount : Integer; x : Integer; begin if not Assigned(WANIPConn) then exit; try // Portmappings zählen iCount := WANIPConn.QueryStateVariable('PortMappingNumberOfEntries'); sOut := VarArrayCreate([0, 7], varVariant); sArg := VarArrayCreate([0, 0], varVariant); //Alle Portmappings durchlaufen for x := 0 to iCount - 1 do begin sArg[0] := x; ret := WANIPConn.InvokeAction('GetGenericPortMappingEntry', sArg, sOut); lbDebug.Items.Add( sOut[0] + '-' //RemoteHost + IntToStr(sOut[1]) + '-' //ExternalPort + sOut[2] + '-' //Protocol + IntToStr(sOut[3]) + '-' //InternalPort + sOut[4] + '-' //InternalClient + IntToStr(sOut[5]) + '-' //Enabled + sOut[6] + '-' //PortMappingDescription + IntToStr(sOut[7]) //LeaseDuration ); end; VariantClear(sArg); VariantClear(sOut); except end; end; |
Re: UPNP / Portscan
nabend zusammen,
also das port anlegen und wieder löschen funktioniert nur wenn ich die devices per: UPnPDeviceFinder.FindByType('urn:schemas-upnp-org:service:WANIPConnection:1', 0) gesucht habe. suche ich über UPnPDeviceFinder.FindByType('upnp:rootdevies', 0) so folgt der fehler: "EOLEException: Die Besitzer-SID eines Abonnements auf Einzelbenutzerbasis ist nicht vorhanden". Die suche nach offenen Ports funktioniert leider in beiden fällen nicht, beim iCount := WANIPConn.QueryStateVariable('PortMappingNumberOfE ntries'); kommt die fehlermeldung "OLE-Fehler 80040212" oder "OLE-Fehler 80040213" hat vielleicht einer eine idee? mfg Jonny |
Re: UPNP / Portscan
Zitat:
Achte darauf das FindByType('urn:schemas-upnp-org:service:WANIPConnection:1', 0) vollständig durch ist bevor du versuchst auf den Service zuzugreifen!! |
Re: UPNP / Portscan
aso, ich hatte auch schon festgestellt, dass die suche unterschiedlich lang dauert. bei deinem beispielprogramm geht es wesentlich schneller als bei mir.
kann es bei der suche nach den ports vielleicht sein, dass er gar keine findet und deswegen die fehlermeldung schmeisst? mfg Jonny |
Re: UPNP / Portscan
Wenn du mir mal dein Projekt per PN Schickst schaue ich es mir mal an ... ansonsten versuche es so wie ich mit AsyncFind und CallBack.
|
Re: UPNP / Portscan
Wie kann ich eigentlich bei einem Service abrufen welche StateVariables und welche Actions es gibt?
|
Re: UPNP / Portscan
du kannst dir die Dokumentation durchlesen .... www.upnp.org :wink:
In diesem Fall die des InternetGatewayDevices |
Re: UPNP / Portscan
Du meinst des sind immer die Selben? Stimmt bei meinem 2 Routern nur bedingt...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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