美文网首页python加油站我爱编程
Python黑帽编程之 Python运行时与包管理工具

Python黑帽编程之 Python运行时与包管理工具

作者: 小黑y99 | 来源:发表于2016-08-26 21:26 被阅读63821次

    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源码,命令如下。

    # mkdir src

    # cd src

    # wgethttps://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz

    下载完成之后,解压,依次执行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的扫描结果,我们先手动下载安装包。

    wgethttp://xael.org/pages/python-nmap-0.6.0.tar.gz

    解压:

    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,通过使用==, >=, <=, >, <来指定一个版本号。例如:

    pipinstall '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小结

    本节课程依然简单,但是是你必须要掌握的。之后的开发课程中,我们会不厌其烦的使用包管理工具来安装我们需要的模块。

    相关文章

      网友评论

        本文标题:Python黑帽编程之 Python运行时与包管理工具

        本文链接:https://www.haomeiwen.com/subject/ntmzsttx.html