Toon posts:

Post Request voor PortForwarding Router

Pagina: 1
Acties:
  • 354 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Voor een stage opdracht is het de bedoeling dat ik poorten forward op een router, zodat camera's van buitenaf bereikbaar zijn. De camera's hebben een netwerk aansluiting en kun je zo aan het netwerk hangen. Nu is het nog zo dat de klant zelf voor elke camera een poort moet forwarden op de router. Voor sommige klanten is dit niet zo'n probleem omdat ze wel een systeembeheerder hebben, maar er zijn ook klanten waar dit niet zo is. En om nou aan de telefoon uit te leggen aan iemand die nog nooit van port forwarding gehoord heeft of die dat ff kan doen op zn router...
Vandaar dus mijn opdracht. Het detecteren van de camera's en vervolgens deze camera's forwarden op de router van de klant.

Maar toen het probleem. Aangezien mijn programma draait op een computer in het netwerk van de klant kan ik gebruik maken van UPnP. Dit heb ik dus nu wel aan de praat, maar toen kwam ik er dus achter dat er routers zijn die UPnP zouden moeten ondersteunen maar waarbij het (soms) niet werkt. De linksys wrt54G v5 bijv. En verder kan het ook nog zo zijn dat de klant een router heeft waarbij UPnP wel werkt maar standaard is uitgeschakeld. Dit wordt gedaan omdat ieder programma in een netwerk poorten kan forwarden zonder enige vorm van authenticatie (virussen, spyware....).

Er zijn dan nog 2 alternatieven, telnet en een http post request. Sommige speedtouch modems ondersteunen port forwarding via telnet en de documentatie is hier te vinden:
http://www.speedtouch.nl/documents.html

En het 2e alternatief is dus een http post request gebruiken. Elke router heeft wel een webpagina waar je op in kunt loggen en vervolgens poorten kunt forwarden. Wat er dan meestal gebeurt is dan dat er dmv een knop op de pagina de values van het form verstuurd worden naar de router. Dit post request zou ik ook in mijn programma kunnen nabootsen. Maar aangezien dit router specifiek is heb ik jullie hulp nodig om de verschillende post requests te achterhalen.

Het gaat dus om de post request van veel gebruikte routers van middel grote bedrijven. De grote bedrijven hebben toch wel een windows server 2003 / domein .... en een systeembeheerder die het allemaal wel kan regelen (en meestal geen sweex routertje :+ ).

Om eens een aantal routers te noemen:
- Linksys WRT54G / GL / GS
- Netgear
- Sweex LB xxxx (voor het geval dat he :+ )
- Speedtouch (verschillende versies)
- Asus WL xxx

Hoe kan ik het post request van mijn router achterhalen?
1
Download dit standalone programma van ethereal:
http://www.ethereal.com/download.html
Of het standalone programma van Packetyzer:
http://www.networkchemistry.com/products/packetyzer.php
Of de extensie voor Firefox:
http://livehttpheaders.mozdev.org/installation.html

2
Login op je router en ga naar de pagina waar je poorten kunt forwarden

3
Als het van toepassing is start de sniffer.
Forward een port of druk gewoon meteen op de Send button.

4
Plaats het resultaat in het topic, samen met de naam van de router (merk, type, versie).


Ik zal deze post blijven updaten zodat jullie niet allemaal dezelfde resultaten posten.
Dan trap ik alvast af met de Linksys WRT54G v5.
Alvast bedankt _/-\o_

Changelog
- Linksys WRT54G v5 toegevoegd
- Overbodige header info verwijderd.
- Linksys WRT54GL toegevoegd


