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 2 von 4     12 34      
Benutzerbild von TKC
TKC

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

Re: UPNP / Portscan

  Alt 22. Aug 2006, 11:02
also ich mache das so...

Delphi-Quellcode:
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;
Sollte das nicht funktionieren dann ist es vom Router evtl nicht erlaubt!
Mein Testprogramm hänge ich mal mit an es öffnet den Port 1000.
Angehängte Dateien
Dateityp: rar upnp_sample_193.rar (256,1 KB, 186x aufgerufen)
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#12

Re: UPNP / Portscan

  Alt 22. Aug 2006, 13:01
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
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

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

Re: UPNP / Portscan

  Alt 22. Aug 2006, 13:39
Hi,

zu 1. kann man so machen .. ich persönlich benutze UPnPMonitor.CreateAsyncFind mit einem CallBack

zu 2.

Port löschen
Delphi-Quellcode:
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;
zu 3. ja kenne ich ^^

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;
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#14

Re: UPNP / Portscan

  Alt 22. Aug 2006, 21:19
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
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

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

Re: UPNP / Portscan

  Alt 22. Aug 2006, 21:35
Zitat:
suche ich über UPnPDeviceFinder.FindByType('upnp:rootdevies', 0) so folgt der fehler:
"EOLEException: Die Besitzer-SID eines Abonnements auf Einzelbenutzerbasis ist nicht vorhanden".
Dieser Fehler tritt nur auf wenn die Suche noch nicht abgeschlossen ist und du versuchst auf den Service zuzugreifen !!!

Achte darauf das FindByType('urn:schemas-upnp-org:service:WANIPConnection:1', 0) vollständig durch ist bevor du versuchst auf den Service zuzugreifen!!
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#16

Re: UPNP / Portscan

  Alt 22. Aug 2006, 21:43
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
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

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

Re: UPNP / Portscan

  Alt 22. Aug 2006, 23:52
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.
  Mit Zitat antworten Zitat
RobertP

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

Re: UPNP / Portscan

  Alt 23. Aug 2006, 15:18
Wie kann ich eigentlich bei einem Service abrufen welche StateVariables und welche Actions es gibt?
Robert
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

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

Re: UPNP / Portscan

  Alt 23. Aug 2006, 16:33
du kannst dir die Dokumentation durchlesen .... www.upnp.org

In diesem Fall die des InternetGatewayDevices
  Mit Zitat antworten Zitat
RobertP

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

Re: UPNP / Portscan

  Alt 23. Aug 2006, 17:44
Du meinst des sind immer die Selben? Stimmt bei meinem 2 Routern nur bedingt...
Robert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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:25 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