1. 程式人生 > >Python真的無所不能!連黑客技術都要用它!你知道要用哪些技術嗎

Python真的無所不能!連黑客技術都要用它!你知道要用哪些技術嗎

獲取 ctypes env 應用 轉儲 apt 當前 發行版 社區

網絡愛好者總是要掌握編程語言的,這裏推薦:python。下面,一文了解黑客們會用到哪些Python技術!

技術分享圖片

進群:548377875 即可獲取數十套PDF哦!

技術分享圖片

安裝依賴包

很多時候讀者們會發現,借助大型python社區中的python庫編寫的個人工具,可以幫助我們很快得到結果。你可以通過個人軟件管理包或者可用的python軟件包管理器安裝這些庫,其中最權威的就是pip工具了。有了pip,你可以全局安裝這些依賴包(#pip install),或者逐用戶安裝($ pip install --user),或者在虛擬環境中安裝((venv) $ pip install)。讀者可以手動地使用個人發行版包管理器,或者基於Python3.4提供的庫,安裝pip包。

技術分享圖片

如果讀者們需要與包括JSON/XML的HTTP服務交互,我建議特別好用的requests依賴庫。該python庫可以處理與網頁交互面對的各類操作,如編碼、解碼、參數、標記、重定向等。例如,請求和解析一個JSON資源的代碼如下:

技術分享圖片

技術分享圖片

增加TSL加密鏈路也非常簡單:

技術分享圖片

上述功能也可以在已經使用的連接中實現:

技術分享圖片

如何你不需要這些低級服務交互,還有些模塊可以提供高層服務交互:

  • smtplib
  • ftplib
  • poplib
  • imaplib
  • httplib (Python 3以上版本的http客戶端)
  • nntplib
  • telnetlib (應用於服務開發和之後的需要交互命令行會話)
  • xmlrpclib (Python 3以上版本的xmlrpc客戶端)

5

安二進制操作或編碼

當開發與服務或者文件交互的腳本時,你經常會發現需要將數據轉換為不同格式或者編碼。在Python2.x版本中,通常使用encode或者decode方法將字符串在不同格式之間轉換。

技術分享圖片

很可惜,這種捷徑在Python3.x版本中被取消了,encode和decode方法當前只可以實現字符編碼,如utf-8, cp1250, iso8859, big5等。

作為替代,你現在只能使用bytes類型的兩種方法實現十六進制編碼:

技術分享圖片

對於Base64編碼,你需要使用另外的模塊(在Python2.x版本中也有):

技術分享圖片

URLs編碼或者解析可以用urllib.parse模塊實現(Python2.x版本中是urllib)

技術分享圖片

Python普通數據類型(如int,float,str)與二進制之間的一般轉換,可以在stuct模塊中實現:

技術分享圖片

Python3.2也可以使用int類型直接獲取其二進制表示:

技術分享圖片

ctypes 模塊還有一個特別棒的特征,如果你將cpython作為解譯器(通常大家都是這樣),就可以使用ctypes.Structure結構化描述C語言,獲取它們的二進制表示,就好像從C應用程序中轉儲的一樣。

技術分享圖片

ctypes 模塊通常是Python程序集和C語言庫之間的橋梁,不需要編寫任何Python包裝器。有了ctypes模塊,你可以使用任何C語言庫和其輸出函數:

技術分享圖片

上文中提到Structure 類型主要用於C語言庫的交互,在函數調用過程中傳遞或者獲取結構。

技術分享圖片

4

漏洞開發工具

很多CTF團體提供他們自己的的CTF解決方案框架,我發現來自Gallopsled 的pwntools框架特別有用,尤其是開發遠程elf二進制時,它包含很多方便的函數,例如位移計算(通過cyclic模式)、格式化字符串開發(普通數據饋送以及產生的格式化字符串)、跳轉組合(基於ropgadget解析elf二進制以及提供生成簡單跳轉組合調用的包裝器)和不同傳輸通道的全部API(稱作管道)。這些可以讓讀者們開發gdb編譯後端,同時簡單地改變一行代碼就可以傳輸到目標服務。

技術分享圖片

黑客隨牛逼,但是有些東西是禁區,可不能隨便去觸碰哦!

Python真的無所不能!連黑客技術都要用它!你知道要用哪些技術嗎