Python黑帽編程之 Python運(yùn)行時(shí)與包管理工具

0.1本系列教程說明

本系列教程,采用的大綱母本為《Understanding Network Hacks Attack and Defense with Python》一書,為了解決很多同學(xué)對(duì)英文書的恐懼,解決看書之后實(shí)戰(zhàn)過程中遇到的問題而作。由于原書很多地方過于簡(jiǎn)略,筆者根據(jù)實(shí)際測(cè)試情況和最新的技術(shù)發(fā)展對(duì)內(nèi)容做了大量的變更,當(dāng)然最重要的是個(gè)人偏好。

0.2前言

前兩節(jié)里,我們完成了操作系統(tǒng)和工具的安裝。事實(shí)上可以進(jìn)入到正式開發(fā)階段了,Kali Linux系統(tǒng)自帶了Python運(yùn)行時(shí)及easy_install和pip等基礎(chǔ)組件,包括我們之后的課程里要用到的pypcap等網(wǎng)絡(luò)包也都一并存在了。

這是Kali帶來的好處,但是對(duì)初學(xué)Python的同學(xué)來說,我想有必要把Python運(yùn)行時(shí)和模塊安裝的基礎(chǔ)知識(shí)講解清楚。

1.1安裝PYTHON

首先到Python官方網(wǎng)站https://www.python.org/下載python的安裝包。

轉(zhuǎn)到下載頁面。

下載頁面會(huì)自動(dòng)識(shí)別我們使用的操作系統(tǒng),上面的下載按鈕下載下來的就是識(shí)別之后的對(duì)應(yīng)系統(tǒng)的軟件包,在下面有其他系統(tǒng)的鏈接。這里需要注意的是python的兩個(gè)主要版本分支,一個(gè)是2.7.*一個(gè)是3.*.*版本。我們的系列課程推薦使用2.7,所有代碼在3.0以上版本的環(huán)境中運(yùn)行結(jié)果未知。你也可以選擇使用最新的Python版本來編寫程序,但是也一定要單獨(dú)安裝2.7版本,保證學(xué)習(xí)進(jìn)度。

下載并保存文件。下面我們說說在不同系統(tǒng)下如何安裝python,當(dāng)然安裝Python的方法也很多,恕我不能一一道來。

1.1.0? Kali Linux下安裝Python

Kali Linux系統(tǒng)自帶,無需安裝,略。

1.1.1 windows下安裝Python

瀏覽器打開https://www.python.org/downloads/windows/,來到windows安裝包的下載頁面。

找到我們要下載的2.7.12下載安裝包。

下載之后,點(diǎn)擊安裝。安裝過程中,可以選擇講Python寫到系統(tǒng)Path變量里,方便在任何地方訪問Python。

安裝完成后,測(cè)試。

1.1.2 Mac下安裝Python

Mac下安裝和Windows上差不多,先到Mac安裝包的下載頁,找到安裝包,下載。

下載之后進(jìn)行安裝。

安裝成功之后,啟動(dòng)終端進(jìn)行校驗(yàn)。

1.1.4 Linux下安裝Python

我使用的Linux為CentOS,安裝方法為源碼安裝(任何系統(tǒng)都能采用源碼安裝的方式,Linux上這種方式更常見,不過在windows上源碼安裝要更麻煩一些),其他Linux操作系統(tǒng)方法類似。

在CentOS下安裝Python,根據(jù)你所使用的系統(tǒng)的環(huán)境不同,需要安裝的內(nèi)容也許會(huì)不一樣,主要的區(qū)別在需要的依賴項(xiàng)。不過解決方法也很簡(jiǎn)單,就是缺什么裝什么了。下面的過程是在我的測(cè)試機(jī)上完成的。

首先確認(rèn)是否安裝了GCC,如果沒有的話,使用yum進(jìn)行安裝。

# yum install gcc

GCC安裝完成之后,我們新建一個(gè)目錄,用來下載Python源碼,命令如下。

# mkdir src

# cd src

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

下載完成之后,解壓,依次執(zhí)行configure、make和install進(jìn)行安裝。

# tar xzf Python-2.7.10.tgz

# cd Python-2.7.10

# ./configure

# make install

安裝完成之后,啟動(dòng)終端輸入下面的命令,看是否安裝成功

# python –version

1.2模塊的安裝

Python的模塊(module)在概念層面和其他語言并無太大的區(qū)別,都是為了邏輯上劃分代碼功能,將概念上高內(nèi)聚的代碼放在一起組成一個(gè)模塊。在表現(xiàn)形式上,python的模塊是以文件作為分割的,簡(jiǎn)單講,模塊是包括Python定義和聲明的文件。文件名就是模塊名加上.py后綴。模塊的模塊名(做為一個(gè)字符串)可以由全局變量__name__得到。

