十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python安全编程入门指南:安全人学Python,学什么?怎么学?

Python安全编程入门指南:安全人学Python,学什么?怎么学? 参考文章里说脚本小子和真正的黑客区别在于编程。Python是安全人必备的编程语言不会Python的安全工程师就像不会用刀的厨师。今天把安全人怎么学Python全讲清楚1. 安全人为什么要学Python1.1 Python在安全领域的地位Python是安全领域最流行的编程语言没有之一① 几乎所有安全工具都有Python版本或Python API② 安全自动化脚本首选Python③ 漏洞POC/EXP首选Python开发④ 数据分析、日志分析用Python最方便⑤ 学习门槛低上手快不会Python的安全人只能用别人的工具遇到特殊场景就傻眼重复劳动多效率低下很难深入理解漏洞原理面试的时候会被问住1.2 安全人用Python做什么用途例子重要性信息收集脚本子域名扫描、端口扫描、目录爆破★★★★★漏洞POC/EXP编写漏洞验证和利用脚本★★★★★安全工具开发开发自己的安全工具★★★★自动化渗透自动化渗透测试流程★★★★日志分析分析安全日志、提取攻击特征★★★★数据处理处理渗透测试数据、生成报告★★★爬虫爬取网站信息、漏洞探测★★★★密码破解写密码破解脚本★★★2. 安全人Python学习路线2.1 第1阶段Python基础2-4周先把Python基础语法学会①基础语法变量、数据类型、运算符条件判断、循环函数、模块、包面向对象基础②常用数据结构列表、字典、元组、集合字符串处理文件读写③异常处理try/except/finally自定义异常④常用标准库os系统操作sys系统相关re正则表达式jsonJSON处理time/datetime时间random随机数hashlib哈希学完后你应该能写简单的脚本处理文件和数据。2.2 第2阶段网络编程2-3周安全跟网络密不可分网络编程是重点①socket编程TCP客户端和服务端UDP客户端和服务端端口扫描器原理②HTTP客户端requests库重点urllib库HTTP请求和响应处理Session和Cookie③爬虫基础BeautifulSoup解析HTMLlxml解析正则提取内容④网络抓包scapy库构造和解析数据包简单的抓包脚本学完后你应该能写端口扫描器、爬虫、简单的漏洞验证脚本。2.3 第3阶段安全相关库3-4周这是安全人重点学习的内容①Web安全相关requests发送HTTP请求漏洞验证BeautifulSoup解析HTMLPyQueryjQuery风格的HTML解析selenium自动化浏览器验证码绕过、XSS验证②密码学相关hashlib哈希算法MD5、SHA等hmacHMAC算法pycryptodome对称加密、非对称加密base64Base64编解码③网络相关scapy数据包构造和解析nmap调用Nmap扫描shodan/fofa调用空间搜索引擎APIparamikoSSH连接④系统相关subprocess执行系统命令os/ctypes系统调用psutil系统信息获取pymem内存读写⑤数据库相关pymysqlMySQL数据库操作sqlite3SQLite数据库pymongoMongoDB操作学完后你应该能写各种安全工具脚本自己造轮子。2.4 第4阶段实战项目持续学了就要用用项目来检验① 端口扫描器② 子域名爆破工具③ 目录扫描器④ SQL注入检测工具⑤ Webshell管理工具⑥ 漏洞POC/EXP⑦ 日志分析脚本⑧ 自动化渗透测试框架3. 安全人必学的Python库3.1 最核心的10个库库名用途重要性安装requestsHTTP客户端★★★★★pip install requestsBeautifulSoup4HTML解析★★★★pip install beautifulsoup4lxmlXML/HTML解析★★★★pip install lxmlscapy网络数据包处理★★★★pip install scapyparamikoSSH客户端★★★pip install paramikopycryptodome加密解密★★★★pip install pycryptodomeselenium浏览器自动化★★★pip install seleniumpymysqlMySQL数据库★★★pip install pymysqlredisRedis数据库★★★pip install redissqlmapSQL注入工具可作为库用★★★官网下载3.2 常用代码片段① 发送HTTP请求importrequests# GET请求responserequests.get(http://example.com)print(response.status_code)print(response.text)# POST请求data{username:admin,password:123456}responserequests.post(http://example.com/login,datadata)# 带请求头headers{User-Agent:Mozilla/5.0,Cookie:sessionxxx}responserequests.get(http://example.com,headersheaders)# 文件上传files{file:open(shell.php,rb)}responserequests.post(http://example.com/upload,filesfiles)② 正则表达式提取内容importre# 提取邮箱text联系我adminexample.com 或者 testtest.cnemailsre.findall(r[\w.-][\w.-]\.\w,text)print(emails)# 提取URLurlsre.findall(rhttps?://[\w./-],text)print(urls)# 提取IPipsre.findall(r\d\.\d\.\d\.\d,text)print(ips)③ 端口扫描器importsocketimportthreadingdefscan_port(host,port):try:socksocket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.settimeout(1)resultsock.connect_ex((host,port))ifresult0:print(f[] Port{port}is open)sock.close()exceptExceptionase:passdefport_scan(host,start_port,end_port):print(fScanning{host}...)threads[]forportinrange(start_port,end_port1):tthreading.Thread(targetscan_port,args(host,port))threads.append(t)t.start()fortinthreads:t.join()print(Scan complete.)if__name____main__:port_scan(127.0.0.1,1,1000)④ 目录爆破工具importrequestsimportthreadingdefdir_brute(url,path):full_urlurl.rstrip(/)/pathtry:responserequests.get(full_url,timeout3)ifresponse.status_code!404:print(f[{response.status_code}] /{path})exceptExceptionase:passdefrun_bruter(url,wordlist):print(fBrute-forcing{url}...)withopen(wordlist,r)asf:pathsf.read().splitlines()threads[]forpathinpaths:ifpath.startswith(#)ornotpath:continuetthreading.Thread(targetdir_brute,args(url,path))threads.append(t)t.start()fortinthreads:t.join()print(Brute-force complete.)if__name____main__:run_bruter(http://example.com,wordlist.txt)⑤ 哈希破解importhashlibdefcrack_md5(hash_to_crack,wordlist):withopen(wordlist,r,errorsignore)asf:forlineinf:wordline.strip()ifhashlib.md5(word.encode()).hexdigest()hash_to_crack:print(f[] Found:{word})returnwordprint([-] Not found)returnNone# 使用crack_md5(e10adc3949ba59abbe56e057f20f883e,rockyou.txt)4. 安全人怎么快速学Python4.1 学习方法①边学边练。不要光看视频每学一个知识点就写代码练习。②项目驱动。带着项目去学需要什么学什么不要系统地学完所有东西。③改别人的代码。找现成的安全工具代码改一改理解了再自己写。④写工具解决自己的问题。工作中遇到重复性工作就用Python写脚本自动化。⑤读优秀的源码。读开源安全工具的源码学习别人怎么写的。4.2 推荐学习资源①入门教程廖雪峰Python教程适合零基础菜鸟教程Python板块Python官方文档英文但最权威②安全Python《Python黑帽子黑客与渗透测试编程之道》必读《Python安全编程》《Python绝技运用Python成为顶级黑客》③开源项目学习sqlmap代码质量高值得精读dirsearch目录扫描工具subfinder子域名扫描Xray漏洞扫描器4.3 常见问题Q零基础学Python要多久A基础语法2周网络编程2周能写简单的安全工具大概1-2个月。但要精通需要持续练习。QPython2还是Python3A必须学Python3。Python2已经停止维护了新项目都用Python3。Q不会编程能做安全吗A能但只能做最基础的天花板很低。想要深入发展编程是必须的。Q学Python还是学CA先学Python上手快实用性强。如果以后做逆向和二进制安全再学C。Q每天学多久合适A每天1-2小时坚持3个月肯定能入门。关键是坚持。5. 安全编程的注意事项①合法合规。自己写的工具只能在授权范围内使用。②不要重复造轮子。有现成的好用工具就直接用把精力放在更有价值的事情上。③代码质量。写脚本也要注意可读性和可维护性不然过几个月自己都看不懂。④安全编码。自己写的工具也要注意安全不能有漏洞。⑤多写多练。编程是练出来的不是看出来的。【粉丝福利】我整理了一份《Python安全编程大礼包》含Python安全学习路线、Python黑帽子电子书、50个安全脚本源码、常用安全库速查表、端口扫描器/目录爆破器完整源码。免费发给你大家也可以一起交流Python安全编程经验~Python是安全人的瑞士军刀。会Python和不会Python安全能力差距巨大。从今天开始每天写10行代码3个月后你会感谢自己。
返回列表