Linksys WRT54G v5
POST /PortRange.tri HTTP/1.1
Referer: http://192.168.1.2/Forward.htm
Content-Type: application/x-www-form-urlencoded
Host: 192.168.1.2
Content-Length: 514
action=Apply&
RuleID_0=0&name0=0&from0=0&to0=0&pro0=both&ip0=0&enable0=on&
RuleID_1=0&name1=&from1=0&to1=0&pro1=both&ip1=0&
RuleID_2=0&name2=&from2=0&to2=0&pro2=both&ip2=0&
RuleID_3=0&name3=&from3=0&to3=0&pro3=both&ip3=0&
RuleID_4=0&name4=&from4=0&to4=0&pro4=both&ip4=0&
RuleID_5=0&name5=&from5=0&to5=0&pro5=both&ip5=0&
RuleID_6=0&name6=&from6=0&to6=0&pro6=both&ip6=0&
RuleID_7=0&name7=&from7=0&to7=0&pro7=both&ip7=0&
RuleID_8=0&name8=&from8=0&to8=0&pro8=both&ip8=0&
RuleID_9=0&name9=&from9=0&to9=0&pro9=both&ip9=0

Linksys WRT54GL
POST /apply.cgi HTTP/1.1
Host: 192.168.0.1
Referer: http://192.168.0.1/Forward.asp
Content-Type: application/x-www-form-urlencoded
Content-Length: 584
submit_button=Forward&
action=Apply&
forward_port=10&
name0=&from0=&to0=0&pro0=both&ip0=0&enable0=on&
name1=&from1=0&to1=0&pro1=both&ip1=0&enable1=on&
name2=&from2=0&to2=0&pro2=both&ip2=0&enable2=on&
name3=&from3=0&to3=0&pro3=both&ip3=0&enable3=on&
name4=&from4=0&to4=0&pro4=both&ip4=0&enable4=on&
name5=&from5=0&to5=0&pro5=both&ip5=0&enable5=on&
name6=&from6=0&to6=0&pro6=both&ip6=0&enable6=on&
name7=&from7=0&to7=0&pro7=both&ip7=0&
name8=&from8=0&to8=0&pro8=both&ip8=0&
name9=&from9=0&to9=0&pro9=both&ip9=0

[ Voor 15% gewijzigd door Verwijderd op 12-10-2006 14:28 ]


  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Even een waarschuwing: als je een resultaat plaatst, haal dan wel even de regel beginnend met Authorization: weg. Niet iedereen hoeft te weten met welk wachtwoord je router beveiligd is.

Verwijderd

Topicstarter
Ok ik heb het weggehaald, alhoewel ik betwijfel of iemand er wat mee kan. Google ns op die string en je vind heel wat hits. Die letter combinatie geeft waarschijnlijk aan welk encryptie methode gebruikt wordt om het wachtwoord te versleutelen?
Verder ook de WRT54GL toegevoegd.

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op dinsdag 10 oktober 2006 @ 20:18:
Ok ik heb het weggehaald, alhoewel ik betwijfel of iemand er wat mee kan. Google ns op die string en je vind heel wat hits. Die letter combinatie geeft waarschijnlijk aan welk encryptie methode gebruikt wordt om het wachtwoord te versleutelen?
Verder ook de WRT54GL toegevoegd.
Die lettercombinatie bevat je loginnaam + wachtwoor in Base64 codering. In jouw geval maakte het niet zo veel uit omdat je nog de standaard login van Linksys (admin/admin) gebruikt. Maar als andere gebruikers straks de postrequest naar hun router plaatsen zal daar waarschijnlijk wel een echt wachtwoord in staan. En aangezien veel mensen te lui zijn om voor elke site een ander wachtwoord te gebruiken zou dat vervelende gevolgen kunnen hebben.


De Speedtouch serie kan trouwens lastig worden. Je kunt daarbij namelijk niet in 1 enkele POST alle poortforwardings aanpassen. En om het makkelijk te maken hebben de velden in de POST geen namen maar nummers. 8)7
Voorbeeld voor het toevoegen van een forward van TCP poort 234 extern naar poort 123 op intern IP 10.1.2.3 op een Speedtouch 510:
code:
1
2
3
4
5
6
7
POST /cgi/nat/ HTTP/1.1
Host: 10.0.0.138
Referer: http://10.0.0.138/cgi/nat/
Authorization: Basic ...
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
1=3&11=6&12=10.1.2.3&13=123&14=0.0.0.0&15=234&16=63
De veldnamen die ik al heb kunnen herleiden:
1 = actie (3 = apply / 4 = clear)
11 = poorttype (6 = TCP / 17 = UDP)
12 = intern IP
13 = interne poort
14 = extern IP (in principe altijd '0.0.0.0')
15 = externe poort


