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

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

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

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

# yum install gcc

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

下載完成之后,解壓,依次執行configuremakeinstall進行安裝。

# 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 LinuxPython 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.x3.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”,獲取更多內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM