Datum abfragen / Lizenzschlüssel Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Dani99
Posts: 35
Joined: 13 Apr 2017, 03:08

Datum abfragen / Lizenzschlüssel

15 May 2017, 05:07

Hi Forum.

Ich möchte, dass mein Skript vor der Anzeige des GUI prüft, ob ein bestimmtes Datum erreicht wurde, um ggf. eine weitere Nutzung zu verweigern.
Es klappt aber einfach nicht.


Eigentlich müsste es mit einer einfachen Logik klappen:
if (A_Now > "15052017") {
msgbox "Lizenzfehler!"
return
}

Aber: Es klappt eben nicht - und darum meine Frage hier :)
Dani99
Posts: 35
Joined: 13 Apr 2017, 03:08

Re: Datum abfragen / Lizenzschlüssel

15 May 2017, 05:17

Habe es mit einer Lösugn aus dem Forum umgesetzt:
FormatTime, v_current_date, %current_date%, yyyyMMdd
FormatTime, v_max_date, %max_date%, yyyyMMdd
v_max_date := "20170514"
If (v_current_date >= v_max_date) {
msgbox "Lizenzfehler"
return
}

Aber könnte man ggf. über eine GUI Eingabe den Key überspringen?
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel

15 May 2017, 05:30

Versuch´s mal so (ungetestet):

Code: Select all

if (SubStr(A_Now, 1, 8) > 20170505)
{ 
    msgbox "Lizenzfehler!"
    return
}
BTW:
Du kannst Lizenzabfragen einbauen, so viele Du willst.
Wenn auch nur EINER dahinter kommt, dass das ganze in Wirklichkeit ein AHK Script ist,
ist der ganze Sommer vorbei.

Wer halbwegs etwas von Programmierung versteht oder jemanden kennt, der weiß, wo jemand wohnt, der einen Onkel hat, dessen Schwester jemanden kennt, der bei wem arbeitet, dessen Kollege die Telefonnummer eines Programmierers hat...
Der kriegt in Null Komma Nix raus, das es sich um ein "getürktes" Compilat handelt.

FÜr Otto Normal User ist ein solcher Schutz sicherlich ok und ich benutze solche Abfragen z.T. auch, da ich weiß, dass Leute, die meine Programme nutzen, zu wenig Ahnung vom PC und meist zu wenig Zeit haben, um die o.g. Person anzurufen, reicht ein solcher "Primitivschutz" sicherlich völlig aus.
Außerdem fängt mein Name nicht mit "Micro" an und ich muss mit meiner Software nicht Millionen verdienen.

Ich habe z.B. mal mit viel Hilfe aus dem Forum hier eine Dongleabfrage programmiert.
Das ganze funktioniert prima und ist auch im Einsatz, aber wehe, jemand gibt "Dongle" in eine Suchmaschine ein und landet dann hier... ^^ (kicher)


Gruß,

Gucky.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Datum abfragen / Lizenzschlüssel

15 May 2017, 05:39

Der haken ist, das du für jeden deiner potentiellen anwender eine "tages-aktuelle" version kompilieren müsstest, ansonsten würde der testzeitraum ja für jeden variieren, oder? Und da sich die kompilate, soweit ich mich erinnere, auch recht einfach dekompilieren lassen, wäre das versteckspiel eh etwas müßig.
Aber könnte man ggf. über eine GUI Eingabe den Key überspringen?
Mir ist nicht ganz klar wie du das meinst?
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel

15 May 2017, 05:56

Kleiner Tipp dazu (so hab ich es auch mal gemacht):

Ich habe einen Registry Schlüssel beim Programmstart erzeugt, nachdem ich geprüft habe, ob er nicht etwa schon vorhanden ist.
Dort wurde das Datum des 1. Programmstarts verschlüsselt abgelegt.
Damit habe ich dieses Datum, solange der User es nicht aus der Registry löscht.

Weitere Idee hierzu:
Du könntest das Erstellungsdatum Deiner EXE Datei abfragen und mit dem Datum aus dem Reg. Key vergleichen. Der 1. Start kann z.B. zeitlich nie vor dem Erstellen der Datei gewesen sein.

