Now there are 100 (-xxx) in the encrypted text on the webpage, but there are 345 characters in the serials file (327 characters if you don't include the unix style break lines).

Now, I've built up this encrypter in vb and it outputs 345 (-xxx) at the moment per my reasoning above. I hesitate to go on until I've brought down my output to 100 (-xxx).

I will be most thankful if anyone can help me understand where I went wrong.

UBAL

EDIT: Nvm, I don't think the file has anything to do with the task, except to show the format of the serials. Furthermore, I tried out the php on a server and my prog is not outputting the correct numbers.

I got a really simple question on this one... first let me explain the problem.. well i know the idea is to bruteforce.. BUT my main issue is the endless possibilities in:(The hex value of the (n)th char of the md5 pass) + (The hex value of the whole md5 pass)its like MrRubix said.. i know the sum is (100) but i don't know if its (50+50) or (25+75)so we actually got TWO unknowns:1. The hex value of the whole md5 pass2. The hex value of the (n)th char of the md5 passso thats double bruteforcing :Oand its not like i can consider those two variable as one and start bruteforcing.. because i need the (hex value of the whole md5 pass) separated to be used later in the decryption..

Now the question is: is it supposed to be solved by double bruteforcing and eliminating false results later ?.. or there a shorter way I'm not seeing!

wow, last post on this thread was ONE YEAR AGO.Well, I've done this mission in PHP on Saturday night, I felt very happy.....

My method to get the hash was actually simple, it plays with the totals. First, I brute force the possible totals and get about 570 possible totals. Then, for each of those possibilities I do a brute-force of the serial and eliminate those "dead branches" (those who is impossible). I do that until I got the hash, because after the hash gotten, everything becomes much easier :p

So yeah, your goal is to get the hash. And one more thing, the possibilities is based on the information you can get from the example serials.

Okay I struggled with this so I'm going to give some of you some hints on this one. My solution completes the decryption of the entire string, NOT just the last serial, in less than a few seconds each time. I'm using python, which is slower than compiled languages such as C++, and my solution is still fast regardless of the serial. My hints are...

#1: Determining the hash of the password is not necessaryI did not do this. I read that some other people tried this approach but I found it unnecessary. You can still find the solution without knowing the md5 hash of the password. Anyone that says determining the md5 hash of the password is necessary will be ignored (and possibly ridiculed)

#2: Build a structured array of input dataThis was critical to my solution. Structure your data into a multidimensional array. I'm using python so I used lists to hold my data.

#3: Don't use iterationI tried many different ways to solve this using iteration, they were all SLLLOWWWW and did not work. You have to be able to "walk" through the array and ignore the "dead branches" of data.

Please note that this is how I did it and I want everyone to know that the solution to this is actually quite simple. If there is a solution that guesses the password hash, uses no structured array of data, and uses iteration then I tip my hat to you because I was not able to do this.

This took me probably the longest of all the programming missions so far.My error was the procedure i used.What i did was used a recursive function,building up to something like a binary tree,the end result was,if it started building up on a wrong branch,it went all up untill it couldn't compute anything else,before calculating another branch..Doing a thread for every branch would somehow solve it,but having initialy something like 200k threads is somehow of a problem right?So after a long time i decided to throw that away,keeping the recursive function BUT calculating the values during each step,and then moving forward..Also build up a container for your data..if you go past 32 good values,then you already have your password md5 hash ,and can use it..Hope this is usefull,if it's too spoilerish i can modify it.

This (precious) little bitch took me by far more time than any other programming challenges , and surely more sleepless nights

But finally I did it, with PHP. If you think well on the restrictions, it's not that countless possibilities ! My script takes < 5 seconds to get the answer ..

I'm very grateful for the responsible(s) of this challenge, guys this was a gorgeous one, million thanks

[If my Hint is too spoilered just remove it, just trying to give advice to hopeless people ]

HINT: - Mainly there are 2 unknowns, the first would be the hash of $strPassword. But think that we only use one char of the hash per iteration, that being a Hex character leaves us few possibilities ... also take in account that every 32 iterations it goes back to the start... - The second unknown would be THE FIRST evalCrossTotal($strPassword). I remark ONLY THE FIRST, because the algorithm calculates dynamically all the rest, so you don't have to guess every time ! If one didnt work .. well to the next one