關(guān)于模塊的編寫、導(dǎo)入、加載機(jī)制等內(nèi)容,在后面的課程會(huì)詳細(xì)介紹。

使用Python編程來解決實(shí)際問題的便利性,很大程度上得益于眾多的Python模塊,這些模塊由官方、社區(qū)或者其他第三方開發(fā)者提供。我在之前的非本系列的一篇博文中(《kali linux Python黑客編程1開發(fā)環(huán)境初始化》)介紹過Python里安裝模塊的三種方法,這里再拿出來重新講解下。

1.2.1手動(dòng)安裝

第一種方法是手動(dòng)下載軟件包,運(yùn)行安裝程序來安裝。

比如我們想要使用Python-nmap組件去解析nmap的掃描結(jié)果,我們先手動(dòng)下載安裝包。

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#

運(yùn)行setup.py,執(zhí)行安裝。

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系列工具的中的一個(gè)工具,可以用來自動(dòng)查找、下載、安裝、升級(jí)依賴包。

在Kali Linux中Python setuptools默認(rèn)已經(jīng)被安裝,其他Linux系統(tǒng)中使用apt-get或者yum都可以安裝。

apt-get安裝命令為:

sudo apt-get install python-setuptools

yum安裝命令為:

yum install setuptool

考慮到windows,這里再介紹一個(gè)通用的方法,適合所有操作系統(tǒng)。

首先下載ez_setup.py(https://bootstrap.pypa.io/ez_setup.py)文件,然后執(zhí)行下面的命令即可:

python ez_setup.py

下面我們使用easy_install來安裝Python的一個(gè)模塊,可以用來對(duì)dpf進(jìn)行解析和安全測(cè)試的pyPdf。

easy_install pyPdf

easy_install當(dāng)然也提供了卸載模塊/包的功能。但是必須要注意的是,該模塊/包必須要在easy-install.pth有相關(guān)信息,換句話說,也就是要使用easy_install安裝的,才可進(jìn)行卸載。比如命令:

easy_install -m redis

這樣就會(huì)將Python中的redis模塊卸載。

其他命令參數(shù),這里就不詳細(xì)介紹了,請(qǐng)各位同學(xué)自行查看。

1.2.3? pip

好消息是,最新版的Python2.x和3.x都已經(jīng)集成了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...

下面再列舉一些其他的常用功能,同樣的更詳細(xì)的用法留給各位同學(xué)自學(xué)。

如果要安裝特定版本的package,通過使用==, >=, <=, >, <來指定一個(gè)版本號(hào)。例如:

pipinstall 'Markdown<2.0'

pip install 'Markdown>2.0,<2.0.3

如果有requirement的話,直接pip install -r requirements.txt就可以安裝所有的了。

卸載軟件,使用uninstall參數(shù):

pip uninstall SomePackage

更新軟件:

pip install --upgrade SomePackage

顯示已經(jīng)安裝的文件:

pip show --files SomePackage

顯示過期的安裝包:

pip list --outdated

1.3小結(jié)

本節(jié)課程依然簡(jiǎn)單,但是是你必須要掌握的。之后的開發(fā)課程中,我們會(huì)不厭其煩的使用包管理工具來安裝我們需要的模塊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • linux和windows下安裝python拓展包-pycharm、numpy、scipy、matplotlib、...
    hzyido閱讀 81,535評(píng)論 2 10
  • Python為主流開發(fā)語言, 用python 開發(fā)的程序越來越多。 方便的是大多l(xiāng)inux系統(tǒng)里面都默認(rèn)集成了py...
    53921f46e0b9閱讀 64,694評(píng)論 3 18
  • 本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或者翻譯。 本站文章歡迎各種形式的轉(zhuǎn)載,但請(qǐng)18歲以上的轉(zhuǎn)載者注明文章出處,尊重...
    Michael_林閱讀 774評(píng)論 1 1
  • 引言 在這里我假設(shè)你已經(jīng)看完了一篇Python教程,基本熟悉了Python的結(jié)構(gòu)和語法,在命令行下的Python互...
    Programmer客棧閱讀 65,198評(píng)論 0 17
  • 關(guān)于“焦慮”那些事 大家好,我是夢(mèng),很高興可以在這里和大家進(jìn)行交流。首先,我想問大伙三個(gè)問題。 正式營前買的六本書...
    讓dream照進(jìn)現(xiàn)實(shí)閱讀 239評(píng)論 0 1

友情鏈接更多精彩內(nèi)容