The first project I ever made in terms of tools, was an MD5 cracker (brute forcer, dictionary attacker, whatever, still gets the same message across.) Then I did a port scanner, I assume neither one of these would be dramatically hard to implement in Python, assuming Python has support for the MD5 algorithm and it doesn't have half-bad socket support.
The main problem you'll probably have with an MD5 cracker is the logical structure you'll have to deal with. Plain truth, it's a slut.
MadSpark14 MD5 cracker source code.
^^See what I mean by a logical slut?