2010-03-05 9 views
6

Für meine MFC/C++ unmanaged zeitlich begrenzte Software braucht ich einen GMT/UTC Zeitstempel aus dem Internet (anstatt sich auf die PC-Uhrzeit zu verlassen, die leicht geändert werden kann).Uhrzeit aus dem Internet abrufen (PC-Uhr umgehen)?

Ich bereits über Parsing der Linie "Aktuelle UTC" ... Linie von http://www.timeanddate.com/worldclock/ (Ich denke, Port 80 ist eher offen als andere), aber ich weiß nicht, wie zuverlässig diese URL ist ...

Bitte teilen Sie mir Ihre Vor-/Nachteile oder andere Ideen zu diesem Thema.

Danke.

+0

Was passiert, wenn die Person den Zugriff auf das Internet für Ihre App mit ihrer Software-Firewall blockiert? – Joe

+2

und Hacker kann Software schreiben, um Service mit der Zeit zu emulieren – Andrey

+2

Yep, ein einfacher Eintrag in/etc/hosts um Anfragen an timeanddate.com zu einem Server unter meiner Kontrolle umzuleiten, die ich konfiguriere, um zu jeder Zeit zurückzukehren, würde ich die PC-Uhr geändert haben zu. Job erledigt. –

Antwort

3

Sieht machbar aus und das ist weit verbreitet.

Scraping von timeanddate.com kann brechen, wenn die Website beschließt, den HTML-Code zu ändern. Schon eine kleine Änderung im HTML kann Ihren Scraper zerstören.

Ich würde vorschlagen, dass Sie einen Webservice wie earthtools verwenden. Sie müssen die notwendigen Argumente (Breitengrad und Längengrad usw.) in der URL übergeben und die Antwort ist XML, die Sie leicht analysieren können.

+0

Das ist sehr cool! Ich wusste nicht, dass es sich um Eistools handelt. da ich nach UTC suche, wäre es für mich ausreichend, 0,0 für long/lat zu geben, und das Parsen von XML ist einfach. Aber wie zuverlässig ist dieser Service? Woher weiß ich, dass diese URL nicht zeitweise unterbrochen wird? – AVIDeveloper

+0

(*) Es sagt, ich brauche 15 Rufpunkte, um Ihre Stimme zu erhöhen .. so würde ich, wenn ich könnte .. Danke. – AVIDeveloper

+0

Sieht aus wie earthtools auf diesen Link verschoben http://new.earthtools.org/webservices.htm –

7

Verwenden Sie ein SNTP (Simple Network Time Protocol), um die Zeit von einer Internet-Atomuhr zu erhalten.

Es gibt ein paar Bibliotheken im Internet - here's one for MFC on codeproject.

+0

Danke, ich kenne SNTP, aber ich dachte, dass Port 80 weniger blockiert wird als Port 123. Deshalb habe ich eine Port 80-Lösung angestrebt. Wie auch immer, ich werde es versuchen. Vielen Dank. – AVIDeveloper

1

Machen Sie Ihr Programm besser, anstatt Zeit damit zu verschwenden, es zu schützen. Jeder Schutz, den Sie tun können, wird leicht umgangen. Wenn Sie darauf bestehen, können Sie die Software auf Ihrem Server ausführen, da dies die einzige Möglichkeit ist, solche Beschränkungen zu erzwingen.

+0

Danke, aber ich kann es nicht auf dem Server ausführen. – AVIDeveloper

+1

Was ist, wenn es nicht zum Schutz ist? Was ist, wenn jemand Programme für ein Gerät erstellen möchte (z. B. Raspberry PI), das keine interne Uhr hat, aber Internetzugang hat? Ja, ich verstehe, dass das hier nicht der Fall ist. Aber wir sollten auch an die andere Seite denken. – akaltar

0

Hmmm. Interessant. Sie versuchen grundsätzlich, das Internet als Dongle zu verwenden.

Wenn Sie wirklich diese Art von "Schutz" über Ihre Software benötigen, sollten Sie vielleicht erwägen, einen echten Dongle mit einer Echtzeituhr darin zu bekommen, wie HASP. Natürlich wird jede Lösung für einen anständigen Hacker mit einem Disassembler trivial sein.

Generell denke ich, es ist besser, Ihre Software zu öffnen und zu versuchen, von Fixes, Mods und Support zu leben.

+0

Danke, aber ein Dongle ist ein Overkill. Ich möchte, dass einige Daten geschützt werden, ich möchte sie so gut wie möglich durch Software schützen, aber es wird kein Desaster sein, wenn ich es nicht schaffen werde. Ich versuche dies zu tun, um meinen Programmierhorizont zu erweitern. – AVIDeveloper

1

Nun, zum Schluss: Meine App enthält eine Offline-Datenbank, die einmal täglich aus dem Intranet aktualisiert wird.
Ich würde gerne diese Datenbank vernichten, wenn sie nicht über eine Woche aktualisiert wurde und deshalb möchte ich versuchen, die Möglichkeit zu reduzieren, dass jemand die PC-Uhr einfach rückwärts ändert.
Ich bin mir der Tatsache bewusst, dass es Power-User gibt, die meine App davon abhalten können, Internetzeit auf 20 verschiedene Arten zu bekommen, aber ich versuche, das Beste aus Software zu machen (eine Hardware-Lösung, zB ein Dongle, ist ein Overkill für mich).

Da ich eine port 80-Lösung haben möchte, werde ich codaddict's Lösung (earthtools) übernehmen und werde sonst die PC-Uhr probieren.

Danke für alle Antworten!

0

Die Antwort in Frage legt ... Zum https://www.timeanddate.com/ und suchen Sie nach „API“, werden Sie diese Seite finden: https://www.timeanddate.com/services/api/ Detaillierte Anleitungen: https://services.timeanddate.com/api/packages/time.html ihre API verwenden Sie eine Anfrage senden und eine XML oder JSON erhalten Antwort.Es kostet Sie $ 150 pro Jahr, aber das ist die professionelle Art und Weise, es zu tun, und da Sie Geld für Ihre Software berechnen wollen, macht es Sinn.

+0

Jedes Mal, wenn Sie eine kostenpflichtige Lösung empfehlen, müssen Sie angeben, ob Sie mit diesem Produkt verbunden sind. –

+0

Ich habe sie gerade im Internet gefunden, also ist die Antwort NEIN. Ich bin nicht. Ich habe sie noch nicht ausprobiert und wir planen es zu versuchen. –

+0

Ich schrieb nirgendwo, dass ich Geld für meine Software berechnen möchte, und ich stelle keine Fragen auf der Suche nach einer Lösung von Drittanbietern. Die Antwort, die Sie auf den Frage-Thread geschrieben haben, war viel besser und auf den Punkt (nicht dass die Software mehr existiert). – AVIDeveloper