Internet IP Addresse des Routers rausfinden



  • Luckie schrieb:

    IP-Adresses von welchem Router? Es gibt millionen im Internet und selbst in lokalen Netzwerken kann es mehrere geben. Oder meinst du die IP-Adresse des Standardgateways?

    er meint wohl die externe IP des Routers, ueber den sein aktueller PC grad ins Internet geht



  • Die einfachste und schnellste methode:
    Schick doch einfach ein http header request an irgendeine domain, parse die Antwort und Du hast deine Absenderaddy,...

    grüüüße



  • zeusosc schrieb:

    Schick doch einfach ein http header request an irgendeine domain, parse die Antwort und Du hast deine Absenderaddy,...

    Seit wann steht denn die IP in einer HTTP-Antwort?



  • hmm painlich,.. hast ja recht, hatte wohl meinen kopf woanders,...

    🙄



  • Voraussetzung ist erstmal, dass die Kiste bereits eine funktionierende Verbindung nach draußen hat. Dann wäre es wohl das einfachste irgendwo ein cgi-Skript zu hinterlegen, das die Remoteadresse ausgibt. Könntest Du dann mit Deinem Programm übers Internet aufrufen und auslesen. In PHP habe ich hier so eins liegen, falls Du sehen willst, was ich meine:
    http://public.pferdeplan.de/ipinfo.php

    Das geht aber sicher auch irgendwie komplizierter und dann vielleicht ohne externen Server. Ich kenne mich nicht so in den Protokollen aus.



  • Ich hab da was,
    manche router unterstützen ja Upnp:
    der Request:

    POST /WANIPConnection HTTP/1.1
    HOST: 192.168.1.1:80
    CONTENT-LENGTH: 295
    CONTENT-TYPE: text/xml; charset="utf-8"
    SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress"
    
    <?xml version="1.0"?>
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
    <u:GetExternalIPAddress xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
    </u:GetExternalIPAddress>
    </s:Body>
    </s:Envelope>
    

    der Response:

    HTTP/1.1 200 OK
    CONTENT-LENGTH:343
    CONTENT-TYPE:text/xml
    EXT:
    SERVER:Nucleus/1.13.20 UPnP/1.0 RP614v2/5.14 RC1
    
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body>
    <u:GetExternalIPAddressResponse  xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
    <NewExternalIPAddress>192.168.0.5
    </NewExternalIPAddress>
    </u:GetExternalIPAddressResponse>
    </s:Body> </s:Envelope>
    

    unter NewExternalIPAddress findest Du dann deine gesuchte IP,..

    sei gegrüßt (und wireshark sei dank 🙂 )



  • Ich denke, dass Folgendes, welches ich gerade für dich geschrieben habe, das ist, was du ursprünglich wolltest:

    #include <windows.h>
    #include <wininet.h>
    #include <stdio.h>
    #pragma comment(lib, "wininet.lib")
    
    int GetWANIP(char *pIp) {
    	DWORD dwRead;
    	char szBuffer[512];
    	HINTERNET hINet, hFile;	
    	hINet = InternetOpen("ZEiT", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    	if(!hINet) {
    		pIp = "0.0.0.0";
    		return 1;
    	}
    	hFile = InternetOpenUrl(hINet, "http://checkip.dyndns.org", NULL, 0, 0, 0);
    	if(hFile) {
    		InternetReadFile(hFile, szBuffer, sizeof(szBuffer) - 1, &dwRead);
    		sscanf(szBuffer, "<html><head><title>Current IP Check</title></head><body>Current IP Address: %[^<]", pIp);
    	}
    	else {
    		pIp = "0.0.0.0";
    		InternetCloseHandle(hINet);
    		return 1;
    	}
    	InternetCloseHandle(hFile);
    	InternetCloseHandle(hINet);
    	return 0;
    }
    
    int main(void) {
    	char szIp[16];
    	char *szFormat = "Your IP is %s.";
    	__asm {
    		lea ebx, [szIp]
    		push ebx
    		call GetWANIP
    		add esp, 4
    		push ebx
    		push [szFormat]
    		call printf
    		add esp, 8
    		call getchar
    		xor eax, eax
    		pop edi
    		pop esi
    		pop ebx
    		add esp, 54
    		leave
    		retn
    	}
    }
    


  • Ja genau das hab ich gemeint! Danke!

    Verstehe nur nicht warum du da den Assembler-Code reingemacht hast. Das ganze "normal" in C++ zu schreiben kostet jetzt so viel Performance auch nicht.



  • Alternativ gibts auch www.whatismyip.org
    edit: Am besten auf beides checken, falls eine der Seiten mal nicht erreichbar ist.



  • Aso, sonst kannst du auch SFML (www.sfml-dev.org) runterladen, da gibt's die Funktion sf::IPAddress::GetPublicAddress() , die unter Windows und Linux läuft und die IP-Adresse auch von www.whatismyip.org holt.


Anmelden zum Antworten