Python 黑帽程式設計 1.3 Python 執行時與包管理工具

玄魂發表於2016-11-04

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官方網站www.python.org/下載python的安裝…

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

轉到下載頁面。

Python 黑帽程式設計 1.3 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

瀏覽器開啟www.python.org/downloads/w…

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

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

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

下載之後,點選安裝。安裝過程中,可以選擇講Python寫到系統Path變數裡,方便在任何地方訪問Python。

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

安裝完成後,測試。

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

1.1.2 Mac下安裝Python

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

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

下載之後進行安裝。

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

安裝成功之後,啟動終端進行校驗。

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

1.1.4 Linux下安裝Python

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

在CentOS下安裝Python,根據你所使用的系統的環境不同,需要安裝的內容也許會不一樣,主要的區別在需要的依賴項。不過解決方法也很簡單,就是缺什麼裝什麼了。下面的過程是在我的測試機上完成的。

首先確認是否安裝了GCC,如果沒有的話,使用yum進行安裝。

# yum install gcc複製程式碼

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

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的掃描結果,我們先手動下載安裝包。

wget http://xael.org/pages/python-nmap-0.6.0.tar.gz複製程式碼

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

解壓:

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#
`複製程式碼

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

執行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複製程式碼

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

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 (bootstrap.pypa.io/ez_setup.py…

python ez_setup.py複製程式碼

下面我們使用easy_install 來安裝Python的一個模組,可以用來對dpf進行解析和安全測試的pyPdf。

easy_install pyPdf複製程式碼

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

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...複製程式碼

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

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

如果要安裝特定版本的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節,有具體獲取視訊教程的方法。

Python 黑帽程式設計 1.3 Python 執行時與包管理工具

由於教程仍在創作過程中,在整套教程完結前,感興趣的同學請關注我的微信訂閱號(xuanhun521,下方二維碼),我會第一時間在訂閱號推送圖文教程和視訊教程。問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303。

關注之後,回覆請回復“Python”,獲取更多內容。

訂閱號雙11(11月10號到12號)將有活動,贈送價值萬元的 圖書,視訊,圖文教程,歡迎關注參與。

相關文章