Hou je er trouwens wel rekening mee dat je soms een router tegen kan komen waar al poorten geforward worden? Je zult dus voordat je de nieuwe forwards voor jouw camera's instelt, de huidige forwards uit moeten lezen.

[ Voor 37% gewijzigd door Arjen Tempel op 11-10-2006 10:56 . Reden: info speedtouch toegevoegd ]


Verwijderd

Topicstarter
Super bedankt Arjen _/-\o_ .

Dat wordt nog leuk zeg met die Speedtouch |:(
Hou je er trouwens wel rekening mee dat je soms een router tegen kan komen waar al poorten geforward worden? Je zult dus voordat je de nieuwe forwards voor jouw camera's instelt, de huidige forwards uit moeten lezen.
Dit probleem had ik zelf ook al bedacht idd. Maar als er al forwards in een router al in staan dan betekent dat, dat iemand die erin heeft gezet. En die iemand kan dan ook wel de forwards voor de camera's toevoegen. Wat ik afgesproken heb met de stagebegeleider is dat er een messagebox komt die meldt dat bestaande forwards overschreven zullen worden, en vervolgens kan de gebruiker op OK of Cancel drukken.
Wanneer je er wel rekening mee gaat houden wordt het al erg nasty aangezien je html documenten moet gaan parsen.

Trouwens over die POST van je speedtouch. Hoe weet dat apparaat dan welke RuleID een bepaalde forward heeft? Aangezien je geen identificatie meestuurd. Het verwijderen van een forward wordt dan bijvoorbeeld erg lastig.

En waarom zou het externe ip bijna altijd '0.0.0.0' zijn? Het externe ip is het ip adres die je heb gekregen van je internet provider. De router creeerd dmv NAT interne adressen zodat je met 1 extern adres toch met meerdere pc's tegelijkertijd kunt internetten. En ik kan me bijna niet voorstellen dat jij toevallig '0.0.0.0' hebt gekregen van je internet provider :+
@:voutloos thnx weet ik dat ook weer

[ Voor 5% gewijzigd door Verwijderd op 11-10-2006 12:00 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op woensdag 11 oktober 2006 @ 11:21:
En waarom zou het externe ip bijna altijd '0.0.0.0' zijn? Het externe ip is het ip adres die je heb gekregen van je internet provider. De router creeerd dmv NAT interne adressen zodat je met 1 extern adres toch met meerdere pc's tegelijkertijd kunt internetten. En ik kan me bijna niet voorstellen dat jij toevallig '0.0.0.0' hebt gekregen van je internet provider :+
0.0.0.0 betekent daar elk willekeurig bronadres. Het slaat juist niet op je eigen wan ip.

{signature}


Verwijderd

Topicstarter
subtiel schopje.

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 22-03 16:47

leuk_he

1. Controleer de kabel!

Interresant, Dit houd ik zeker in de gaten.

Maar voor routers waar upnp goed werkt zou ik niet gan klooien om poorten open te zetten. En de post request heeft juist vaak autorisatie nodig, en dat is juist het probleem dat niemand het wachtword van de router kent.

Voor het emule morph maken we (=morph ontwikkel team) gebruik van een eigen upnp library die met iets meer routers compatible is en niet afhankelijk is van het wel of niet enablen van upnp op de pc waar het programma op draait. Ook een optie. Dit is een (C++) windows programma (Dat stukje code is portable)

Ik weet dat op de speedtouch upnp goed werkt, dus ik zie geen reden hiervoor het post request te achterhalen.

Ander optie is de firewall te negeren en er gaten in de NAT te blazen met udp of via STUN

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • nero355
  • Registratie: Februari 2002
  • Laatst online: 22-02 18:06

nero355

ph34r my [WCG] Cows :P

uPnP :X

IMHO kan je dat het beste helemaal niet hebben in je programma, maar ja wie ben ik he ... bovendien hebben wij hier een Novell BorderManager en die doet echt geen uPnP hoor ;) (Gelukkig !! )

Maar wat ik dus hiermee wil zeggen : Wat doe je met klanten die dus een dedicated Firewall hebben zoals ISA 2003/Novell BorderManager/ander dedicated apparaat ??

Verder kan ik sinds enige tijd Packetyzer aanraden in plaats van Ethereal :)

