Forum: PC-Programmierung Frage an die Netzwerker unter Euch


von Peter (Gast)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von Andre (Gast)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

Falls es eine feste IP ist, könntest du die dir z.B. einfach selber 
vergeben.

von Εrnst B. (ernst)


Lesenswert?

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
von Christian M. (christian_m280)


Lesenswert?

Der TO fragt, ob ein Kunde von ihm seine SW austricksen kann!

Gruss Chregu

von Εrnst B. (ernst)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

Die ursprüngliche Frage ist beantwortet. Der Rest ist Kaffeesatzlesen, 
weil der TO eine spezielle Frage gestellt hat, ohne eigentliche Aufgabe 
zu nennen.

von ex-Netzwerker (Gast)


Lesenswert?

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.

von ex-Netzwerker (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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

von Reinhard S. (rezz)


Lesenswert?

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.

von meckerziege (Gast)


Lesenswert?

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

von Experte (Gast)


Lesenswert?

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.

von Der Opa aus der Muppet Show (Gast)


Lesenswert?

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

von Schlaumaier (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.