Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   UPnP Router Manager (https://www.delphipraxis.net/68898-upnp-router-manager.html)

Mystic 7. Mai 2006 20:12


UPnP Router Manager
 
Liste der Anhänge anzeigen (Anzahl: 1)
Aus meinem RouterTimer entstanden ist der UPnP Router Manager:

Ein Tool zum automatischen Anlegen von Weiterleitungen auf einem Router mit UPnP-Unterstützung, sobald ein Prozess einen Server-Port öffnet (natürlich mit Benutzer-Rückfrage). Es war ursprünglich für mich selbst gedacht (vielleicht erklärt das den Mangel an Dokumentation :oops:).

Das Tool ist noch in der Entwicklung. Verbesserungsvorschläge sind herzlichst willkommen. :)

Keine Installiation ist nötig. Das Programm speichert seine Einstellungen in den Dateien Settings.ini und Lists.dat im Programmverzeichnis.

Getestet nur mit Windows XP und einem Netgear FM114P Router. Benötigt wahrscheinlich Admin-Rechte auf Grund des API-Hooks (sicher bin ich mir nicht).

Braucht Windows XP oder Vista!

3. Update 10.06.2006

Mystic 8. Mai 2006 21:11

Re: UPnP Router Manager
 
Schon wieder ohne Kommentare? :( Diese 11 Leute, die sich es runtergeladen haben müssen doch zumindest ne Meinung haben, und wenn es die ist, dass es nicht funktioniert. :|

Laufi 8. Mai 2006 22:04

Re: UPnP Router Manager
 
Also ich finde es sehr witzig, Kompliment! :thumb:

Liebe Grüsse

Mystic 9. Mai 2006 12:51

Re: UPnP Router Manager
 
Witzig? Wie soll ich das verstehen? Ist zwar nett gemeint :) , aber wirklich bringen tut mir das nichts. :|

EAT 13. Mai 2006 18:01

Re: UPnP Router Manager
 
Hallo,
habe bei mir die Fritz! Box 5050(Router incl. UPnP). Dein Prog erkennt dies aber leider net.
Gruß Enno

Daniel G 13. Mai 2006 18:04

Re: UPnP Router Manager
 
Hm... Sorry, aber das einzige, was ich bislang von deinem Programm gesehen hab', ist die Meldung, dass es nach UPnP - Geräten sucht...

=> Fritz! Box SL

Mystic 13. Mai 2006 19:17

Re: UPnP Router Manager
 
Liste der Anhänge anzeigen (Anzahl: 1)
Könnt ihr mal dieses Programm bei euch laufen lassen und einen Screenshot posten? Es zeigt nach einigen Sekunden sämtliche UPnP-Geräte samt Diensten an, die im Netzwerk vorhanden sind.

Daniel G 13. Mai 2006 19:25

Re: UPnP Router Manager
 
Ok... Vielleicht liegt das auch daran, dass ich die Box als Modem und nicht als Router laufen habe. Allerdings ist die Option "UPnP - Statusinformationen anzeigen" aktiviert.

Das Fenster bleibt komplett leer...

Manne 13. Mai 2006 19:32

Re: UPnP Router Manager
 
Liste der Anhänge anzeigen (Anzahl: 1)
Beim Manager kommt bei mir diese Fehlermeldung
No internet gateway device found!

Anbei screenshot vom upnpexlorer

Daniel G 13. Mai 2006 19:34

Re: UPnP Router Manager
 
Ah, gut. Ich glaube, den hatten wir alle bisher...

EAT 13. Mai 2006 19:42

Re: UPnP Router Manager
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Screenshot zum UPnP Explorer.

Gruß Enno

Sorry, das erste Bild war nicht gelungen.

Dust Signs 13. Mai 2006 21:49

Re: UPnP Router Manager
 
Tolles Programm... gestartet, erst schmiert Firefox ab ("...hat einen Fehler verursacht..."), dann Notepad (obwohl ich es gar nicht gestartet habe) und dann dein Programm selbst :roll:

Dust Signs

Daniel G 13. Mai 2006 21:50