|| Stem op mooiere Topic Search linkjes! :) " || Pi-Hole : Geen advertenties meer voor je hele netwerk! >:) ||


  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 22-03 16:47

leuk_he

1. Controleer de kabel!

nero355 schreef op donderdag 12 oktober 2006 @ 13:23:
uPnP :X

IMHO kan je dat het beste helemaal niet hebben in je programma, maar ja wie ben ik he ... bovendien hebben wij hier een Novell BorderManager en die doet echt geen uPnP hoor ;) (Gelukkig !! )
Topicstarter heeft al aangegeven dat voor bedrijven die dergelijk spul draaien. dit hele verhaal niet van toepassing is. Die zullen zelf wel bepalen die camara's en de software in een eigen vpn/dmz te hangen ofzo (affijn, gezien de toon weet je het zelf toch beter wat dat betreft :*) )
.

Verder zie ik het probleem niet van uPnP. Het is precies het beveiligngs nivo wat aansluit op kleine bedrijven die hun router niet kunnen configureren: Vertrouw al het verkeer binnen in je LAN.
Verder kan ik sinds enige tijd Packetyzer aanraden in plaats van Ethereal :)
Had ik nog niet van gehoord, en als ik de homepage lees is het meer een Ethereal aanbouw. Aardige tip :)

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Verwijderd

Topicstarter
Maar voor routers waar upnp goed werkt zou ik niet gan klooien om poorten open te zetten.
...
Ik weet dat op de speedtouch upnp goed werkt, dus ik zie geen reden hiervoor het post request te achterhalen.
Dat was ook inderdaad niet te bedoeling. Ik scan eerst op upnp routers en wanneer ik er geen vind probeer ik het handmatig. (met een post request dus).
En de post request heeft juist vaak autorisatie nodig, en dat is juist het probleem dat niemand het wachtword van de router kent.
Ook dit is geen probleem, aangezien het default password van zo'n beetje elke router is op te zoeken op deze website:
http://www.phenoelit.de/dpl/dpl.html
En wanneer iemand dus het wachtwoord heeft veranderd dan geef ik hem nog de mogelijkheid om het wachtwoord op te geven. Ik probeer gewoon eerst het standaard wachtwoord en mislukt dit dan krijgt de gebruiker een invoerveldje voorgeschoteld.
Voor het emule morph maken we (=morph ontwikkel team) gebruik van een eigen upnp library die met iets meer routers compatible is en niet afhankelijk is van het wel of niet enablen van upnp op de pc waar het programma op draait. Ook een optie. Dit is een (C++) windows programma (Dat stukje code is portable)
Waar kan ik het vinden en welke licentie zit erop ;)
Hoe zorgt jullie library er voor dat meer routers compatible zijn?
En het probleem is meestal ook niet dat UPnP aanstaat op de pc, maar of het aanstaat op de router.
Ander optie is de firewall te negeren en er gaten in de NAT te blazen met udp of via STUN
m.a.w. Tcp / UPD Punching...
Dit had ik ook al gevonden idd, maar volgens mij gaat dit niet werken aangezien het ip adres waar ik naar toe forward een camera is en geen gewone pc. Ik kan dus ook niet zomaar willekeurige software draaien op die camera voor Tcp / UPD Punching.
quote:
nero355 schreef op donderdag 12 oktober 2006 @ 13:23:
uPnP :X
IMHO kan je dat het beste helemaal niet hebben in je programma, maar ja wie ben ik he ... bovendien hebben wij hier een Novell BorderManager en die doet echt geen uPnP hoor ;) (Gelukkig !! )

