Need Help on a Date Encryption Algorithm - Programmers Heaven

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

# Need Help on a Date Encryption Algorithm

Posts: 4Member
Hello!
My friend wrote a program that is "Expire-Ware",
i.e. this program expires after 30 days and refuses to run.
The bad thing about this is that this program STORES something into the registry when it expires,
so a reinstallation does not patch the date check.
Its a very good prog(some Shell integration to quickly navigate
through a lot of folders).
So i thought by myself, "What about cracking this prog?", and tracked
the timeout back into the registry, with a value named "InstallDate" and a 5 to 10 digit number. I tried some days by changing
the system date, this value is non-linear, seems to be some professional Algorithm.
does anyone of you have an idea about such a Date encryption Algorithm?

Thank you in Advance
MacMurks

• Posts: 33Member
: Hello!
: My friend wrote a program that is "Expire-Ware",
: i.e. this program expires after 30 days and refuses to run.
: The bad thing about this is that this program STORES something into the registry when it expires,
: so a reinstallation does not patch the date check.
: Its a very good prog(some Shell integration to quickly navigate
: through a lot of folders).
: So i thought by myself, "What about cracking this prog?", and tracked
: the timeout back into the registry, with a value named "InstallDate" and a 5 to 10 digit number. I tried some days by changing
: the system date, this value is non-linear, seems to be some professional Algorithm.
: does anyone of you have an idea about such a Date encryption Algorithm?
:
: Thank you in Advance
: MacMurks
:

Well there can be any-number of such invertible tranformations,
for a n-digit number the number of such transformations is surprisingly
close to s = (n^n)! where ^ = power, != factorial.Having said that , the program could be using a simple mod encryption, but this is just one
possibility .If it is using a mod encryption, then probably there is
a constant or variable k, which is added to the time.If k is variable
then it could be dependent on time again,so unless you are aware of
some standard techniques that are employed, the possibilities are too many to consider.However,you could try to break the code systematically,
because out of the s possibilities some possibilities will have t
transformations common.If you happen to stumble upon just one combination which works for that value of time then you have broken the
code, to an extent, at least ,but it might just take forbiddingly
too much of your time , and effort and it may just be easier to register the software, but then again if you do come up with a general
private-key hacking solution, you could break into virtually any
private encryption system,cause you have the routine to generate the
necessary permutations anyway, which is why most password encryption
routines are not invertible, but that again has it's pitfalls.So this
does appear to be a no-win situation for anybody, unless n is sizeable,
in which case it might take too much computation time.
Forgive me,if I sound too pessimistic,and have'nt really answered the
question with a master-key solution.
• Posts: 4Member
[b][red]This message was edited by MacMurks1482 at 2002-11-10 0:47:9[/red][/b][hr]
Okay, here it is...

Key /Value

InstallDate 2452587
InstallDateKey 928109
LastRunDate 2452589

now the Values:

InstallDate (here:2002-11-08)
LastRunDate (here:2002-11-10)

I suppose both to be "linear" around some YearMonthDay formula, havent
tried much other dates to trace the formula

InstallDateKey (here:2002-11-08)
Installation date ENCRYPTED

So here the way the app checks the date:

"Today" is transformed into a value of this stuff
and compared to LastRunDate
If mismatch:ShareWare Dialog, calc&write NEW LastRunDate

LastRunDate is compared to InstallDate
if less:Error! ("Very first run" before installation!! ;-) )

InstallDate is "encrypted" and compared to InstallDateKey
if mismatch:Error!

This seems to be all!

So im not looking for an algo to encrypt some DATE,
but to encrypt an ENCRYPTED DATE!!! ;-)

Hoping someone can help me
Mac