Re: UPnP Router Manager
 
Zitat:

Zitat von Dust Signs
Tolles Programm... gestartet, erst schmiert Firefox ab ("...hat einen Fehler verursacht..."), dann Notepad (obwohl ich es gar nicht gestartet habe) und dann dein Programm selbst :roll:

Dust Signs

:mrgreen:

alias5000 13. Mai 2006 22:09

Re: UPnP Router Manager
 
Eigentlich schade, ich fände sowas sehr bequem. Bei meinem D-Link Router gehts leider net, ich weiß aber auch net, inwiefern der UPnP unterstützt..

Mystic 14. Mai 2006 02:18

Re: UPnP Router Manager
 
Neue Version hochgeladen, die jetzt (hoffentlich :mrgreen:) auch IP- und PPP-Connections bei Geräten beliebigen Namens unterstützt.

alias5000 14. Mai 2006 02:35

Re: UPnP Router Manager
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nope, leider muss ich verneinen...
Ich hab dir aber mal n Bugreports angehängt (einiges rausgekürtzt, was nicht jeder erfahren muss, z.B. die PC Konfiguration...)

Gruß alias5000

Mystic 14. Mai 2006 02:51

Re: UPnP Router Manager
 
Danke, da hatte ich tatsächlich was übersehen. :mrgreen:

Zeigt der UPnP Explorer bei dir nichts an? Wenn nicht, dann unterstützt dein Router wohl kein UPnP. :(

alias5000 14. Mai 2006 03:01

Re: UPnP Router Manager
 
och schade, stimmt, der zeigt leider nix an :(

EAT 14. Mai 2006 08:56

Re: UPnP Router Manager
 
Hallo Mystic,
also dein Prog startet jetzt erst mal korrekt.
Unter Mappings und Settings zeigt er jedoch nichts an. Sollte er nicht bereits vorhandene Portfreigaben vom Router auslesen? Und wie wäre es, wenn man gewisse Ports manuell voreinstellen könnte.

Gruß Enno

Mystic 14. Mai 2006 21:44

Re: UPnP Router Manager
 
Kommt noch. ;)

Muetze1 9. Jun 2006 20:05

Re: UPnP Router Manager
 
Wie sieht's mit dem Programm aus? Ich habe einen NetGear FVS318 ProSafe VPN Firewall Router. Dein UPnP Explorer erkennt ihn und listet ihn, aber dein Router Manager sagt nur "Hook Failed" und das wars. Hätte mir das Programm auch gerne mal angeschaut und benutzt. Wie ist denn der aktuelle Status?

Mystic 9. Jun 2006 21:44

Re: UPnP Router Manager
 
Welches Windows benutzt du denn? Als normaler User oder Administrator?

edit: Update. Ein einfaches Management für statische Mappings ist eingebaut und scheint stabil zu laufen.

Muetze1 10. Jun 2006 09:37

Re: UPnP Router Manager
 
So, das Problem mit dem Hook war ein Fehler vor dem Rechner: "User error, replace user." Ich hatte vergessen die DLL's beim extrahieren mit zu selektieren, daher der Fehler. Mit den DLLs klappts und er startet. Ich habe nur in keinem der Popuppunkte irgendwelche Funktionen die meinen Router nutzen/erkennen. Die Connections sind leer, etc.

Windows XP SP2, Admin

TBx 10. Jun 2006 09:47

Re: UPnP Router Manager
 
Avira mag leider Deine MADHOOK.DLL nicht.

Es wird angegeben, es sei der Trojaner
TR/Hook.Agent.B enthalten :cry:

Würde es ja gerne mal testen, aber unter diesen Umständen ....




Gruß

onlinekater

RWarnecke 10. Jun 2006 16:33

Re: UPnP Router Manager
 
Hi,

ich habe gerade mal Dein Programm ausprobiert. Er gibt mir die folgende Fehlermeldung aus :

Zitat:

No internet gateway device found
Ich habe eine FritzBox WLAN 7050.

Mystic 10. Jun 2006 17:07

Re: UPnP Router Manager
 
Zitat:

Zitat von onlinekater
Avira mag leider Deine MADHOOK.DLL nicht.

Es wird angegeben, es sei der Trojaner
TR/Hook.Agent.B enthalten :cry:

Würde es ja gerne mal testen, aber unter diesen Umständen ....




Gruß

onlinekater

Das die DLL ein Hook Agent ist stimmt, aber ein Trojaner ist sie nicht.
Du kannst diese Meldung ignorieren.

Zitat:

Zitat von RWarnecke
Hi,

ich habe gerade mal Dein Programm ausprobiert. Er gibt mir die folgende Fehlermeldung aus :

Zitat:

No internet gateway device found
Ich habe eine FritzBox WLAN 7050.

Ist denn UPnP bei der FritzBox angeschaltet (
fritz.box ---> System ---> Netzwerkeinstellungen)?

Elvis 10. Jun 2006 18:43

Re: UPnP Router Manager
 
Ich spiele ja nur ungern den Spielverderber, aber man sollte sich immer überlegen, OB man UPNP wirklich benutzen will.
Es tut nicht weh, in seinem Router die notwendigen Ports zur Weiterleitung per Telnet oder Web interface einzustellen. UPNP selbst reißt einige Sicherheitslücken auf, was für Geräte, die dich vor dem bösen Netz schützen sollen, IMHO ein no-go darstellt. ;)