Dann habe ich geschaut, ob %A_NOW% - dieses Datum aus der Registry eine plausible Zahl ergibt. Negative Werte oder Werte (z.B.) größer als 30 (Tage Demolaufzeit) wurde mit einer Fehlermeldung beendet.
Alles, was zwischen 0 und 30 lag, wurde ausgewertet. War der Wert 0 (= Installationsdatum + 30 Tage), wurde eine Meldung ausgegeben.

Schau Dich mal hier im Forum um, was das Verschlüsseln angeht, da haben ein paar wirklich findige Köpfe sich Gedanken zu gemacht.
Außerdem gibt es eine Lizenzroutine, die ausgezeichnet funktioniert (arbeitet mit einem Freischaltcode).

Sorry, ich habe gerade den Link nicht hier, da ich meinen Browser neu installiert habe (und auch das Windows).
Wenn es Dich aber interessiert, schaue ich heut Abend mal zu hause nach und reiche es nach.


Gruß,

Gucky.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Datum abfragen / Lizenzschlüssel

15 May 2017, 23:33

Google: site:autohotkey.com license key create encrypted
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel  Topic is solved

16 May 2017, 17:08

Huhu zusammen,

DIESEN Beitrag meinte ich.

Das Ding klappt eigentlich recht ordentlich - Mit den o.g. Einschränkungen.
Weiß jemand, wie man Scripte decompiliert, ist der Schutz dahin.

Gruß,

Gucky.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Datum abfragen / Lizenzschlüssel

17 May 2017, 04:58

Gucky_87 wrote:Huhu zusammen,

DIESEN Beitrag meinte ich.

Das Ding klappt eigentlich recht ordentlich - Mit den o.g. Einschränkungen.
Weiß jemand, wie man Scripte decompiliert, ist der Schutz dahin.

Gruß,

Gucky.
Hier die, im von dir verlinkten thread, von Laszlo als optional genannte [CMDret.dll].
Alternativ geht wohl auch die weiterentwickelte StdoutToVar-variante aus dem forum.

Ob die ebenfalls aufgefundene [CMDret.ahk] genannte funktions-lib in einer mittelbaren beziehung dazu steht wissen nur die profis unter uns, und ich bins nicht.
Dani99
Posts: 35
Joined: 13 Apr 2017, 03:08

Re: Datum abfragen / Lizenzschlüssel

24 May 2017, 05:48

Vielen Dank für die wirklich grandiosen Antworten!
habe etwas gebraucht es umzusetzen.... Bin eben doch blond :)

Aber es hat mir geholfen und ich hab das Skript fertig. Der Weg von Gucky_87 hat geklappt :)
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel

13 Jun 2017, 09:32

Hihi...

Schön, dass es bei Dir klappt. Ich bastel damit auch gerade rum und es klappt noch gar nicht nicht so, wie ich das will. Blöder Bläh Zeh, blöder.... Lach
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Datum abfragen / Lizenzschlüssel

13 Jun 2017, 11:46

Wenn es eine online-anwendung ist, bzw diese eine online-anbindung voraussetzt (sowas gibts!) wäre eine abfrage gegen eine registrierte-user-"white list" auf Google-Drive eine weitere option. Wurde gerade erst [hier] von Gucky_87 selbst besprochen.
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel

14 Jun 2017, 02:12

Das wäre eine zusätzliche Option, stimmt. Gute Idee XD
Dani99
Posts: 35
Joined: 13 Apr 2017, 03:08

Re: Datum abfragen / Lizenzschlüssel

20 Jun 2017, 01:30

Meine Lösung sieht bisher so aus:

Code: Select all

		FormatTime, v_current_date, %current_date%, yyyyMMdd 
		FormatTime, v_max_date, %max_date%, yyyyMMdd 
			v_max_date := "20170715"
			If (v_current_date >= v_max_date) {
			MsgBox, 0, , Der Lizenzschlüssel Ihres Produktes ist abgelaufen., 5
				return
			}
