学习哪些编程语言才能成为黑客?

发表时间: 2018-11-25 13:09

成为“黑客”前,必须学习的“编程语言”有哪些?

很多人感觉黑客很酷,在电脑前敲击敲击键盘就可以控制整个世界,“是的,他们是很酷”,但是他们背后要付出多少努力呢?

想当黑客必须具备三方面知识:第一是背景知识,需要理解语言结构、操作系统、网络、计算机体系结构等原理;第二必须能够熟练使用各种黑客攻击工具,寻找系统漏洞并实施攻击是一项重复性工作,灵活使用各种黑客攻击工具可以将这项工作自动化,并以人们易于理解的图形方式展现复杂的系统结构;第三必须掌握几种编程语言,无论黑客攻击工具多么强大,进行高难度黑客攻击时,必须亲自编写适合自己使用的工具,此时需要掌握编程语言。一名真正的黑客肯定是一名合格的程序员,基础的编程语言是必须的,今天我就简单介绍一下,“入门级小白”和“职业大牛”都需要掌握哪些编程语言?

一、 初级阶段需要掌握什么编程语言?

初级阶段建议先从Python开始。Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。它设计清晰,文档齐全,对初学者很合适。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

作为黑客首选的编程语言Python,具有如下优点:

1、丰富的库。

Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。Python 提供多种库,用于支持黑客攻击,比如 pydbg、scapy、sqlmap、httplib 等。目前,这些库被广泛应用于各种黑客攻击。

2、能够访问各种 API。

Python 提供了 ctypes 库, 借 助 它, 黑 客 可 以 访 问 Windows、OS X、Linux、Solaris、FreeBSD、OpenBSD 等系统提供的 DLL 与共享库。

3、可移植性

由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

4、大量黑客攻击工具提供 Python API。

最具代表性的黑客攻击工具有 sqlmap、Nmap、Metasploit 等,它们都提供 Python 扩展接口。黑客使用 Python 可以将这些工具打造得更强大。

5、易学易用。

作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身Python 语言易学易用,现在好多线上儿童学习编程多数采用的就是Python语言编程。

6、除了以上优点,Python 还提供了丰富多样的模块,这些模块几乎可以直接用于所有黑客攻击领域。

对于黑客攻击模块不提供的领域,可以借由 ctypes 调用操作系统提供的原生 API。简言之,使用 Python 几乎可以攻击所有领域,比如应用程序、Web、网络、系统等,下面分别介绍各领域 Python 黑客攻击技术。

· 应用程序黑客攻击:可以向运行中的应用程序插入任意 DLL 或者源代码,拦截用户的键盘输入以盗取密码。此外,还可以将黑客攻击代码插入图片文件,在网络散布传播。

· Web 黑客攻击:可以创建网页爬虫,收集 Web 页面包含的链接,实现 SQL 注入,向处理用户输入的部分注入错误代码。使用 Python 可以实现简单的网络浏览器功能,通过操纵 HTTP 包,上传 Web shell 攻击所需文件。

· 网络黑客攻击:可以实施网络踩点,搜索系统开放的端口,收集并分析网络上的数据包,进行网络嗅探。伪装服务器地址,实施 IP 欺骗攻击,非法盗取敏感信息。也可以大量发送数据包,实施拒绝服务式攻击,使服务器陷入瘫痪,无法正常对外提供服务。

· 系统黑客攻击:黑客可以编写后门程序以控制用户 PC,开发用于搜索并修改 PC 注册表的功能。还可以利用应用程序的错误,通过缓冲区溢出或格式字符串实施攻击。

所以针对“入门级小白”可以首选Python编程语言进行学习。

二、 职业进级阶段需要学习什么编程语言?

一般来说,要成为一名真正意义的“黑客”,至少需要掌握 3-4 种编程语言。其中最具代表性的是 C 、C++语言,它们在分析系统与程序行为的过程中起着核心作用。

首先我们先讲讲C、C++语言,这两种编程语言为何是一个职业黑客必须掌握的基础语言? 

黑客界,有两样重要的课程,一是计算机的本质,二是编译原理。相对于汇编等底层语言,它简单;相对于其它高级语言,它更为接近计算机;同样它对黑客的两大课程很有帮助。所以可以这么说,只要稍微厉害的黑客,必定精通C、C++语言。

由于C语言,C++这两种比较靠近底层的语言 一般来说市面上比较流行的操作系统windows和linux,windows上面的病毒和被攻击的最厉害。所以想在这个上面玩一些破解必须掌握windows api这些接口的使用,找破解的对象首先要了解破解对象所在生存环境。这些生存环境基本上不是c就是c++的编程环境。现在常见的病毒软件就是利用windows系统的漏洞注入到系统中,然后伺机做坏事。截取你的键盘或者鼠标之类的。目前这类的病毒软件也是最多的,安全软件处理最多的也是着这类。要不360安全大师背后养着多少黑客出身的超级高手,就是为了对抗这些不安分的小喽啰。目前基于linux系统的服务器用的最多,被攻击的也最多,这就需要熟悉linux系统的组成以及内核构造,linux内核是c语言所写。但凡涉及到系统层面的东西都离不开c和c++所以想做点坏事也是需要一定的编程资本。

接下来简单介绍一下这两种编程语言。

C语言基本定义:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言优点:

1、简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2、运算符丰富

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

3、数据结构丰富

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

4、C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5、C语法限制不太严格、程序设计自由度大

一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。

6、C语言允许直接访问物理地址,可以直接对硬件进行操作

因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。

7、C语言程序生成代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10へ20%。

8、 C语言适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型

C++语言基本定义:

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。

C++语言优点:

1、C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。

2、C++设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。

3、C++设计无需复杂的程序设计环境。

4、C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,可以直接访问物理地址,与汇编语言相比又具有良好的可读性和可移植性。

总得来说,C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。

C++语言最有意义的方面是支持面向对象的特征。

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

讲了这么多,学习的过程中是艰苦的也是快乐的,想真的掌握编程语言,确实不容易,需要理论学习,更需要实践锻炼,所以为了达到更高的学习效率,可以每天学习完理论后,给自己定一个实验目标,然后做好笔记,这样每天进步一点,离成为真正意义的“黑客”就不远了。