Hallo, ich habe eine Funtion in Visual C++ geschrieben, die eine Webaddress (z.B. Google, Amazon_, redit, ...) anpingt. Sollte der Ping erfolgreich sein, dann weiss ich, dass eine Internetverbindung steht. Meine Frage dazu: Ist es möglich, diesen Ping durch die Windows Netzwerkeinstellungen so 'umzubiegen', dass (trotz fehlendem Internets) der Ping erfolgreich ist ? Was dann natürlich meine Funktion sabotieren würde ... Ich hoffe die Frage ist verständlich formuliert. Falls nicht bitte nachfragen. Gruß Peter
Peter schrieb: > Ist es möglich, diesen Ping durch die Windows > Netzwerkeinstellungen so 'umzubiegen', dass (trotz fehlendem Internets) > der Ping erfolgreich ist ? Schreib den Hostnamen des Ziels in c:\windows\system32\drivers\etc\hosts rein, mit IP 127.0.0.1.
Machst du eine DNS Abfrage? Dann würde ich die Domain in der resolv.conf auf localhost umbiegen, der antwortet immer ☺️ Aber was bringt dir das? Verbinde dich doch direkt mit deinem Server, dann siehst du ob der PC online ist und kannst gleich deine Nutzdaten holen.
Falls es eine feste IP ist, könntest du die dir z.B. einfach selber vergeben.
Andre schrieb: > Verbinde dich doch direkt mit deinem Server, +1. Andersherum kann es auch sein, dass zwar Ping geblockt wird, aber HTTP-Verbindungen problemlos funktionieren, ggfs. über einen Proxy. Also: Teste das, was du auch verwenden willst. Oder frag einfach direkt dein Windows, ob es meint dass "Internet da ist". https://docs.microsoft.com/en-us/uwp/api/Windows.Networking.Connectivity.NetworkInformation
1 | NetworkInformation.GetInternetConnectionProfile().GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess |
:
Bearbeitet durch User
Der TO fragt, ob ein Kunde von ihm seine SW austricksen kann! Gruss Chregu
Christian M. schrieb: > Der TO fragt, ob ein Kunde von ihm seine SW austricksen kann! Ah, Lizenzmanagement per DNS. "ping <seriennummer>.meinProdukt.meineFirma.de" -> geht: Produkt ist aktiviert.
Ich glaube nicht das es Lizenzmanagement ist, ich vermute eher das er zu Testzwecken o. als Abfang-Fehler den Aufruf einer API prüfen will. Oder er wirklich mit einer Standard-Webseite prüft ob eine Internet-Verbindung besteht. Dazu würde ich aber einfach ein freien DNS-Server z.b. den von Google anpingen. ping 8.8.8.8 Das ist viel sicherer. Und nebenbei legaler.
Die ursprüngliche Frage ist beantwortet. Der Rest ist Kaffeesatzlesen, weil der TO eine spezielle Frage gestellt hat, ohne eigentliche Aufgabe zu nennen.
Hallo, bei einem privat PC mag ein PING ins Internet funktionieren. In einem großen Firmennetzwerk ist es fraglich, ob man einen PING von einem 0815 PC überhaupt durch die Firewall läßt. Grund ist einfach: Selbst über PINGs können sensible Daten nach aussen gelangen. Grundsätzliche Aktionen auf dem PC direkt wurden ja oben von Anderen schon aufgeführt.
Wenn Du wissen willst, ob google erreichbar ist, schreib eine Funktion, die ein https://www.google.de macht und auf die Antwort "200" vom Server wartet. Das wäre möglicherweise sinnvoller. Leider läßt Du Dich ja nicht darüber aus, was mit "Internet verbunden/nicht verbunden" dann passiert. Und ausserdem ist fraglich, ob Deinem Programm über Firewall / Windows Firewall überhaupt erlaubt wird, direkt eine Internet Verbindung aufzubauen. Dem Programm "Peter.EXE" erlaube ich einfach keine Internetverbindung und der Fall ist erledigt. Bei einem Einzel-PC über die Windows-Firewall - im Unternehmen über Gruppenrichtlinien.
Erstmal Danke für die Antworten. Andre schrieb: > Machst du eine DNS Abfrage? Ob Internet vorhanden ist oder nicht versuche ich mit WSAStartup() und GetAddressInfoA() festzustellen. Danach gehts mit InternetOpenA(), InternetOpenUrlA() und InternetReadFile() weiter(). Hiermit lese ich dann aus eier Webseite ein paar Daten aus. Εrnst B. schrieb: > Also: Teste das, was du auch verwenden willst. Das geht leider nicht, weil es sein kann, dass die Webseite, aus der ich die Daten auslesen möcte, nicht Online ist. Und die Software soll dann trotzdem laufen. Εrnst B. schrieb: > Ah, Lizenzmanagement per DNS. Ja. Die Validierung der Lizenz soll so funktionieren, dass die Software auch dann noch läuft, wenn es die Firma vlt. gar nicht mehr gibt. Das stell ich dadurch sicher, dass es keine positive sondern eine negative Validierung der Lizenz geben soll. D.h., der Lizenzschlüssel muss nicht durch die Webseite als richtig erkannt werden. Es soll so sein, dass, wenn ich Missbrauch feststelle, ich dann einfach den Lizenzschlüssel auf der Webseite hinterlege und die Software diesen Lizenzschlüssel auslesen kann. Bei Vorhanden sein des Schlüssels, wird der Betrieb eingestellt. Ist der Schlüssel nicht vorhanden, oder exitiert die Webseite vlt. garnicht mehr, dann läuft die Software weiter. Das Ganze kann man nat. einfach aushebeln, indem man den Internetzugang sperrt. Und das gilt es dann eben zu vermeiden. D.h. ich muss feststellen, ob eine Internetverbindung vorhanden ist, bevor ich die Validierung starten kann. Gruß Peter
Peter schrieb: > Die Validierung der Lizenz soll so funktionieren, dass die Software auch > dann noch läuft, wenn es die Firma vlt. gar nicht mehr gibt. > Das stell ich dadurch sicher, dass es keine positive sondern eine > negative Validierung der Lizenz geben soll. Das ist löblich. > Das Ganze kann man nat. einfach aushebeln, indem man den Internetzugang > sperrt. Und das gilt es dann eben zu vermeiden. D.h. ich muss > feststellen, ob eine Internetverbindung vorhanden ist, bevor ich die > Validierung starten kann. Dann nimm aber bei jedem Test irgendwelche zufälligen/verschiedenen Adressen. Wenn du immer die gleiche nimmst findet man das per Wireshark schnell raus und sperrt halt nur die. Und Achtung: Auch ein Google oder 8.8.8.8 muss nicht ewig erreichbar sein.
Peter schrieb: > Das Ganze kann man nat. einfach aushebeln, indem man den Internetzugang > sperrt. Und das gilt es dann eben zu vermeiden. D.h. ich muss > feststellen, ob eine Internetverbindung vorhanden ist, bevor ich die > Validierung starten kann. Die meisten Firmen mit etwas security Bewusstsein werden Software per default nicht einfach nach außen kommunizieren lassen. Kommunikation umbiegen ist trivial. Besonders mit ordentlichen Routern und ähnlicher software/hw
Peter schrieb: > Die Validierung der Lizenz soll so funktionieren Einfach nur lächerlich. Wahrscheinlich ist das so eine Popel-Software, die kaum über 100 Installationen rauskommt.
> D.h. ich muss feststellen, ob eine Internetverbindung vorhanden ist
Nein, du musst feststellen, ob sich dein Programm wirklich mit deinem
Server verbunden hat.
Ist ein Standardproblem, das mit Verschlüsselung gelöst wird. Na ja,
bisher würde jeder Mechanismus umgangen. Aber die Verfahren der
Computerspielindustrie dürften gut genug sein.
Einfach mal auf den Seiten der Release Groups nachschauen, wie man das
macht.
Mach es wie jede gute Software. NICHT so ein Mist wie MS. Vergib eine Serien-Nr. Bei der Installation wird die S-Nr. geprüft. Um das Problem mit der OFFLINE-Freischaltung zu umgehen, berechne einfach einen Freischaltcode via WWW für die Software. Dies kann man ganz einfach machen. Dabei wird ein Zähler in einer Datenbank hinterlegt. Und das war's. Prg. Startet. User gibt Serien-Nr. ein, Web-Code wird errechnet (bisschen mit Datum/Zeit spielen dabei). User ruft www auf, gibt Serien-Nr + Web-Code ein und erhält Freischaltcode. Das ganze selbstverständlich auch Automatisch wenn der Aufruf kein Internet zulässt. Danach gibt der User den Code von der Webseite ein. Und alles ist gut. Über die Web-Seite entscheidest du wie oft die S-Nr. aktiviert wird. Solange der Rechner läuft ist alles gut. Wenn eine Neu-Installation erforderlich ist , geht das Spiel von vorne los. Ist die Web-Seite down läuft die Software auf DEN Rechner bis zum ..... ;) Aber eine Neu-Installation ist nicht mehr möglich. Pech gehabt halt. Etwas Verlust ist immer. ;) Wobei das Risiko das die Web-Seite nicht läuft gering ist, da der Pflege-Aufwand ebenfalls sehr gering ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.