Wie könnte man jetzt 2 Dinge einbauen:
a) 5 Tage bevor der Key ausläuft jedesmal eine Meldung "Key läuft ab in x Tagen" ?
b) Wie könnte man die Eingabe für bis zu 5 Tage nach Ablauf mittels eines Kennwortes ermöglichen?


Danke im Voraus
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel

20 Jun 2017, 03:04

Zu Punkt 1:

Grob, wie ich das mache:
1) Ich schreibe einen Registry Key, wenn das Programm zum 1. mal gestartet wird.
2) Dort wird das Datum dieses 1. Starts hinterlegt (verschlüsselt, wie auch immer)
3) Dieses Datum wird beim Programmstart abgefragt. Ist es nicht da, muss es der 1. Start sein.
4) Ich ziehe vom heutigen Tag dieses Datum ab und habe die Anzahl der Tage, die das Programm auf dem Rechner ist. Nun kann ich reagieren.

Sollte wirklich jemand so schlau sein, den Reg. Key zu löschen, frage ich sicherheitshalber noch das Datum der Programmdatei ab und/oder das einer Datei, die das Programm benötigt. Die Programmdatei (EXE) kann nicht vor dem Reg. Key erstellt worden sein. Geht einfach nicht XD

Es sei noch angemerkt:
Es muss kein Reg Key sein. Man könnte z.B. auch etwas an eine SQL DB senden, die online ist. Dann hast Du Gewissheit über das Rechnerdatum. Ein Rechner, der nicht online sein muss, kann auf jedes Datum eingestellt werden (zwinker).

Außerdem gibt es sogar Programme, die bei zeitlich begrenzten Lizenzen das PC Datum bei Start Deines Programms auf einen bestimmten Werts setzen, Dein Programm starten und das PC Datum dann wieder umstellen. Eine einmalige Abfrage ist daher recht einfach auszuschalten. Frage das Datum per Timer immer wieder mal ab oder beim Aufruf bestimmter Subs, um dem entgegenzuwirken.

Stelle Dir, wenn Du so etwas programmierst, immer die Frage:
Wie würde ich versuchen, DAS jetzt zu umgehen?
Was kann ich tun, um genau DAS zu verhindern.



Zu Punkt 2:
Das würde ich so nicht machen, denn wer bis zum Ablauftermin Dein Programm nicht gekauft hat, der wird sich auch 5 Tage danach wohl kaum dazu entschließen.
Außerdem: Wer das PW kennt, kann so die Laufzeit endlos machen. Einfach mit AHK ´ne kleine Exe schreiben, die Dein Programm startet und automatisch das PW jedesmal eingibt XD *zwinker*


P.S.:
Leider bietet AHK keinen wirklich wirksamen Schutz, da man JEDES Script decompilieren und damit jeglichen Schutz deaktivieren kann.
Dessen muss man sich halt bewusst sein.
Muss nur erst jemand dahinter kommen, dass ich mein Programm in AHK geschrieben habe... Die meisten "Cracker" rechnen mit C++ oder so ;)

Gruß,

Gucky.
Dani99
Posts: 35
Joined: 13 Apr 2017, 03:08

Re: Datum abfragen / Lizenzschlüssel

20 Jun 2017, 06:31

Die User die das Ding nutzen sind noch dümmer als ich :)
Das passt....
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Datum abfragen / Lizenzschlüssel

20 Jun 2017, 07:41

Mag sein. Bedenke aber, auch Deine User haben Internet, haben Kumpels, Bekannte und die wieder haben Freunde, die Kumpels haben, die Internet haben, etc. pp.
Und gerade die "dümmsten" wissen sich besonders, wenns was zu cracken gibt, IMMER zu helfen XD

Schau Dir mal an, wie es z.B. im richtig professionellen Bereich läuft.
Es kommt z.B. einen Neue Software, die per Dongle UND Lizenzcode geschützt wird, auf den Markt. Oft dauert es keine 24h, bis es Cracks gibt, die dann auch noch funktionieren.

Ok, so ein Programm für Videoschnitt, etc. ein Spiel oder so sind deutlich interessanter und weiter verbreitet, als Dein Programm vermutlich. Vielleicht schützt es Dich - ein wenig mehr - dass Dein Programm nicht für die breite Masse ist (nehme ich jetzt mal so an).

