在进行网络安全培训的过程中,很多同学都会问“如何成长为真正的黑客”之类的问题。我都会告诉他们,编程是基础,编程能力决定你理解的是否深入,能走的是否够远。你是想做一个只会用工具的人,还是想做一个能写工具给别人用的黑客? 当然这是针对初学者的激励,安全工作的方方面面都离不开编程,网络协议分析、数据抓取和解析、逆向工程、自动化扫码、漏洞测试和攻击......哪一样离了编程,都玩不转。但是什么样的编程语言是最合适的呢?
我接触过很多编程语言,c/c++,Java,C#,PHP,Perl,F#,Ruby,JavaScript等等,都是在不同的工作环境或者面对不同的工作任务时候被动接触的,每种语言都有自己的特性和优势,这里我们不去做过多的对比。我最开始从事网络安全相关的工作任务的时候使用的是C 和C#,使用C#是出于个人喜好,以及在windows上编程的便利性;使用C是为了跨平台和他的底层能力。后来接触了Python,Python在绝大多数场景中直接替代了C和C#。在阅读了很多国外黑客的文章,使用了很多流行的工具之后,我意识到在这个领域里Python具有绝对的霸主地位,尤其是在读了《Gray Hat Python: Python hackers and reverse engineers》一书之后,对Python在底层编程方向上的能力有了新的认识,从此爱上这门语言,一发不可收拾。社区为Python开发了大量的库,我们可以几行代码\ufffd就实现数据包监听和解析,几十行代码实现Web数据抓取和分析,便利性是其他语言不可比的。同时,黑客们使用Python编写了大量的工具,并且都是开源的,不论是我们参考他们的实现来实现自己的工具还是做上层封装调用各种工具,都极其便利。所以说,黑客编程,Python是最好的选择。
为什么要编写这套课程?
“师父领进门,修行在个人”。其实入门是最难的,大量的网络安全爱好者,他们对“黑客”这个词的理解并不准确,一上来把精力放到了各种实战上,\ufffd甚至花费很多钱购买各种\ufffd以演示为主的教程上,结果\ufffd几年过去了,仍然不得其法,一直在门外徘徊。互联网和计算机上看到的一切,都是代码构成的,从理解代码开始,来理解计算机,理解网络,理解程序,理解架构,这才是不二心法。 本着给更多的入门者引路的想法,我着手编写这套教程。
本教程的特点
入门要简单,曲线要