Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具
0.1 本系列教程说明
本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense with Python》一书,为了解决很多同学对英文书的恐惧,解决看书之后实战过程中遇到的问题而作。由于原书很多地方过于简略,笔者根据实际测试情况和最新的技术发展对内容做了大量的变更,当然最重要的是个人偏好。教程同时提供图文和视频教程两种方式,供不同喜好的同学选择。
0.2 前言
前两节里,我们完成了操作系统和工具的安装。事实上可以进入到正式开发阶段了,Kali Linux系统自带了Python运行时及easy_install 和pip等基础组件,包括我们之后的课程里要用到的pypcap等网络包也都一并存在了。
这是Kali带来的好处,但是对初学Python的同学来说,我想有必要把Python运行时和模块安装的基础知识讲解清楚。
1.1 安装Python
首先到Python官方网站https://www.python.org/下载python的安装包。
转到下载页面。
下载页面会自动识别我们使用的操作系统,上面的下载按钮下载下来的就是识别之后的对应系统的软件包,在下面有其他系统的链接。这里需要注意的是python的两个主要 版本分支,一个是2.7.*一个是3.*.*版本。我们的系列课程推荐使用2.7,所有代码在3.0以上版本的环境中运行结果未知。你也可以选择使用最新的Python版本来编写程序,但是也一定要单独安装2.7版本,保证学习进度。
下载并保存文件。下面我们说说在不同系统下如何安装python,当然安装Python的方法也很多,恕我不能一一道来。
1.1.0 Kali Linux下安装Python
Kali Linux系统自带,无需安装,略。
1.1.1 windows下安装Python
浏览器打开https://www.python.org/downloads/windows/,来到windows安装包的下载页面。
找到我们要下载的2.7.12下载安装包。
下载之后,点击安装。安装过程中,可以选择讲Python写到系统Path变量里,方便在任何地方访问Python。
安装完成后,测试。
1.1.2 Mac下安装Python
Mac下安装和Windows上差不多,先到Mac安装包的下载页,找到安装包,下载。
下载之后进行安装。
安装成功之后,启动终端进行校验。
1.1.4 Linux下安装Python
我使用的Linux为CentOS,安装方法为源码安装(任何系统都能采用源码安装的方式,Linux上这种方式更常见,不过在windows上源码安装要更麻烦一些),其他Linux操作系统方法类似。
在CentOS下安装Python,根据你所使用的系统的环境不同,需要安装的内容也许会不一样,主要的区别在需要的依赖项。不过解决方法也很简单,就是缺什么装什么了。下面的过程是在我的测试机上完成的。
首先确认是否安装了GCC,如果没有的话,使用yum进行安装。
# yum install gcc
GCC安装完成之后,我们新建一个目录,用来下载Python源码,命令如下。
下载完成之后,解压,依次执行configure、make和install进行安装。
# tar xzf Python-2.7.10.tgz
# cd Python-2.7.10
# ./configure
# make install
安装完成之后,启动终端输入下面的命令,看是否安装成功
# python –version
1.2 模块的安装
Python的模块(module)在概念层面和其他语言并无太大的区别,都是为了逻辑上划分代码功能,将概念上高内聚的代码放在一起组成一个模块。在表现形式上,python的模块是以文件作为分割的,简单讲,模块是包括 Python 定义和声明的文件。文件名就是模块名加上 .py 后缀。模块的模块名(做为一个字符串)可以由全局变量 __name__ 得到。
关于模块的编写、导入、加载机制等内容,在后面的课程会详细介绍。
使用Python编程来解决实际问题的便利性,很大程度上得益于众多的Python模块,这些模块由官方、社区或者其他第三方开发者提供。我在之前的非本系列的一篇博文中(《kali linux Python 黑客编程1 开发环境初始化》)介绍过Python里安装模块的三种方法,这里再拿出来重新讲解下。
1.2.1 手动安装
第一种方法是手动下载软件包,运行安装程序来安装。
比如我们想要使用Python-nmap组件去解析nmap的扫描结果,我们先手动下载安装包。
解压:
root@kali:~# tar xzf python-nmap-0.6.0.tar.gz
root@kali:~# ls
paros python-nmap-0.6.0 公共 视频 文档 音乐
phpmyadmin.sh python-nmap-0.6.0.tar.gz 模板 图片 下载 桌面
root@kali:~# cd python-nmap-0.6.0/
root@kali:~/python-nmap-0.6.0# ls
CHANGELOG gpl-3.0.txt MANIFEST.in nmap.html README.txt setup.py
example.py Makefile nmap PKG-INFO requirements.txt
root@kali:~/python-nmap-0.6.0#
运行setup.py,执行安装。
python setup.py install
root@kali:~/python-nmap-0.6.0# python setup.py install
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/nmap
copying nmap/__init__.py -> build/lib.linux-x86_64-2.7/nmap
copying nmap/test_nmap.py -> build/lib.linux-x86_64-2.7/nmap
copying nmap/nmap.py -> build/lib.linux-x86_64-2.7/nmap
running install_lib
creating /usr/local/lib/python2.7/dist-packages/nmap
copying build/lib.linux-x86_64-2.7/nmap/__init__.py -> /usr/local/lib/python2.7/dist-packages/nmap
copying build/lib.linux-x86_64-2.7/nmap/test_nmap.py -> /usr/local/lib/python2.7/dist-packages/nmap
copying build/lib.linux-x86_64-2.7/nmap/nmap.py -> /usr/local/lib/python2.7/dist-packages/nmap
byte-compiling /usr/local/lib/python2.7/dist-packages/nmap/__init__.py to __init__.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/nmap/test_nmap.py to test_nmap.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/nmap/nmap.py to nmap.pyc
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/python_nmap-0.6.0.egg-info
1.2.2 easy_intall
easy_install 是Python setuptools系列工具的中的一个工具,可以用来自动查找、下载、安装、升级依赖包。
在Kali Linux中Python setuptools默认已经被安装,其他Linux系统中使用apt-get或者yum都可以安装。
apt-get 安装命令为:
sudo apt-get install python-setuptools
yum 安装命令为:
yum install setuptool
考虑到windows,这里再介绍一个通用的方法,适合所有操作系统。
首先下载ez_setup.py (https://bootstrap.pypa.io/ez_setup.py)文件,然后执行下面的命令即可:
python ez_setup.py
下面我们使用easy_install 来安装Python的一个模块,可以用来对dpf进行解析和安全测试的pyPdf。
easy_install pyPdf
easy_install当然也提供了卸载模块/包的功能。但是必须要注意的是,该模块/包必须要在 easy-install.pth 有相关信息,换句话说,也就是要使用easy_install安装的,才可进行卸载。比如命令:
easy_install -m redis
这样就会将Python中的redis模块卸载。
其他命令参数,这里就不详细介绍了,请各位同学自行查看。
1.2.3 pip
好消息是,最新版的Python2.x和3.x都已经集成了python-pip。
下面我们通过 pip 来安装github3模块。
pip install github3.py
root@kali:~/python-nmap-0.6.0# pip install github3.py
Downloading/unpacking github3.py
Downloading github3.py-0.9.5-py2.py3-none-any.whl (109kB): 109kB downloaded
Downloading/unpacking uritemplate.py>=0.2.0 (from github3.py)
Downloading uritemplate.py-0.3.0.tar.gz
Running setup.py (path:/tmp/pip-build-LRgVNm/uritemplate.py/setup.py) egg_info for package uritemplate.py
Requirement already satisfied (use --upgrade to upgrade): requests>=2.0 in /usr/lib/python2.7/dist-packages (from github3.py)
Installing collected packages: github3.py, uritemplate.py
Running setup.py install for uritemplate.py
Successfully installed github3.py uritemplate.py
Cleaning up...
下面再列举一些其他的常用功能,同样的更详细的用法留给各位同学自学。
如果要安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号。例如:
pip install 'Markdown<2.0'
pip install 'Markdown>2.0,<2.0.3
如果有requirement的话,直接pip install -r requirements.txt就可以安装所有的了。
卸载软件,使用uninstall参数:
pip uninstall SomePackage
更新软件:
pip install --upgrade SomePackage
显示已经安装的文件:
pip show --files SomePackage
显示过期的安装包:
pip list --outdated
1.3 小结
本节课程依然简单,但是是你必须要掌握的。之后的开发课程中,我们会不厌其烦的使用包管理工具来安装我们需要的模块。
1.4 本节对应视频教程获取方法
在微信订阅号(xuanhun521)依次打开“网络安全”—>”Python黑客编程”,找到对应的本篇文章的1.4节,有具体获取视频教程的方法。
由于教程仍在创作过程中,在整套教程完结前,感兴趣的同学请关注我的微信订阅号(xuanhun521,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。问题讨论请加qq群:Hacking (1群):303242737 Hacking (2群):147098303。
关注之后,回复请回复“Python”,获取更多内容。
Python黑帽编程1.3 Python运行时与包管理工具的更多相关文章
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Python 黑帽编程大纲(变化中)
Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- Python黑帽编程2.2 数值类型
Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...
- Python黑帽编程2.3 字符串、列表、元组、字典和集合
Python黑帽编程2.3 字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...
- Python黑帽编程2.4 流程控制
Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...
- Python黑帽编程2.5 函数
Python黑帽编程2.5 函数 写了几节的基础知识,真心感觉有点力不从心.这块的内容说实话,看文档是最好的方式,本人的写作水平,真的是找不出更好的写法,头疼.简单带过和没写一样,写详细了和本系列教程 ...
- Python黑帽编程2.6 模块
Python黑帽编程2.6 模块 我们已经学习了如何在你的程序中定义一次函数而重用代码.如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块.模块基本上就是一个 ...
- Python黑帽编程2.7 异常处理
Python黑帽编程2.7 异常处理 异常是个很宽泛的概念,如果程序没有按预想的执行,都可以说是异常了.遇到一些特殊情况没处理会引发异常,比如读文件的时候文件不存在,网络连接超时.程序本身的错误也可以 ...
随机推荐
- CMD批处理延时启动的几个方法
批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 @echo off @ping 127.0.0.1 -n 6 >nul start gdh.txt 方法二:vbs s ...
- C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)
用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先 ...
- maven权威指南学习笔记(一)——简介
maven是什么?有什么用? Maven是一个项目管理工具,它包含了 一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(Pro ...
- HoloLens shell overview(Translation)
HoloLens shell 概述 使用HoloLens时,shell是由你周围的世界和来自系统的全息图构成.我们可以称这个空间叫做混合现实(mixed world). 此shell由在你的世界里能让 ...
- gradle各版本下载地址
gradle各版本下载地址:http://services.gradle.org/distributions 以前都是手动下载gradle的文件,然后修改的,今天想从一些博客网站上下载最新的gradl ...
- JS简单解决并发量
经常在写代码的时候碰到这样的场景:页面初始化时显示loading页,同时启动多个ajax并发请求获取数据,当每个ajax请求返回时结束loading. 举个例子,一个下订单的页面,要查询常用地址信息. ...
- supervisor-3:xml_rpc
别人博客转载,做个记录 原文链接:http://lixcto.blog.51cto.com/4834175/1540795 supervisor提供的两种管理方式,supervisorctl和web其 ...
- Apple、Google、Microsoft的用户体验设计原则
轻巧的Apple 注重设计过程: 在设计过程中引入用户交互的5个目标: 了解您的目标客户 分析用户的工作流 构造原型系统 观察用户测试 制定观察用户准则 做出设计决定 避免功能泛滥 80% 方案 优秀 ...
- POJ No.3617【B008】
[B007]Best Cow Line[难度B]———————————————————————————————————————————————— [Description 支持原版从我做起!!! ...
- iOS 传值方式
1.代理传值 2.AppDelegate传值 3.block传值 4.通知传值 5.NSUserDefault传值