Bei DX Spielen und mehreren Client hinter dem Router kann man sich auch Tools wie DXPort bedienen, um die Port range von DXPlay so aufzuteilen, dass man sie später im router einzelnen Maschinen zuordnen kann.

@Mystic, kennst du den schon? http://www.network-secure.de/index.p...43&Itemid=1387

Mystic 10. Jun 2006 22:09

Re: UPnP Router Manager
 
Zitat:

Zitat von Elvis

Trifft auf mich nicht zu.

alias5000 10. Jun 2006 23:14

Re: UPnP Router Manager
 
Zitat:

Zitat von onlinekater
Avira mag leider Deine MADHOOK.DLL nicht.

Es wird angegeben, es sei der Trojaner
TR/Hook.Agent.B enthalten :cry:

Das ist eine harmlose dll, die findest du kostenlos unter www.madshi.net

Gruß alias5000

negaH 24. Jun 2006 16:08

Re: UPnP Router Manager
 
Aber WAS machst DU mit dieser DLL ?

Bei mir schmiert deine Anwendung erstmal ab (sowas wie IOleError Class not registered). Der Explorer bleibt vollkommen leer.

Ich habe eine Fritz!Box Fon WLAN 7170 und UPnP auch aktiviert.

Welche Vorausetzungen an das OS werden gestellt ? Habe Win2k prof.

Gruß Hagen

Mystic 25. Jun 2006 20:37

Re: UPnP Router Manager
 
Die DLL wird benutzt um WinSock-Funktionen zu hooken.

Delphi-Quellcode:
library rmHook;

{$IMAGEBASE $58a00000}

uses
  Windows,
  madCodeHook,
  Winsock,
  madStrings,
  madRemote,
  HookDataUnit in 'HookDataUnit.pas';

{$R *.res}

