[AccessD] OT(kinda): Crack Code

Mark A Matte markamatte at hotmail.com
Fri Mar 23 09:00:28 CDT 2007


Thanks Marty,

I found that it is actually counting from UNIX time 1/1/1970 00:00:00 
UTC...which happens to be 12/31/1969 4:00:00 PM in my time zone.  it is a 36 
base counting system...and I had to shift my initial logic ove 2 spaces.  
You take the following and add all of the results to come up with a single 
number...this number is how many seconds have passed since your start time.

>> > 1st  Value*60466176
>> > 2nd  Value*1679616
>> > 3rd  Value*46656
>> > 4th  Value*1296
>> > 5th  Value*36
>> > 6th  Value

The last 2 are irrelevant when converting back to time...they are there for 
when more than 1 record is created in a single second.

Thanks again,

Mark A. Matte

>From: MartyConnelly <martyconnelly at shaw.ca>
>Reply-To: Access Developers discussion and problem 
>solving<accessd at databaseadvisors.com>
>To: Access Developers discussion and problem 
>solving<accessd at databaseadvisors.com>
>Subject: Re: [AccessD] OT(kinda): Crack Code
>Date: Thu, 22 Mar 2007 18:32:50 -0700
>
>  I played around with this last night and figured out it was based on
>some date in 1974
>with AM and PM being indicated by last two characters and first 6 as 
>seconds
>from the start date whatever that is, still  it seems a little out as to
>accuracy
>
>
>Here is some code I used from some old code, you want to switch
>to Base 36 and omit 0 will alter some counters
>
>Const hashFactor As Integer = 37
>Const hashLength As Integer = 9
>
>Function HashString(strHash As String) As Double
>' Create Hash string for indexing using
>'Base 37 Hash Value
>' Convert
>' spaces punctuation odd chars = 0
>' numeric = 0 - 9                1-10
>' alpha chars a-z A-Z            11-37
>' only use lower case
>'such that string "Ab-12" =
>'      A           b          -          1          2
>'  (11*37^4) + (12*37^3) + (0*37^2) + (2*37^1) + (3*37^0)
>'The Hash Length is 9 so it fits a double without precision loss
>
>Dim iStrLen As Integer
>Dim decAsc As Double
>Dim i As Integer
>Dim strPad As Integer
>Dim strToHash As String
>HashString = 0
>
>' convert to all lower case
>strToHash = UCase(strHash)
>iStrLen = Len(strToHash)
>
>'pad out string to 9 chars with blanks
>If iStrLen < hashLength Then
>  For strPad = (iStrLen + 1) To hashLength
>     strToHash = strToHash & " "
>  Next
>Else
>' or just grab first nine chars of string
>    If iStrLen > hashLength Then
>      strToHash = Left(strToHash, hashLength)
>    End If
>End If
>
>For i = 1 To hashLength
>   decAsc = Asc(Right(strToHash, i))
>   'convert all odd Ascii character values and punctuation to 0
>   If (decAsc < 48) Or (decAsc >= 58) And (decAsc <= 64) _
>      Or (decAsc > 91) Then
>     decAsc = 0
>   Else
>      'numbers
>     If (decAsc >= 48) And (decAsc <= 57) Then
>        decAsc = decAsc - 47
>      Else
>      'letters
>       If (decAsc >= 65) And (decAsc <= 91) Then
>          decAsc = decAsc - 54
>          ' 54 not 64 as want to start "A" as 11
>         End If
>      End If
>   End If
>
>   HashString = HashString + (decAsc * hashFactor ^ (i - 1))
>Next
>
>End Function
>
>Sub unhash()
>' H9WDH701
>Dim total As Double
>Dim mydate As Date
>Dim days As Double
>total = (2 * 37 ^ 0)
>Debug.Print total
>total = total + (0 * 37 ^ 1)
>Debug.Print total
>total = total + (7 * 37 ^ 2)
>Debug.Print total
>total = total + ((Asc("H") - 54) * 37 ^ 3)
>Debug.Print total
>total = total + ((Asc("D") - 54) * 37 ^ 4)
>Debug.Print total
>total = total + ((Asc("W") - 54) * 37 ^ 5)
>Debug.Print total
>total = total + (9 * 37 ^ 6)
>Debug.Print total
>total = total + ((Asc("H") - 54) * 37 ^ 7)
>Debug.Print total
>'mydate = total
>days = total / (3600# * 24# * 365#)
>Debug.Print "days=" & days
>End Sub
>Sub unhashA()
>' H9WDH701
>Dim total As Double
>Dim mydate As Date
>Dim days As Double
>total = (2 * 36 ^ 0)
>Debug.Print total
>total = total + (0 * 36 ^ 1)
>Debug.Print total
>total = total + (7 * 36 ^ 2)
>Debug.Print total
>total = total + ((Asc("H") - 55) * 36 ^ 3)
>Debug.Print total
>total = total + ((Asc("D") - 55) * 36 ^ 4)
>Debug.Print total
>total = total + ((Asc("W") - 55) * 36 ^ 5)
>Debug.Print total
>total = total + (9 * 36 ^ 6)
>Debug.Print total
>total = total + ((Asc("H") - 55) * 36 ^ 7)
>Debug.Print total
>'mydate = total
>days = total / (3600# * 24# * 365#)
>Debug.Print "days=" & days
>End Sub
>Sub unhashB()
>' H9WDH701 02/06/03 09:19:55 AM
>'days=33.1225264776763
>' 12/02/1974 10:45:12 PM
>Dim total As Double
>Dim mydate As Date
>Dim days As Double
>
>total = total + (7 * 36 ^ 0)
>Debug.Print total
>total = total + ((Asc("H") - 55) * 36 ^ 1)
>Debug.Print total
>total = total + ((Asc("D") - 55) * 36 ^ 2)
>Debug.Print total
>total = total + ((Asc("W") - 55) * 36 ^ 3)
>Debug.Print total
>total = total + (9 * 36 ^ 4)
>Debug.Print total
>total = total + ((Asc("H") - 55) * 36 ^ 5)
>Debug.Print total
>'mydate = total
>days = total / (3600# * 24# * 365#)
>Debug.Print "days=" & days
>Debug.Print DateAdd("s", -total, Now)
>End Sub
>
>Sub unhashC()
>'  H9WLA903=02/06/03 12:08:33 PM
>'12/02/1974 7:59:40 PM
>Dim total As Double
>Dim mydate As Date
>Dim days As Double
>
>total = total + (9 * 36 ^ 0)
>Debug.Print total
>total = total + ((Asc("A") - 55) * 36 ^ 1)
>Debug.Print total
>total = total + ((Asc("L") - 55) * 36 ^ 2)
>Debug.Print total
>total = total + ((Asc("W") - 55) * 36 ^ 3)
>Debug.Print total
>total = total + (9 * 36 ^ 4)
>Debug.Print total
>total = total + ((Asc("H") - 55) * 36 ^ 5)
>Debug.Print total
>'mydate = total
>days = total / (3600# * 24# * 365#)
>Debug.Print "days=" & days
>Debug.Print DateAdd("s", -total, Now)
>End Sub
>Sub test()
>Dim date1 As Date
>Dim date2 As Date
>date1 = #2/6/2003 12:08:33 PM#
>date2 = #2/6/2003 9:19:55 AM#
>
>Debug.Print DateDiff("s", date1, date2)
>date1 = #12/2/1974 7:59:40 PM#
>date2 = #12/2/1974 10:45:12 PM#
>
>Debug.Print DateDiff("s", date1, date2)
>End Sub
>
>Mark A Matte wrote:
>
> > Tha might be what the guy meant by 'shift a bit or 2'.
> >
> > I'm running frequency distribution on each char...and 7th char is 0
> > everytime except for 2 times out of 500K...
> >
> > Thanks for the 'shift'  I'll move all calcs over to spaces...and see
> > what I get.
> >
> > Thanks,
> >
> > Mark A. Matte
> >
> >
> >
> >> From: "Gary Kjos" <garykjos at gmail.com>
> >> Reply-To: Access Developers discussion and problem
> >> solving<accessd at databaseadvisors.com>
> >> To: "Access Developers discussion and problem
> >> solving"<accessd at databaseadvisors.com>
> >> Subject: Re: [AccessD] OT(kinda): Crack Code
> >> Date: Thu, 22 Mar 2007 13:57:32 -0500
> >>
> >> If you use that logic and you forget about the rightmost two positions
> >> - maybe an occurance number or something, you can get close....
> >> H = 1027924991 +
> >> 9 = 15116544
> >> W = 1492992
> >> D = 16848
> >> H = 612
> >> 7 = 7
> >> ---------------------
> >> 1044551995
> >>
> >> which translates to Thursday, February 06, 2003 11:19:55 AM
> >>
> >> 2 hours off?
> >>
> >> I haven't tried it for any others but that one seems pretty scary
> >> close for the first one I tried.
> >>
> >> For example in your first example. H9WDH701 = 02/06/03 09:19:55 = that
> >> translates to 1044523195 in UNIX time. According to the time
> >> calculators I googled.
> >>
> >> On 3/22/07, Mark A Matte <markamatte at hotmail.com> wrote:
> >> > Rocky,
> >> >
> >> > I've actually made some progress.  Last year I learned how to do
> >> Mayan Math
> >> > and applied the logic as a counting system not 10 or 20 base...but
> >> 36...and
> >> > after learning that this thing is counting seconds since 1/1/70
> >> 00:00:00...I
> >> > assigned values to the numbers and letters. and started running
> >> some tests.
> >> > 0=0,1=1,2=2...9=9,A=10,B=11...Z=35.
> >> >
> >> > This makes it a 36 base counting system...so you take the value of
> >> each
> >> > position...calculate and add like below:
> >> >
> >> > 1st  ???
> >> > 2nd  ???
> >> > 3rd  Value*60466176
> >> > 4th  Value*1679616
> >> > 5th  Value*46656
> >> > 6th  Value*1296
> >> > 7th  Value*36
> >> > 8th  Value
> >> >
> >> > So if you had 00bfk5t2...you math would be Value of third position
> >> > ('B'11*60466176) added to each position calculated...so:
> >> > 0's are 0...('B'11*60466176)
> >> > +('F'15*1679616)+('K'20*46656)+('5'5*1296)+('T'29*36)+('2'2)
> >> >
> >> > Beginning of time for this count is 12/31/69 04:00:00 PM...if you
> >> do the
> >> > calcs above you get 691262822...if you add this many seconds to the
> >> > beginning time you get 11/27/91 9:27:02 AM...
> >> >
> >> > Which validates in the system.  The guy I talked to that help
> >> create it over
> >> > 12 years ago...said he remembered something about haveing to 'shift
> >> a bit or
> >> > 2'...but I didn't get much more from him...he just didn't remember 
>the
> >> > specifics.  The 1st and 2nd positions I am having issues with...if
> >> I try to
> >> > calculate it out...I get crazy results...and also in the validation
> >> > tool...with the above example it validated...but if I added a
> >> > letter(00bfk5t2 changed to 0bbfk5t2)...just added value in second
> >> > position...it would not accept it as valid???  This is probably
> >> what he was
> >> > talking about"Shifting a bit or 2".
> >> >
> >> > Anyway...any thoughts?
> >> >
> >> > What info would your cousin need?
> >> >
> >> > Thanks,
> >> >
> >> > Mark A. Matte
> >> >
> >> >
> >
>
>--
>Marty Connelly
>Victoria, B.C.
>Canada
>
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com

_________________________________________________________________
It’s tax season, make sure to follow these few simple tips 
http://articles.moneycentral.msn.com/Taxes/PreparationTips/PreparationTips.aspx?icid=HMMartagline




More information about the AccessD mailing list