## Frog Fractions 2(reversing, 5 points, 65 solves)	Turns out Frog Fractions 2 is not battletoadsWe're given a 64bit elf file, let's start by disassembling it and describing important points in the program.
The program uses a library called libgmp to handle big numbers, it makes the debugging less friendly. 
After analysing the binary come we come up with a replacement script in python:
```pythondata = [] #scraped data array from binaryprimes = [] #init primes somewherev11 = 1019line = "A sample line input" #our input
def factor_print(a1):	v4 = a1	for x in range(200):		c = 0		while(v4 % primes[x] == 0):			v4 = v4/primes[x];			c = c+1		if(c != 0):			sys.stdout.write(chr(c))	print
for i in range(len(line)):	v11 = v11* pow(primes[i], ord(line[i]))j =0while(j < len(data)/2):	v6 = data[j*2]	v7 = data[j*2+1]
	v10 = v11*v6	if(v10 % v7 == 0): 		v11 = v10/v7		j = 0	else:		j = j+1factor_print(v11)```
While searching through the binary we stumble into two big, interesting integers: 62834...(6955 chars) and 50209...(8423 chars).
What's interesting about them is that if we run them through our `factor_print` function we get the 2 messages available:
`Nope!  You need to practice your fractions!`
`Congratulations!  Treat yourself to some durians!`
So we need to find a line that reproduces the second output message, we do that by reversing the function:
```pythondef crack(v11):	j = 0	while(j < len(data)/2):		v7 = data[j*2]		v6 = data[j*2+1]
		v10 = v11*v6		if(v10 % v7 == 0): 			v11 = v10/v7			j = 0		else:			j = j+1	factor_print(v11)```
Which gives us the desired output: `KEY{(By the way, this challenge would be much easier with a cybernetic frog brain)}`
The full source is available [here](https://gist.github.com/nazywam/0634494b4b1c0ffd46a3)