var
  bindNext:function(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer; stdcall;
  listenNext: function(s: TSocket; backlog: Integer): Integer; stdcall;
  closesocketNext: function(s: TSocket): Integer; stdcall;
  shutdownNext: function(s: TSocket; how: Integer): Integer; stdcall;

procedure SendIPC(s: TSocket; action: TSockAction; saddr: PSockAddr = nil);
var
  session: DWord;
  data: TSockHookData;
  size: Integer;
  addr: TSockAddr;
  arrChW: array[0..MAX_PATH] of WideChar;
  x: PChar;
begin
  ZeroMemory(@data, SizeOf(TSockHookData));
  data.process := GetCurrentProcessId;
  GetModuleFileNameW(0, arrChW, MAX_PATH);
  WideToAnsi(arrChW, data.filename);
  GetFullPathName(@data.filename, MAX_PATH, @data.filename, x);
  CharLower(@data.filename);
  data.action := action;
  if saddr <> nil then
    addr := saddr^
  else
  begin
    size := SizeOf(addr);
    getsockname(s, addr, size);
  end;
  data.sockport := ntohs(addr.sin_port);
  if data.sockport = 0 then
    Exit;
  size := SizeOf(data.socktype);
  getsockopt(s, SOL_SOCKET, SO_TYPE, @data.socktype, size);
  if AmSystemProcess and (GetCurrentSessionId = 0) then
    session := GetInputSessionId
  else
    session := GetCurrentSessionId;
  SendIPCMessage(PChar('UPNPRouterMan' + IntToStrEx(session)), @data,
    SizeOf(data));
end;

function bindCallback(s: TSocket; var addr: TSockAddr; namelen: Integer):
  Integer; stdcall;
begin
  SendIPC(s, Listen, @addr);
  Result := bindNext(s, addr, namelen);
end;

function listenCallback(s: TSocket; backlog: Integer): Integer; stdcall;
begin
  SendIPC(s, Listen);
  Result := listenNext(s, backlog);
end;

function closesocketCallback(s: TSocket): Integer; stdcall;
begin
  SendIPC(s, Closed);
  Result := closesocketNext(s);
end;

function shutdownCallback(s: TSocket; how: Integer): Integer; stdcall;
begin
  SendIPC(s, Closed);
  Result := shutdownNext(s, how);
end;

begin
  HookAPI('wsock32.dll', 'bind', @bindCallback, @bindNext);
  HookAPI('wsock32.dll', 'listen', @listenCallback, @listenNext);
  HookAPI('wsock32.dll', 'closesocket', @closesocketCallback, @closesocketNext);
  HookAPI('wsock32.dll', 'shutdown', @shutdownCallback, @shutdownNext);
end.
Hast du noch einen Switch zwischen Router und PC? Ein Freund von mir hat ein solches Problem, denn sein Switch unterstützt keine Multicasts.

Die UPnP-Funktionen brauchen anscheinend Windows Vista, XP oder ME.

Hobby-Programmierer 25. Jun 2006 21:35

Re: UPnP Router Manager
 
Liste der Anhänge anzeigen (Anzahl: 3)
Nabend ..., :)
also ich wollte es testen aber nach dem Start ging nix mehr,- kein INet, permanente Virus/Trojaner Warnungen bis der Avira selbst abgeschmiert ist und mein System mitgerissen hat. Es half nur noch ein 'harter' Reset :x
aber der Reihe nach

nicht ganz so LG Mario

Mystic 25. Jun 2006 21:44

Re: UPnP Router Manager
 
Avira mag die Hook-DLL nicht und deine Firewall keine API-Hooks. Das Programm benötigt aber API-Hooks, um auf Veränderungen an den Ports reagieren zu können.

Der Fehler aus dem dritten Screenshot ist bekannt und hier auch schon gefixt, entsteht beim Terminieren des Programmes ohne erfolgreiche Initialisation.

negaH 26. Jun 2006 09:43

Re: UPnP Router Manager
 
Hi

ich habe keinen Router oder sonstwas zwischen meiner Fritz!Box und dem PC, was und wozu auch ? Die Fritz!Box ist ja mein Router und der unterstützt UPnp (die ganzen Fritz!Box Tools machen es ja vor wie man per UPnp Daten abfragen kann, es geht also)

Und ich verstehe immer noch nicht warum du so sicherheitsrelevante Funktionen wie die des WinSocks hooken musst, wozu benötigst du das in einem UPnp Manager ?

Gruß Hagen

Mystic 26. Jun 2006 12:32

Re: UPnP Router Manager
 
Weil der eigentliche Zweck des Programms war, eine Art Port Triggering zur Verfügung zu stellen.

Lokales Programm öffnet Serverport --> Benutzerabfrage --> Port auf dem Router weiterleiten

Also der Explorer sucht nach sämtlichen UPNP-Geräten und ihren Diensten. Wenn der nach einiger Zeit nichts anzeigt, läuft irgendwas schieft. :|

Van HelF 26. Jun 2006 12:45

Re: UPnP Router Manager
 