Topicstarter heeft al aangegeven dat voor bedrijven die dergelijk spul draaien. dit hele verhaal niet van toepassing is. Die zullen zelf wel bepalen die camara's en de software in een eigen vpn/dmz te hangen ofzo (affijn, gezien de toon weet je het zelf toch beter wat dat betreft :*) )
Inderdaad leuk_he dit staat gewoon in de topic start.
Verder zie ik het probleem niet van uPnP. Het is precies het beveiligngs nivo wat aansluit op kleine bedrijven die hun router niet kunnen configureren: Vertrouw al het verkeer binnen in je LAN.
Daar is UPnP voor bedacht idd. Maar het kan natuurlijk voorkomen dat een pc in een LAN geinfecteerd wordt met een virus/spyware die UPnP 'misbruikt'. Vandaar dat sommige routers standaard UPnP uitgeschakeld hebben.

Verwijderd

Topicstarter
Nog maar eens een schopje.
Ik ben toch wel benieuwd naar de structuur van de post requests van andere routers.
Het lijkt erop dat in iedergeval de structuur van de http headers hetzelfde zijn. En
wanneer ik de structuur van andere bekende routers heb kan ik daar iets algemeens voor programmeren, zodat daar makkelijk support voor toegevoegd kan worden.

Verwijderd

Topicstarter
*kick*

Verwijderd

Topicstarter
Nog maar ns een *kick* :)

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Ik heb hier nog een reserve Speedtouch 510 liggen.
Als je wil kan ik die na het weekend aan mijn netwerk hangen, zodat je zelf kunt uitzoeken hoe je via de web- en/of telnet-interface een serie portforwards instelt.

Verwijderd

Ik vind het een abitieus project en vraag me af of hoe ver je er mee gaat komen. Desalniettemin wil ik je best helpen met een logje van een Draytek 2900W.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
http://192.168.1.1/cgi-bin/ipnat.cgi

POST /cgi-bin/ipnat.cgi HTTP/1.1
Host: 192.168.1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.1.1/doc/ipnat.sht
Authorization: Basic ********************
Content-Type: application/x-www-form-urlencoded
Content-Length: 755
sPSrvSN1=Rdesktop&sPSrvPTCL1=TCP&iPSrvGP1=3389&sPSrvPA1=192.168.1.150&iPSrvPP1=3389&sPSrvPTCL1_0=On&sPSrvSN2=Rdesktop2&sPSrvPTCL2=TCP&iPSrvGP2=3390&sPSrvPA2=192.168.1.151&iPSrvPP2=3389&sPSrvPTCL2_0=On&sPSrvSN3=eMule&sPSrvPTCL3=TCP&iPSrvGP3=4662&sPSrvPA3=192.168.1.150&iPSrvPP3=4662&sPSrvPTCL3_0=On&sPSrvSN4=eMule&sPSrvPTCL4=UDP&iPSrvGP4=4672&sPSrvPA4=192.168.1.150&iPSrvPP4=4672&sPSrvPTCL4_0=On&sPSrvSN5=&sPSrvPTCL5=---&iPSrvGP5=0&sPSrvPA5=&iPSrvPP5=0&sPSrvSN6=&sPSrvPTCL6=---&iPSrvGP6=0&sPSrvPA6=&iPSrvPP6=0&sPSrvSN7=&sPSrvPTCL7=---&iPSrvGP7=0&sPSrvPA7=&iPSrvPP7=0&sPSrvSN8=&sPSrvPTCL8=---&iPSrvGP8=0&sPSrvPA8=&iPSrvPP8=0&sPSrvSN9=&sPSrvPTCL9=---&iPSrvGP9=0&sPSrvPA9=&iPSrvPP9=0&sPSrvSN10=&sPSrvPTCL10=---&iPSrvGP10=0&sPSrvPA10=&iPSrvPP10=0&submit=++OK++
Ik heb er deze (voorbeeld)data instaan:

tcp 3389 -> 192.168.1.150:3389
tcp 3390 -> 192.168.1.151:3389
tcp 4662 -> 192.168.1.150:4662
udp 4672 -> 192.168.1.150:4672

Succes ermee!

Verwijderd

Topicstarter
Thanx voor de reply's _/-\o_
Ik vind het een abitieus project en vraag me af of hoe ver je er mee gaat komen.
Je moet toch wat doen voor je stage :P
Pagina: 1