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.
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.