Hab dein prog ausprobiert,
hat aber einige lähmungen verursacht, z.b. ist das komplette system hängen geblieben und hat auf keine eingabe mehr reagiert, vl. kannst du dies noch verbessern.

Mystic 26. Jun 2006 12:48

Re: UPnP Router Manager
 
Würd ich ja gern, aber ich kann diese Probleme hier nicht nachvollziehen. :(

negaH 26. Jun 2006 13:46

Re: UPnP Router Manager
 
Ich aber teilweise ;)

1.) du hookst an einer Stelle im System an denen viele andere Programme interessiert sind
- solche Tracer wie deiner
- Viren und Trojaner
- Sicherheitssoftwares die solche Tracer, Viren, Trojaner verhindern möchten
- Firewalls, Router und das OS selber

Also viele Programme mit kontrahären Zielen

2.) du hookst dabei mit einem Tool (was einen verdient guten Ruf geniest) aber im Grunde mit absolut unsauberen Tricks arbeitet. Das System MUSS schlußendlich instabil sein.

3.) du benutzt das UPnp SOAP/RPC über COM Objekte. Das ist gut aber man sollte auch überprüfen ob das jeweilige OS auch diese COM Server in der entsprechenden Version zur Verfügung stellt ! Und das ist eben auf meinem Rechner NICHT so, bzw. habe ich die entsprechenden Dienste deaktiviert (einfach weil das UPnp eine enorme Sicherheitslücke darstellt -> Trojaner können per UPnp durch Router und Firewalls durch).
Du solltest also in deinem Code unbedingt entsprechende Abfragen einbauen.

4.) dein Code scheint unsauber mit den COM Objekten umzugehen. Das führt dann zu Nachfolgefehlern die nur darauf basieren das eine vorherige fehlgeschlagene Allozierung eines COM Objektes weitere gravierende Fehler verursacht.

5.) dein Code scheint nicht in der Lage zu sein die COM Objekte und die UPnp Abfragen Passwortbasiert abzuzfragen. Denn exakt das ist bei meiner Fritz!Box der Fall. Ich habe sie per Passwort geschützt und alle Anfragen per UPnp müssen vorher das Passwort der Box mitteilen um ZUgriff darauf zu bekommen. Das geht definitiv denn die Fritz Software kann ja selber per UPnp Daten bei der Box abfragen, auch mit gesetztem Passwort. Ich weiß leider nun nicht ob das UPnp Protokoll sowas von Hause unterstützt, da bin ich selber berfragt.

6.) Der MAD Hook benötigt der nicht Admin Rechte damit er funktioniert ? Nun, in meinem System melde ich mich fast nie als Admin an, es könnte also an den Rechten liegen. Die Frage ist nun WIE in deinem Source auf die Unterbindung deiner Hooks durch das OS, reagiert wird und das dadurch eventuell in deinem Code gravierende Nachfolgefehler auftreten !?

Das sind natürlich alles nur grobe Vermutungen meinerseits, da wir ja deinen Source nicht kennen ;)
Aber im Grunde läuft das alles darauf hinaus das du eine Sofwtare hast die auf deinem System läuft aber auf viele andere Rechner eben nicht mehr.

Gruß Hagen

Mystic 28. Jun 2006 16:56

Re: UPnP Router Manager
 
Zitat:

Zitat von negaH
3.) du benutzt das UPnp SOAP/RPC über COM Objekte. Das ist gut aber man sollte auch überprüfen ob das jeweilige OS auch diese COM Server in der entsprechenden Version zur Verfügung stellt ! Und das ist eben auf meinem Rechner NICHT so, bzw. habe ich die entsprechenden Dienste deaktiviert (einfach weil das UPnp eine enorme Sicherheitslücke darstellt -> Trojaner können per UPnp durch Router und Firewalls durch).
Du solltest also in deinem Code unbedingt entsprechende Abfragen einbauen.

Wie kann ich auf das Vorhandensein der Server prüfen?

Zitat:

