downloadbrowseastigmata's Bruteforceme#1_astigmata

Download bruteforceme#1_astigmata.zip, 30 kb (password: crackmes.de)
Browse contents of bruteforceme#1_astigmata.zip

Hi crackers,
this is my first crackme
I made it easy and with sources codes (54 lines, not packed)
sometimes bruteforce is required
that's why I want you try this one.
I want the good key and a working bruteforce

I hope you enjoy

astigmata

Difficulty: 2 - Needs a little brain (or luck)
Platform: Windows
Language: Assembler

Published: 24. Feb, 2006
Downloads: 1292

Rating

Votes: 10
Crackme is boring.

Rate this crackme:

Send a message to astigmata »

View profile of astigmata »

Solutions

Solution by andrewl.us, published 27. dec, 2008; download (340 kb), password: crackmes.de or browse.

andrewl.us has rated this crackme as awesome.

Submit your solution »

Discussion and comments

Dahaka
25. Feb 2006
holy smoke!
you should be running on some super computer to go over bruteforcing some pass phrase with 100000000 loop!
by 1583242846 possibility!
NexusC
25. Feb 2006
hehe, would have been easier if we knew what range of chars to use ;) since " " - "~" is kinda heavy but can't be excluded if u wanna have 100% accuracy..
HMX0101
25. Feb 2006
i think that loops can be made for separately...
astigmata
Author
25. Feb 2006
there are only numbers in the good key
1,2,3,4,5,6,7,8,9,0
for the size of the key, check the algo
:)
HMX0101
25. Feb 2006
i need a number that parsed by the algorithm of the crackme has equal to 0D5446474h ?
NexusC
25. Feb 2006
ok, thx :P that will reduce the needed time alot :P
astigmata
Author
25. Feb 2006
yes hmx0101, but you can't reverse it because you don't know value of ebx before the XOR
that's why it's called brutforceme :D

if you find without bruteforce, go buy a lottery ticket.
Rambo
25. Feb 2006
hmm.. if we can find the value of CL then we can make keygen ;) but i don't have time to math ;)
Rambo
25. Feb 2006
sorry. no keygen ,but brute algo
NexusC
25. Feb 2006
lol, this might take a few weeks depending on the starting number in the key xD
HMX0101
25. Feb 2006
that sounds easy :D
~raj
27. Feb 2006
Keycode is 8 digit no from 0000 0000 to 9999 9999.
For each number it loops for 1 0000 0000 (5F5E100) times.

for each iternation it takes around 70 seconds.

So total time reqquired for brute force method will be:

1 0000 0000 * 1 0000 0000 * 70
= 700000000000000000 sec
= 11666666666666666.67 min
= 194444444444444.44 hr
= 8101851851851.85 days
= 22196854388.63 yrs !!!!! ;^*)

What do you think ?
Rambo
27. Feb 2006
each iteration 70 sec ????
Kerberos
27. Feb 2006
~Raj: Whole serial check takes 5 seconds on my PDA so you really need new computer :)

And if you're calculations are right for your computer, then you need to wait (100000000 * 70) seconds until your serial code is checked in this CME ...
NexusC
27. Feb 2006
hehe, to know the starting number in the key would shorten the brute by a load of weeks on my comp ;)
astigmata
Author
27. Feb 2006
I say 3 years if you test every serial without found the correct one.
but you are 6000 here, if someone makes a good bruteforce (like SETI@home lol), with many ranges, you ll be able to defeat this level1 crackme
:D
~raj
28. Feb 2006
70 sec time taken was for checking 100 numbers in loop ;-( mistake there

So total time will some down by factor of 100
NexusC
01. Mar 2006
no matter how good brute u code i think ppl will skip this one coz it's just too time consuming to dedicate the computer resources for a lvl1 crackme ;) so a shorter key would have been better imho :)
costy
03. Mar 2006
is it possible to do a bruteforcer changing to source code?
astigmata
Author
04. Mar 2006
to do a bruteforce, you need to add a loop, that's all
ManSun
26. Mar 2006
Yes its very easy but...
1 cobmination / 1 second
8 digits password = 100000000 combinations = 100000000 sec = 1666666 min = 27777 hours = 1157 days = ~3,1 years :-D
Shism
27. Mar 2006
Instead of doing that use random brutefoce
phueghy
27. Mar 2006
But random BF does not increase the chance of finding the right key. And you have to make sure not to check some numbers twice.
It would be easier if we knew the first one or to digits though :-)
Shism
29. Mar 2006
It does increase the chance of finding the right key...
phueghy
29. Mar 2006
Why? The Chance of finding the right key is 1:100000000, no matter if you are searching randomly or linear. It could just as well be 500000004 as it could be 81640724.
Shism
29. Mar 2006
Why becuase chance you find the right key increases. Let's say the key is 17 chars long

