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的兩個主要 版本分支,一個是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…
找到我們要下載的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的掃描結果,我們先手動下載安裝包。
wget http://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 (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”,獲取更多內容。
訂閱號雙11(11月10號到12號)將有活動,贈送價值萬元的 圖書,視訊,圖文教程,歡迎關注參與。