Zitat von negaH
4.) dein Code scheint unsauber mit den COM Objekten umzugehen. Das führt dann zu Nachfolgefehlern die nur darauf basieren das eine vorherige fehlgeschlagene Allozierung eines COM Objektes weitere gravierende Fehler verursacht.

Darüber hab ich mir auch schon Gedanken gemacht. Vorallem das übertragen von COM-Objekten zwischen zwei Threads in dieser STA-Applikation.

Der Hauptthread initialisiert einen Such-Thread der mittels eines IUPNPDeviceFinders nach Geräten sucht. Die Interfaces dieser Geräte werden in einer TInterfaceList gespeichert. Nach dem Suchen sendet der Thread eine Meldung an den Hauptthread der dann die Interfaces in der Liste durchgeht. Ich vermute dass das keine saubere Lösung ist, ein Versuch mit MSDN-Library durchsuchenCoMarshalInterThreadInterfaceInStream schlug allerdings fehl.

Zitat:

Zitat von negaH
5.) dein Code scheint nicht in der Lage zu sein die COM Objekte und die UPnp Abfragen Passwortbasiert abzuzfragen. Denn exakt das ist bei meiner Fritz!Box der Fall. Ich habe sie per Passwort geschützt und alle Anfragen per UPnp müssen vorher das Passwort der Box mitteilen um ZUgriff darauf zu bekommen. Das geht definitiv denn die Fritz Software kann ja selber per UPnp Daten bei der Box abfragen, auch mit gesetztem Passwort. Ich weiß leider nun nicht ob das UPnp Protokoll sowas von Hause unterstützt, da bin ich selber berfragt.

Dieser Passwortschutz ist dann aber eine proprietäre Erweiterung... ich kann in den IGD-Spezifikationen nichts darüber finden.

Zitat:

Zitat von negaH
6.) Der MAD Hook benötigt der nicht Admin Rechte damit er funktioniert ? Nun, in meinem System melde ich mich fast nie als Admin an, es könnte also an den Rechten liegen. Die Frage ist nun WIE in deinem Source auf die Unterbindung deiner Hooks durch das OS, reagiert wird und das dadurch eventuell in deinem Code gravierende Nachfolgefehler auftreten !?

Der Hook hookt alle Prozesse der aktuellen Session. Sollte man das lieber auf "aktueller User" umstellen? Ich hab zugegeben keine Ahnung was genau eine Session ist.

Wenn der Hook fehlschlägt wird eine Fehlermeldung ausgeworfen und das Programm beendet.

negaH 28. Jun 2006 17:28

Re: UPnP Router Manager
 
Hm, am besten wäre es du könntest ganz auf Hooks verzichten. Falls nicht bietet sich die sogenannte "Side by Side" Technik der DLLs an. Einfach ausgedrückt, du ersetzt die WinSock DLL durch eine eigene die im Grunde nur alle Funktionsaufrufe an die originale DLL weiterleitet. Das ist dann wie ein dynamischer Hook, aber eben "sauber".

Die Überprüfung ob ein COM Objekt allozierbar ist/war erfolgt am besten per try except Block und der Auswertung des HResults.

Die Iteration innerhalb eines Threads ist eine gute Idee. Du solltest aber ohne Synchronisation auskommen können. Dh. dein Thread wird gestartet und sammelt alle Infos in seinen lokalen Feldern. Das OnTerminate Event wird nun benutzt um nach Fertigstellung des Threads diese lokalen Information in den Mainthread deiner Anwendung zu übernehmen. Synchronisation ist immer eine Schwachstelle die zu undurchschaubaren Fehler führt und zusätzlich noch das gesammte System ausbremst. Stells dir einfach so vor das auf der Autobahn Autos fahren. Ein Porsche mit 360 und ein LKW mit 80. Während des Überholvorganges versuchst du nun dich mit dem Porschefahrer zu unterhalten. Das geht nur wenn einer von beiden seine Geschwindigkeit ändert, ergo wartet. Logisch wird der Porsche abbremsen müssen, auf 80km/h und das führt dazu das die Überholspur nun grundsätzlich auf 80 blockiert wird.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.
Seite 1 von 2  1 2      

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