Außerdem:
Wenn Deine User wirklich so "dumm" sind, wie Du behauptest (was ich übrigens eine kleine Spur überheblich finde, aber alles ok), dann reicht es doch, einen Reg Key zu schreiben, in dem 0 oder 1 steht. Wenn man den gut versteckt, findet den so schnell keiner von denen. (zwinger und smile)

Gruß,

Gucky.
tm6464
Posts: 48
Joined: 17 Jul 2017, 22:56

Re: Datum abfragen / Lizenzschlüssel

21 Jul 2017, 04:24

Dani99 wrote:Meine Lösung sieht bisher so aus:

Code: Select all

		FormatTime, v_current_date, %current_date%, yyyyMMdd 
		FormatTime, v_max_date, %max_date%, yyyyMMdd 
			v_max_date := "20170715"
			If (v_current_date >= v_max_date) {
			MsgBox, 0, , Der Lizenzschlüssel Ihres Produktes ist abgelaufen., 5
				return
			}
das script klappt sehr gut , weiss jemand vll wie man das script so umschreibt das die zeit von einem timeserver und nicht direkt von windows abgefragt wird?
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Datum abfragen / Lizenzschlüssel

21 Jul 2017, 06:05

Es gibt so gut wie alles im forum. Einfach via google per "site" parameter suchen, dann findet man/frau auch sowas ...

Code: Select all

ie := ComObjCreate("InternetExplorer.Application")
ie.Navigate("www.timeanddate.com")
While (ie.busy || or ie.Readystate <> 4)
	Sleep 100
msgbox % ie.Document.getElementbyId("clk_hm").innertext ; 13:30
msgbox % ie.Document.getElementbyId("ij2").innertext	; 21. Jul 2017
ie.quit
... irgendwie geht das aber recht schleppend :shifty: :wtf:
https://www.google.de/search?q=site%3Aa ... timeserver

Das finde ich dann schon spannender ... OMG sinnigerweise liefert diese abfrage auch noch die differenz zw systemzeit und zeitserver (ntp) in sekunden :o

Code: Select all

RunWait, %ComSpec% /c w32tm /stripchart /computer:de.pool.ntp.org /dataonly /samples:1 | clip,, Hide
MsgBox % ClipBoard
... habe daraus dann doch gleich mal eine funktion gefrickelt :)
tm6464
Posts: 48
Joined: 17 Jul 2017, 22:56

Re: Datum abfragen / Lizenzschlüssel

21 Jul 2017, 18:36

Thx Bobo,
hab alle 3 Sachen getestet :D

Code: Select all

ie := ComObjCreate("InternetExplorer.Application")
ie.Navigate("www.timeanddate.com")
While (ie.busy || or ie.Readystate <> 4)
	Sleep 100
msgbox % ie.Document.getElementbyId("clk_hm").innertext ; 13:30
msgbox % ie.Document.getElementbyId("ij2").innertext	; 21. Jul 2017
ie.quit
Gibt bei mir die richtige Zeit aus oder eine leere msgbox , wie du sagtest schleppend :(

Code: Select all

RunWait, %ComSpec% /c w32tm /stripchart /computer:de.pool.ntp.org /dataonly /samples:1 | clip,, Hide
MsgBox % ClipBoard
Ist sehr schnell aber ,gibt bei mir leider die Systemzeit von windows aus , ändere ich zum Test in windows die Zeit auf 2018 gibt die msgbox auch 2018 aus.
Gleiches gilt für deine Funktion https://autohotkey.com/boards/viewtopic ... 10&t=34806

Hoffe du kannst es selbst nochmal testen
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Datum abfragen / Lizenzschlüssel

22 Jul 2017, 01:29

Daswärjamadoof. Was bleibt ist die gap-/differenz-option der funktion (doch das was du suchtest, oder?!).
Dabei wären dann lediglich die retournierten sekunden entsprechend umzurechnen.
https://ss64.com/nt/w32tm.html
Last edited by BoBo on 23 Jul 2017, 10:00, edited 1 time in total.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 30 guests