我现在是一名测试员。我计划转向安全领域,例如 CEH 或 CISSP。但是许多人说,要成为一名出色的黑客,您至少需要精通一种编程语言。我已经知道一点Java。但我只是想知道哪种语言更接近网络安全和相关领域。那么我应该学习什么样的语言才能对我进入安全领域有所帮助?
用于网络安全的编程语言
关于什么是最好的语言学习没有明确的蓝图。因此,我想提两个我(和许多其他人)认为是学习计算机安全的好语言的好选择。
卢阿
来自维基百科的 Lua 解释:Lua 是一种轻量级的多范式编程语言,设计为以“可扩展语义”为主要目标的脚本语言。
我提到 LUA 是一门好学的语言的原因是它是许多流行安全工具的脚本引擎。这是单独学习这门语言的一个很好的理由。一些语言包括:
- NMAP(网络映射工具)
- Snort(开源 IDS)
- Wireshark(数据包嗅探工具)
- Vim(非常流行的 unix 文本编辑器)
- 思科 ASA(防火墙、IPS、VPN)
- 网络服务工具(Apache、lightHttpd、FreePop)
附带说明:即使是暴雪的主要热门魔兽世界也支持游戏中的 LUA 脚本 :) 与可能相关的任何人。
Python
在我开始阅读《Gray Hat Python: Python Programming for Hackers and Reverse Engineers》这本书之后,我对 Python 有点偏见。我同意本书中的许多观点,为什么学习这种语言对黑客(通常称为安全专家 :))来说是件好事。
引自 Amazon Python 是一种很好的学习语言,因为:
它易于快速编写,并且具有使黑客高兴的低级支持和库。
能够与 Python shell 中的解释器即时交互也非常舒适。
编辑: HackerNews 对最喜欢/不喜欢的编程语言的民意调查的图形视图:
编辑 2: 来自Digininjas 民意调查:
Language Number Percentage
Python 245 81%
Bash Scripting 241 79%
Ruby 127 42%
C 123 40%
Windows Powershell 111 37%
Batch Scripting 108 36%
PHP 107 35%
C++ 66 22%
Java 65 21%
Perl 57 19%
Other 57 19%
VB 29 10%
C# 26 9%
Lua 23 8%
编程语言和安全性之间没有那种联系,更好的看待它的方法是学习通用语言(因此 java 将是一个合理的起点),因为所有语言都有安全问题 - 你不妨看看在各种 Web 应用程序和平台上的安全问题,而不是深奥的东西。
了解网络协议是一个好主意,并且能够分析第 1-4 层的流量会有所帮助,但这与语言无关。
仔细阅读标记为专业教育的其他问题以获得更广泛的指导。
网络安全的某些部分涉及在发送和接收 TCP/IP 数据包时摆弄它们的小细节;为此,您需要能够在低级别拦截数据包,并发出手工制作的数据包(例如,在 Linux 下,这称为使用SOCK_RAW
套接字)。并非所有编程语言都为此提供可用的 API;有时需要了解 C 才能使用这些功能。
除此之外,任何可以轻松接收和发送任意字节的通用编程语言都对您有好处;Java 在这方面很好。
注意:我意识到这非常偏向于系统而不是通用安全性。安全是一个过程,涉及的不仅仅是技术。
您可以选择两种路线,不幸的是(恕我直言)都不包括 Java。
C 是一种非常好的系统语言。您可以使用 unix 和 linux 并深入挖掘 - 系统调用、内核空间、低级网络等。
另一条路线是脚本语言,它允许您快速将工具和程序粘合在一起,并在更高级别上进行编程。perl、python 和 ruby 等大多数脚本语言都可以让您访问套接字级别的抽象。我偏向于 python,因为如果您需要性能或低级访问,您可以轻松地为它编写 C 模块。
现在来解决您问题中的谎言……成为一名出色的黑客超越了编程语言。成为一名伟大的黑客是一种心态。它包含质疑一切并能够创造性地解决问题。如果你能做到这一点,你将学习你需要的语言,因为你会自我导向它们。