Ethical Hacking:Learning How to Protect Systems through Weaknesses