So you go in a linear form testing each combination. That's the way you want to do it. So you go through every combination of chars from the 1 char long length to 17 char long length. RBF tests every combination of keys randomly.

So if lets say the key is 17 chars long, with linear bruteforce it would take forever, however the chances that a random bruteforce finds the key is much higher than linear bruteforce.

Lets say the key is ^KC*.&>)D_?F)+"F(D*
... So the chances of linear bf finding they key can be stated. An estimate can be made. However,on random bruteforce an estimate can't be made. There is no chance for random bruteforce. The chances of finding the right key are 100% for both. Bruteforcing the key gaurentes finding the right key. Bruteforcing will increase your chances.
Shism
29. Mar 2006
*Random bruteforcing will increase your chances of finding the right key
TDC[NL]
24. Apr 2006
hint: EBX must be 85AE3E6C in hex at 00401070 after the loop :) maybe some guy can now do it?
Ox87k
24. Apr 2006
ebx must be 85AE3E6C only if eax is 50EA5A18... or not?
BugHunter
24. Apr 2006
to be honest, you have a point there, i'm trying 2 figure it out but i'm sleepy and thinking is hard now ^^
BugHunter
24. Apr 2006
yes you are right 0x87k! sorry for my wrong post :-D
still trying to find a way to reverse hehe
BugHunter
24. Apr 2006
i made some comments on my bruter source code, check it out:

;EAX must be 0xD5446474 at the end
;let's say EAX = 0x52212755 and EBX = 0x87654321 (xor EAX with 0xD5446474)
;then before the encryption algo you need to have valid numbers in ASCII
;hmmm, so lets initialize the registers and let's try to bruteforce a
;valid alpha numeric serial

;so EAX = random hex number, EBX = xor 0xD5446474 with the random EAX
;then do the loop

;now check if EBX is ALPHA NUMERIC

