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 _________________________________________________________________ Its tax season, make sure to follow these few simple tips http://articles.moneycentral.msn.com/Taxes/PreparationTips/PreparationTips.aspx?icid=HMMartagline