黑客们会用到哪些Python技术?附python教程

2018 年 6 月 23 日 黑白之道

网络爱好者总是要掌握编程语言的,这里推荐:python。下面,一文了解黑客们会用到哪些Python技术!尾部免费送教程!


1、为什么是python


Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的(除了用Ruby写的安全漏洞检测工具)。


Python允许开发者编写脚本处理远程服务,处理二进制文件,与C语言库(或者Java的Jython/。Net的IronPython)以快速且简单的方式进行交互。它“内置电池”原则的巨大标准库,为开发省去对其它框架或者语言的依赖。我想跟读者们分享个人的python编程经历,这些也许会对你未来的工作有所帮助,让这个世界变得更加安全一些(注:大多数例子基于Python3.0以上版本编写的,有些可以兼容python所有分支)。


2、环境配置


对于你要编写的大多数工程或者脚本,建议读者们最好将所有的依赖放在同一个位置(除了有些在特殊工程中才用到的依赖)。为了满足上述要求,需要用到一个叫virtualenv的工具(Python3.3已经包括该工具),这个工具有一个简洁的功能,就是在不打乱全局环境的基础上,为你的Python工程生成独立的环境,生成新环境的方法如下:


$ virtualenv <新环境的路径>

或者在Python3.3以上的环境中:

$ python3 -mvenv <新环境的路径>

使用这个环境之前,你要先激活它:

$ source <新环境的路径>/bin/activate

禁止该环境的方式也很简单:

$ deactivate


3、安装依赖包


很多时候读者们会发现,借助大型python社区中的python库编写的个人工具,可以帮助我们很快得到结果。你可以通过个人软件管理包或者可用的python软件包管理器安装这些库,其中最权威的就是pip工具了。有了pip,你可以全局安装这些依赖包(#pip install),或者逐用户安装($ pip install --user),或者在虚拟环境中安装((venv) $ pip install)。读者可以手动地使用个人发行版包管理器,或者基于Python3.4提供的库,安装pip包。


有一个基本的python包叫iPython,通常在我不是100%肯定该如何解决当前任务,想尝试做些实验时,我会安装这个依赖包。IPython是常用的python命令行,它是基于Python编写的,有以下几个特点:


  • 动态对象内省

  • 通过Tab完成本地命名空间

  • 持续的历史记录

  • 会话日志

  • 路径补全

  • JIT调试器

  • 自动缩进


和平常一样,通过pip安装也很简单:$ pip install ipython


如果你想创建教程或者其它文本文件,ipython中的笔记本特性(现在由jupyter提供)允许用户通过个人浏览器和IPython命令行交互,包括markdown、 mathjax、matplotlib等工具支持。


(通过安装jupyter(pip install jupyter)可以使用它们,开启笔记本服务通过(jupyter notebook))。


如果读者们需要与包括JSON/XML的HTTP服务交互,我建议特别好用的requests依赖库。该python库可以处理与网页交互面对的各类操作,如编码、解码、参数、标记、重定向等。例如,请求和解析一个JSON资源的代码如下:

大多数HTML解析和交互工作都可以交给BeautifulSoup库,该python库可以在任何现在浏览器上处理HTML输入,包括修复受损代码。


4、与网络交互


我们大多数目标都有可能在网络上获取,安装好的标准库中已经包含了通用的、有用的python库,这里我对其进行简短的介绍。socket模块是基于BSD socket API的瘦包装器,它在所有的通用操作系统都可用。所以如果你已经有C语言socket编程经验,你可以将你的代码轻易地翻译成python代码。有很多特别方便的函数,如create_connection函数可以创建TCP socket,建立本机和给定主机或者端口的连接。另一个包装器是sendall方法,有些数据只有当所有给定数据都被发出,或者有错误发生才能在线路中传输,而sendall方法可以尝试重传这些数据。



增加TSL加密链路也非常简单:



上述功能也可以在已经使用的连接中实现:

如何你不需要这些低级服务交互,还有些模块可以提供高层服务交互:

  • smtplib

  • ftplib

  • poplib

  • imaplib

  • httplib (Python 3以上版本的http客户端)

  • nntplib

  • telnetlib (应用于服务开发和之后的需要交互命令行会话)

  • xmlrpclib (Python 3以上版本的xmlrpc客户端)


5、安二进制操作或编码


当开发与服务或者文件交互的脚本时,你经常会发现需要将数据转换为不同格式或者编码。在Python2.x版本中,通常使用encode或者decode方法将字符串在不同格式之间转换。 


很可惜,这种捷径在Python3.x版本中被取消了,encode和decode方法当前只可以实现字符编码,如utf-8, cp1250, iso8859, big5等。


作为替代,你现在只能使用bytes类型的两种方法实现十六进制编码:

对于Base64编码,你需要使用另外的模块(在Python2.x版本中也有):  

URLs编码或者解析可以用urllib.parse模块实现(Python2.x版本中是urllib)

Python普通数据类型(如int,float,str)与二进制之间的一般转换,可以在stuct模块中实现:

Python3.2也可以使用int类型直接获取其二进制表示:

ctypes 模块还有一个特别棒的特征,如果你将cpython作为解译器(通常大家都是这样),就可以使用ctypes.Structure结构化描述C语言,获取它们的二进制表示,就好像从C应用程序中转储的一样。

ctypes 模块通常是Python程序集和C语言库之间的桥梁,不需要编写任何Python包装器。有了ctypes模块,你可以使用任何C语言库和其输出函数:

上文中提到Structure 类型主要用于C语言库的交互,在函数调用过程中传递或者获取结构。


6、漏洞开发工具


很多CTF团体提供他们自己的的CTF解决方案框架,我发现来自Gallopsled 的pwntools框架特别有用,尤其是开发远程elf二进制时,它包含很多方便的函数,例如位移计算(通过cyclic模式)、格式化字符串开发(普通数据馈送以及产生的格式化字符串)、跳转组合(基于ropgadget解析elf二进制以及提供生成简单跳转组合调用的包装器)和不同传输通道的全部API(称作管道)。这些可以让读者们开发gdb编译后端,同时简单地改变一行代码就可以传输到目标服务。

PS:小编微信huixiniuruixing,欢迎来撩~~~

再PS:私聊送你几套python教程


              


英文原文:https://insinuator.net/2015/09/python-for-hackers/   

译者:zfzf1236

文章摘自微信公众号:安全犀牛


你可能喜欢

控制电力向顶级黑客学习装逼

黑客转移阵地 比特币勒索病毒首次侵入腾讯云

时候表演真正把妹绝招

登录查看更多
2

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
python语音识别终极指南
AI100
13+阅读 · 2018年4月5日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Python NLP入门教程
计算机与网络安全
9+阅读 · 2017年11月21日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
干货|7步让你从零开始掌握Python机器学习!
全球人工智能
8+阅读 · 2017年9月24日
用python和Tesseract实现光学字符识别(OCR)
Python程序员
7+阅读 · 2017年7月18日
Directions for Explainable Knowledge-Enabled Systems
Arxiv
26+阅读 · 2020年3月17日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Image Captioning based on Deep Reinforcement Learning
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
python语音识别终极指南
AI100
13+阅读 · 2018年4月5日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Python NLP入门教程
计算机与网络安全
9+阅读 · 2017年11月21日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
干货|7步让你从零开始掌握Python机器学习!
全球人工智能
8+阅读 · 2017年9月24日
用python和Tesseract实现光学字符识别(OCR)
Python程序员
7+阅读 · 2017年7月18日
Top
微信扫码咨询专知VIP会员