• Posts: 33Member
: [b][red]This message was edited by MacMurks1482 at 2002-11-10 0:47:9[/red][/b][hr]
: Okay, here it is...
:
: Key /Value
:
: InstallDate 2452587
: InstallDateKey 928109
: LastRunDate 2452589
:
: now the Values:
:
: InstallDate (here:2002-11-08)
: LastRunDate (here:2002-11-10)
:
: I suppose both to be "linear" around some YearMonthDay formula, havent
: tried much other dates to trace the formula
:
: InstallDateKey (here:2002-11-08)
: Installation date ENCRYPTED
:
: So here the way the app checks the date:
:
: "Today" is transformed into a value of this stuff
: and compared to LastRunDate
: If mismatch:ShareWare Dialog, calc&write NEW LastRunDate
:
: LastRunDate is compared to InstallDate
: if less:Error! ("Very first run" before installation!! ;-) )
:
: InstallDate is "encrypted" and compared to InstallDateKey
: if mismatch:Error!
:
:
: This seems to be all!
:
: So im not looking for an algo to encrypt some DATE,
: but to encrypt an ENCRYPTED DATE!!! ;-)
:
: Hoping someone can help me
: Mac
:

Here

InstallDate is "encrypted" and compared to InstallDateKey
if mismatch:Error!

what you probably mean is, both install date and last run date are
considered for encryption, something like:

if (encrypt(installdate,lastrundate) > dateinstallkey)
return END_OF_TRIAL;

where encrypt() could be something like
f(installdate + (lastrundate - installdate)).

It is this f which I was talking about, because again you can define
any number of transformaions for f,but fewer then I said because ,the
> sign or < sign is probably involved in the comparison rather than
the == sign.
• Posts: 33Member
: Hello!
: My friend wrote a program that is "Expire-Ware",
: i.e. this program expires after 30 days and refuses to run.
: The bad thing about this is that this program STORES something into the registry when it expires,
: so a reinstallation does not patch the date check.
: Its a very good prog(some Shell integration to quickly navigate
: through a lot of folders).
: So i thought by myself, "What about cracking this prog?", and tracked
: the timeout back into the registry, with a value named "InstallDate" and a 5 to 10 digit number. I tried some days by changing
: the system date, this value is non-linear, seems to be some professional Algorithm.
: does anyone of you have an idea about such a Date encryption Algorithm?

Probably the only way to fool this system is to manipulate the last-run
date or basically ensure that computer always returns an early
last-run date, which means overriding the function which basiclly
invokes or returns the system time.
:
: Thank you in Advance
: MacMurks
:

• Posts: 33Member
Probably the only way to fool this system is to manipulate the last-run
date or basically ensure that computer always returns an early
last-run date, which means overriding the function which basiclly
invokes or returns the system time.

• Posts: 198Member
[b][red]This message was edited by kor at 2002-11-19 14:42:17[/red][/b][hr]
: Probably the only way to fool this system is to manipulate the last-run
: date or basically ensure that computer always returns an early
: last-run date, which means overriding the function which basiclly
: invokes or returns the system time.
:
:
You could just delete the registry keys, increase the current system date to something in 3000, reinstall, and reset the date to the current date, and, unless the program checks to see if today is before the install date, you'll have no problems.

Erm... I missed the part of the post that said this is impossible. You could use repeated installs via the previous method and generate a list of dates and codes. From that information, you could write a batch file to update the registry every time you try to run and it has expired.
• Posts: 4Member
SO!
Thats all for now!
I genereted a list of those "Eval2" Values for about 25 days
and did following:
1) Checked WHERE the program writes its initial values:
AT INSTALLATION TIME
2) Downloaded some InstallShield Script Decompiler and ran it
over the Installation Script->Source Code!
3) Analysed this source code to find out how the script
calculates the Date Value
This is Status Quo.
The last operation the script does is
x = x MOD [some HEX number]
the step before looks like(in BASIC)
Select case x mod 2
case 0
x = ThisOne
case 1
x = TheOtherOne
end select
i.e. even values are processed
different from odd ones.
this is the end of my analysis for now.
im glad to be a hacka!
if anyone is interested in a MPMAN F60 Manager
WITHOUT COPY PROTECTION, just tell me!

Greetz MAC