maybe helps coding a bruter? i've coded one and it's now bruting :D
BugHunter
24. Apr 2006
tip: if you dont brute with a random value, then increase by one a value each loop, but begin with 0x0000FFFF because if you XOR a dword with something lower than 0x00010000 than the upper characters will NEVER be alpha numeric, you could even research/think more about it and code a good bruter
BugHunter
25. Apr 2006
any 1 tried yet?
SoN
25. Apr 2006
I wrote a working brute forcer but the moderator says that the algo can be modified to run quicker. I'm not quite sure how yet but I'm looking at it.
indomit
25. Apr 2006
TDC[NL], if ebx must be 85AE3E6C in hex at 00401070 after the loop, then when ecx=1000000-4, I cannot reverse this:
MOV CL,AL
RCR EAX,CL
if after it code EAX=73AC9313 and EBX=22D0B21F, then all be fine in 3 full loops ;) But that is the question: EAX=? before this two operations? It can be reversed for CL=(from 00 to FF)
indomit
25. Apr 2006
sorry... Last sentence: It can't be reversed...
costy
07. Jul 2008
@moderators
The possible keys are from 00000000 to 11111111. I made a keygen but I think that it will never find a solution becouse it takes a second to try a key. My bruteforcer is a self bruteforcer so i don't think it can be faster if i made another one.
I tested it for a while. It makes its job but it's impossible to find a serial becouse it's slow.
Can I send it as valid solution?
I think that the algo can't be reversed.
sd333221
07. Jul 2008
I will submit my solution in two years when my bruteforcer is done. Please wait xD
sd333221
07. Jul 2008
My current bruteforcer takes 300ms per try :-( Way too much
TiGa
07. Jul 2008
To be accepted, your bruteforcer has to find the serial in a reasonable amount of time.
sd333221
08. Jul 2008
I just see that "00000001" is also accepted as an input, so there are more combinations
costy
08. Jul 2008
Sorry I committed an error while writing "The possible keys are from 00000000 to 11111111". Infact their range is from 00000000 to 99999999.

@sd333221 what computer do you have? mine has got a 1000 Mhz processor. I take a second to trying a serial.
I selfbruted it.
saitob
08. Jul 2008
Off Topic:

Ohh costy, that's bad xD

Why do you not upgrade your computer? I mean, the parts cost nothing now a days. You can get a compleatly new and super fast computer for some hundred dollars.


On Topic:

Crackme looks interesting, but i'll wait for a solution.
sd333221
08. Jul 2008
Got a Dual Core 3 ghz
sd333221
08. Jul 2008
costy how do you change the numbers?
You have to change the strings.

I don't understand why it is not possible to just reverse the algorithm like that:
MOV EAX, 1; //LOOP
CONTINUE:
XCHG EBX,EDX
SUB EBX,0x11223344
SUB EBX,EDX
MOV CL,BL
RCL EBX,CL
DEC EAX;
JNE CONTINUE;

For me it works like for the first 2 steps, and then somehow the numbers are changing
costy
08. Jul 2008
@saitob
I'm poor :-(

@sd333221
about the computer
I'm poor :-(

about the selfgen...
In order to change the number...

At the program start

the string must be"00000000"
MOV DWORD PTR DS:[404000],30303030
MOV DWORD PTR DS:[404004],30303030
JMP faster.00401010 the start

each time it generates a new serial

MOV EAX,faster.00404000 mov the string in eax
INC BYTE PTR DS:[EAX] inc the first byte
CMP BYTE PTR DS:[EAX],3A byte must be in the range 30 - 39 (ascii 30 = number zero ascii 39 = number nine)
JNZ tothestartandtryit
MOV BYTE PTR DS:[EAX],30 if byte > hex39 ... byte = 30 (number zero in ascii)
INC EAX
JMP inc_the_next_byte


the selfgen tries
00000000
10000000
20000000
30000000
40000000
50000000
60000000
70000000
80000000
90000000
01000000
11000000
.....
19000000
02000000
....

Anyway I can send you the exe. If you want
HMX0101
08. Jul 2008
I'm bruting it over a Athlon 2ghz.. after 9hours it have made 1ABA5h checks... so some calcs with i've made:

9h-----1ABA5h
24h----x

x=(24*1ABA5h)/9=6AE94h

1 day = 6AE94h
2 day = D5D28h
3 day = 140BBCh
...
5888 days = 99AF4C00h /* aprox. 99999999h

1yr-----365days
x-------5888days

x=1yr*5888days/365days=16years

so, i think i'll leave this one :D good luck, guys ;)
costy
08. Jul 2008
@moderators

Could this crackme can considered impossible to solve?
And if it's impossible could be deleted??
p1nasIAT
19. Aug 2008
@costy
This is very possible to solve in a short time by brute-forcing. All you need to do is think out of the box, literally. I solved this one yesterday. I'll write a solution if I find the time, soon.
ARCHANGEL
20. Aug 2008
@p1nasIAT
It would be interesting to see the result of your bruting...
We'll wait.
andrewl.us
Moderator
20. Aug 2008
@p1nasIAT
I'm both skeptical and excited of your claim. Post or message me the DWORD :)
sd333221
28. Oct 2008
15 years and 36 days remaining until I got this one
Ox87k
28. Oct 2008
@sd333221:
AHAHAHAHAHA, LOL! :)
main
30. Oct 2008
Thanks p1nasIAT for the "out of the box" thinking, I may be on to something. Just have to learn some stuff first!

Tip:
You really have to think different.
Think of all the ways the components in your computer can do computing :)
main
30. Oct 2008
Too bad I don´t have the components needed to solve it :(
main
31. Oct 2008
If I don´t get the components I need, this will take at leat 1.5 year with my computer. Even if I use all of my computers this will take a bit over 180 days...

Of course... We could split this crackme up in parts? There are 818 (round = 800) downloads.... I have working bruteforcer, so if half of us = 400 goes from 99999999 to 00000000 and the other half does do opposite, then we could solve this in 1 min.


Like this:

Computer 1 starts from 0000 0000
Computer 2 starts from 0000 0000 + amount_of_work_done_by_one_computer * current_num_of_computers
...
Computer 401 starts from 9999 9999
Computer 402 starts from 9999 9999 - amount_of_work_done_by_one_computer * current_num_of_computers

If amount_of_work_done_by_one_computer is the amount of work a computer can do :), then we could solve this very fast.

There are 10^8 passwords to try. Each password takes (depending of implementation and computer), say 0.5 seconds to try (we can try 2 passwords / second). Then If we have 800 computers and this task is distributed equally, we can solve this with 100% accuracy in about 17 hours (maybe less because of my calculations).

Is this a possible solution (besides the solution to have special components to solve it)?
main
31. Oct 2008
"we could solve this in 1 min", ok maybe a bit exaggerated, but I was a bit excited. :P
main
01. Nov 2008
Maybe we should write some all-round brute-forcing client that could be used for different tasks?

Then we could solve quite many tasks that seem unsolvable. It´s all about computing power.

You could have a system where there are code to be executed located in some database, or dll:s that where downloaded or whatever (I´m just thinking here) and put in a queue and then equally distributed over the clients as I was talking about above.

A system where every other computer is allotted (is that the correct word?) a piece of work and if it is done processing, it request another piece and so on. It could be quite powerful.

What do you think?
andrewl.us
Moderator
01. Nov 2008
Nice idea!

http://www.distributed.net/
user2k
01. Nov 2008
heh, seti-like project started because of bruteforce-me, nice idea :)
main
02. Nov 2008
Interesting link andrewl.us!
@user2k yeah, it´s maybe a bit too much work just because of this one, but what the h-ll, once you´ve written a client (or use some already existing) it could be fun :)

And also, there are quite some users registered here on crackmes.de, if we got people engaged in this stuff it would be great!

We could solve alot of things together!
andrewl.us
Moderator
17. Dec 2008
A Christmas gift for crackmes.de; the key should be found by December 25th at the latest.

You can view the live status of the key searching at http://andrewl.us/astigmata

(assuming a valid key actually exists, that they key really does consist only of decimal digits, and that nothing environmental like loss of power or computer bursting into flames occurs)
cyclops
Moderator
21. Dec 2008
@Andrew:
Damn! You(you're PC) is working hard on it :)

Great initiative to solve a single crackme!
Lotta respect 4 you :)
andrewl.us
Moderator
24. Dec 2008
KEY: 76449502

Thanks cyclops :) Wanted to hold off reply until this thing actually worked. Was starting to have doubts :/
xylitol
27. Dec 2008
wow nice work andrewl.us !
aout
27. Dec 2008
Awesome solution, really made my day :D
simonzack
Moderator
12. Jan 2009
that was totally awesome
god what a fast pc too

You may leave your comment, thoughts and discuss this crackme with other reversers here.
Acting childish will not be tolerated.
HTML and such will be left as-is, so don't try.