python的ida
⑴ python滲透測試工具都有哪些
網路
Scapy, Scapy3k: 發送,嗅探,分析和偽造網路數據包。可用作互動式包處理程序或單獨作為一個庫
pypcap, Pcapy, pylibpcap: 幾個不同 libpcap 捆綁的python庫
libdnet: 低級網路路由,包括埠查看和乙太網幀的轉發
dpkt: 快速,輕量數據包創建和分析,面向基本的 TCP/IP 協議
Impacket: 偽造和解碼網路數據包,支持高級協議如 NMB 和 SMB
pynids: libnids 封裝提供網路嗅探,IP 包碎片重組,TCP 流重組和埠掃描偵查
Dirtbags py-pcap: 無需 libpcap 庫支持讀取 pcap 文件
flowgrep: 通過正則表達式查找數據包中的 Payloads
Knock Subdomain Scan: 通過字典枚舉目標子域名
SubBrute: 快速的子域名枚舉工具
Mallory: 可擴展的 TCP/UDP 中間人代理工具,可以實時修改非標准協議
Pytbull: 靈活的 IDS/IPS 測試框架(附帶超過300個測試樣例)
調試和逆向工程
Paimei: 逆向工程框架,包含PyDBG, PIDA , pGRAPH
Immunity Debugger: 腳本 GUI 和命令行調試器
mona.py: Immunity Debugger 中的擴展,用於代替 pvefindaddr
IDAPython: IDA pro 中的插件,集成 Python 編程語言,允許腳本在 IDA Pro 中執行
PyEMU: 全腳本實現的英特爾32位模擬器,用於惡意軟體分析
pefile: 讀取並處理 PE 文件
pydasm: Python 封裝的libdasm
PyDbgEng: Python 封裝的微軟 Windows 調試引擎
uhooker: 截獲 DLL 或內存中任意地址可執行文件的 API 調用
diStorm: AMD64 下的反匯編庫
python-ptrace: Python 寫的使用 ptrace 的調試器
vdb/vtrace: vtrace 是用 Python 實現的跨平台調試 API, vdb 是使用它的調試器
Androguard: 安卓應用程序的逆向分析工具
Capstone: 一個輕量級的多平台多架構支持的反匯編框架。支持包括ARM,ARM64,MIPS和x86/x64平台
PyBFD: GNU 二進制文件描述(BFD)庫的 Python 介面
Fuzzing
Sulley: 一個模糊器開發和模糊測試的框架,由多個可擴展的構件組成的
Peach Fuzzing Platform: 可擴展的模糊測試框架(v2版本 是用 Python 語言編寫的)
antiparser: 模糊測試和故障注入的 API
TAOF: (The Art of Fuzzing, 模糊的藝術)包含 ProxyFuzz, 一個中間人網路模糊測試工具
untidy: 針對 XML 模糊測試工具
Powerfuzzer: 高度自動化和可完全定製的 Web 模糊測試工具
SMUDGE: 純 Python 實現的網路協議模糊測試
Mistress: 基於預設模式,偵測實時文件格式和偵測畸形數據中的協議
Fuzzbox: 媒體多編碼器的模糊測試
Forensic Fuzzing Tools: 通過生成模糊測試用的文件,文件系統和包含模糊測試文件的文件系統,來測試取證工具的魯棒性
Windows IPC Fuzzing Tools: 使用 Windows 進程間通信機制進行模糊測試的工具
WSBang: 基於 Web 服務自動化測試 SOAP 安全性
Construct: 用於解析和構建數據格式(二進制或文本)的庫
fuzzer.py(feliam): 由 Felipe Andres Manzano 編寫的簡單模糊測試工具
Fusil: 用於編寫模糊測試程序的 Python 庫
Web
Requests: 優雅,簡單,人性化的 HTTP 庫
HTTPie: 人性化的類似 cURL 命令行的 HTTP 客戶端
ProxMon: 處理代理日誌和報告發現的問題
WSMap: 尋找 Web 伺服器和發現文件
Twill: 從命令行界面瀏覽網頁。支持自動化網路測試
Ghost.py: Python 寫的 WebKit Web 客戶端
Windmill: Web 測試工具幫助你輕松實現自動化調試 Web 應用
FunkLoad: Web 功能和負載測試
spynner: Python 寫的 Web瀏覽模塊支持 javascript/AJAX
python-spidermonkey: 是 Mozilla JS 引擎在 Python 上的移植,允許調用 Javascript 腳本和函數
mitmproxy: 支持 SSL 的 HTTP 代理。可以在控制台介面實時檢查和編輯網路流量
pathod/pathoc: 變態的 HTTP/S 守護進程,用於測試和折磨 HTTP 客戶端
⑵ IDA keypatch 不能使用的解決辦法
Edit 下沒有 keypatch 選項,但是 IDA\python38\Lib\site-packages 目錄下明明就有 keystone_engine 及 keystone 等文件夾,同時 IDA\plugins 目錄下也有 keypatch.py。
修改環境變數,添加 IDA\python38 和 IDA\python38\Scripts,運行
重啟 IDA 即可。
如果沒有安裝 pip,按如下方式安裝
另外,剛好又碰到了 Findcrypt 插件不能使用,報找不到 yara.dll 的問題,刪除 IDA\python38\Lib\site-packages 下 yara 相關目錄,重新安裝一下即可。
⑶ 怎麼證明idapython已經安裝成功
操作系統win764位 1.下載IDA6.8(64位),,並安裝。 2.下載python2.7(64位),並安裝 3.下載idapython,https://github.com/idapython/bin,解壓,解壓文件idapython-1.7.2_ida6.8_py2.7_win32.zip,並進入解壓後的文件夾, Copythewhole「python」directoryto%IDADIR% Copythecontentsofthe「plugins」directorytothe%IDADIR%plugins Copy「python.cfg」to%IDADIR%cfg 重啟IDA
⑷ 逆向warmup1——idapython的初步使用
warmup1:
分析邏輯,可以知道judge是關鍵函數,但是加密了,所以要先解密judge函數:
在下方的python那裡,可以進行python工具去破解,步驟如下:
s = get_bytes(0x600b00,182)
buf = ' '
for i in s:
Python> buf += chr (int(i)^0xc)
from idaapi import *
patch_bytes(0x600b00,buf)
這是python的腳本,用到get_type()和patch_type()的函數,很好用,來個完整版本的:
接著去judge的地址那裡看看,發現反編譯出來的東西挺奇怪的,於是進行u和p操作(有些混淆別人的感覺)進行undefine(u),再create(p),就可以破解那個judge函數了,judge裡面是個異或函數,14位長度的string,腳本跑一下即可。
⑸ 讓 IDA 使用 Anaconda 中的 python2 環境
因為 IDA 會使用一些 python 相關的系統環境變數,所以當你 python 環境比較復雜時(例如跟我一樣環境變數中是 py3,py2 在 Anaconda 中),就會導致 IDA 沒法正常使用 python,各種亂七八糟的錯誤這里就不舉例了,以下是我解決該問題的方法:
新建一個 bat 批處理文件,填入以下內容來設置臨時環境變數:
啟動 bat 即可。
⑹ python灰帽子講的什麼
內容簡介
《Python灰帽子》是由知名安全機構Immunity Inc的資深黑帽Justin Seitz主筆撰寫的一本關於編程語言Python如何被廣泛應用於黑客與逆向工程領域的書籍。老牌黑客,同時也是Immunity Inc的創始人兼首席技術執行官(CTO)Dave Aitel為這本書擔任了技術編輯一職。書中絕大部分篇幅著眼於黑客技術領域中的兩大經久不衰的話題:逆向工程與漏洞挖掘,並向讀者呈現了幾乎每個逆向工程師或安全研究人員在日常工作中所面臨的各種場景,其中包括:如何設計與構建自己的調試工具,如何自動化實現煩瑣的逆向分析任務,如何設計與構建自己的fuzzing工具,如何利用fuzzing 測試來找出存在於軟體產品中的安全漏洞,一些小技巧諸如鉤子與注入技術的應用,以及對一些主流Python安全工具如PyDbg、 Immunity Debugger、Sulley、IDAPython、PyEmu等的深入介紹。作者藉助於如今黑客社區中備受青睞的編程語言 Python引領讀者構建出精悍的腳本程序來一一應對上述這些問題。出現在書中的相當一部分Python代碼實例借鑒或直接來源於一些優秀的開源安全項目,諸如Pedram Amini的Paimei,由此讀者可以領略到安全研究者們是如何將黑客藝術與工程技術優雅融合來解決那些棘手問題的。
相關推薦:《Python教程》
作者簡介
Justin Seitz是一名Immunity公司的高級安全研究員,他在以往的工作中花費了大量的時間從事漏洞挖掘、逆向工程、編寫漏洞利用以及編寫Python代碼的研究。
目錄
第1章 搭建開發環境 1
1.1 操作系統要求 1
1.2 獲取和安裝Python 2.5 2
1.2.1 在Windows下安裝Python 2
1.2.2 在Linux下安裝Python 2
1.3 安裝Eclipse和PyDev 4
1.3.1 黑客摯友:ctype庫 5
1.3.2 使用動態鏈接庫 6
1.3.3 構建C數據類型 8
1.3.4 按引用傳參 9
1.3.5 定義結構體和聯合體 9
第2章 調試器原理和設計 12
2.1 通用寄存器 13
2.2 棧 15
2.3 調試事件 17
2.4 斷點 18
2.4.1 軟斷點 18
2.4.2 硬體斷點 20
2.4.3 內存斷點 22
第3章 構建自己的Windows調試器 24
3.1 Debugee,敢問你在何處 24
3.2 獲取寄存器狀態信息 33
3.2.1 線程枚舉 34
3.2.2 功能整合 35
3.3 實現調試事件處理常式 39
3.4 無所不能的斷點 44
3.4.1 軟斷點 44
3.4.2 硬體斷點 49
3.4.3 內存斷點 55
3.5 總結 59
第4章 PyDbg——Windows下的純Python調試器 60
4.1 擴展斷點處理常式 60
4.2 非法內存操作處理常式 63
4.3 進程快照 66
4.3.1 獲取進程快照 67
4.3.2 匯總與整合 70
第5章 Immunity Debugger——兩極世界的最佳選擇 74
5.1 安裝Immunity Debugger 74
5.2 Immunity Debugger 101 75
5.2.1 PyCommand命令 76
5.2.2 PyHooks 76
5.3 Exploit(漏洞利用程序)開發 78
5.3.1 搜尋exploit友好指令 78
5.3.2 「壞」字元過濾 80
5.3.3 繞過Windows 下的DEP機制 82
5.4 破除惡意軟體中的反調試常式 87
5.4.1 IsDebuugerPresent 87
5.4.2 破除進程枚舉常式 88
第6章 鉤子的藝術 90
6.1 使用PyDbg部署軟鉤子 90
6.2 使用Immunity Debugger部署硬鉤子 95
第7章 DLL注入與代碼注入技術 101
7.1 創建遠程線程 101
7.1.1 DLL注入 102
7.1.2 代碼注入 105
7.2 遁入黑暗 108
7.2.1 文件隱藏 109
7.2.2 構建後門 110
7.2.3 使用py2exe編譯Python代碼 114
第8章 Fuzzing 117
8.1 幾種常見的bug類型 118
8.1.1 緩沖區溢出 118
8.1.2 整數溢出 119
8.1.3 格式化串攻擊 121
8.2 文件Fuzzer 122
8.3 後續改進策略 129
8.3.1 代碼覆蓋率 129
8.3.2 自動化靜態分析 130
第9章 Sulley 131
9.1 安裝Sulley 132
9.2 Sulley中的基本數據類型 132
9.2.1 字元串 133
9.2.2 分隔符 133
9.2.3 靜態和隨機數據類型 134
9.2.4 二進制數據 134
9.2.5 整數 134
9.2.6 塊與組 135
9.3 行刺WarFTPD 136
9.3.1 FTP 101 137
9.3.2 創建FTP協議描述框架 138
9.3.3 Sulley會話 139
9.3.4 網路和進程監控 140
9.3.5 Fuzzing測試以及Sulley的Web界面 141
第10章 面向Windows驅動的Fuzzing測試技術 145
10.1 驅動通信基礎 146
10.2 使用Immunity Debugger進行驅動級的Fuzzing測試 147
10.3 Driverlib——面向驅動的靜態分析工具 151
10.3.1 尋找設備名稱 152
10.3.2 尋找IOCTL分派常式 153
10.3.3 搜尋有效的IOCTL控制碼 155
10.4 構建一個驅動Fuzzer 157
第11章 IDAPython——IDA PRO環境下的Python腳本編程 162
11.1 安裝IDAPython 163
11.2 IDAPython函數 164
11.2.1 兩個工具函數 164
11.2.2 段(Segment) 164
11.2.3 函數 165
11.2.4 交叉引用 166
11.2.5 調試器鉤子 166
11.3 腳本實例 167
11.3.1 搜尋危險函數的交叉代碼 168
11.3.2 函數覆蓋檢測 169
11.3.3 檢測棧變數大小 171
第12章 PYEmu——腳本驅動式模擬器 174
12.1 安裝PyEmu 174
12.2 PyEmu概覽 175
12.2.1 PyCPU 175
12.2.2 PyMemory 176
12.2.3 PyEmu 176
12.2.4 指令執行 176
12.2.5 內存修改器與寄存器修改器 177
12.2.6 處理常式(Handler) 177
12.3 IDAPyEmu 182
12.3.1 函數模擬 184
12.3.2 PEPyEmu 187
12.3.3 可執行文件加殼器 188
12.3.4 UPX加殼器 188
12.3.5 利用PEPyEmu脫UPX殼 189
⑺ 如何使用python根據介面文檔進行介面測試
1,關於requests
requests是python的一個http客戶端庫,設計的非常簡單,專門為簡化http測試寫的。
2,開發環境
mac下面搭建開發環境非常方便。
sudo easy_install pip
sudo pip install requests
測試下:python命令行
import requests
>>> r = requests.get('', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{type:User...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
開發工具,之前使用sublime,發現運行報錯,不識別table字元。
IndentationError: unindent does not match any outer indentation level
非常抓狂的錯誤,根本找不到代碼哪裡有問題了。甚至開始懷疑人生了。
python的這個空格區分代碼真的非常讓人抓狂。開始懷念有大括弧,分號的語言了。
徹底解決辦法,直接換個IDE工具。使用牛刀,IDA開發。
直接下載社區版本即可,因為就是寫個腳本啥的,沒有用到太復雜的框架。
果然效果非常好,直接格式下代碼,和java的一樣好使,可以運行可以debug。右鍵直接運行成功。
3,測試介面
沒有啥太復雜的,直接使用requests框架即可。
#!/usr/bin/python
# -*- coding: utf-8 -*-
################
import requests
#測試網路
def _func(url):
headers = {}
params = {}
req = requests.post(url, headers=headers, params=params)
print(req.text)
if __name__ == '__main__':
url =
_func(url)
4,總結
測試非常重要,尤其是對外的介面出現的漏洞,需要花時間去仔細測試,同時要仔細分析代碼。
安全是挺重要的事情,要花時間去琢磨。
python學習還是非常容易學習的,一個小時就能把語法學會。
同時滲透測試,安全掃描的好多工具也是python寫的。PyCharm CE版本的開發工具足夠強大,能夠幫你快速學習python。
如果想快速做點界面的開發,wxPython是非常不錯的選擇。
⑻ idc和ida python的區別
idc 腳本 是ida 自帶,相對簡陋
idapython 是插件實現腳本功能,因為用python,更全面強大
⑼ 使用python語言如何保密源代碼以防止逆向工程
大家都很忙,誰有時間看你的的爛代碼!
如果真的怕泄露,別用python.
我以前做過這類事情,而且當時更嚴格,需要打包部署到客戶的服務只在有效期內有效,超過有效期必須更新證書才行。
Python代碼用任何方法都沒法保證保密性,這個時候你可以考慮用一個工具「nuitka」,這個工具會把你的python源代碼映射為c++然後編譯為二進制,因此對方是無論如何得不到你的源代碼的。
代價就是nuitka這個工具並不完美,有一些限制並不能100%完美的轉換所有python代碼。
1.用Cython編譯python成 Windows的pyd文件或Linux的so文件,二進制文件相對安全性較高。
2.用源碼混淆器把代碼搞的又臭又長。。。混淆完了再用Cython編譯為二進制。。。這樣靜態反編譯逆向難度也不小。
3.同其他語言程序一樣,可以對調試狀態進行檢測,當處於調試狀態時退出程序或進入混亂代碼耗費逆向工程人員心神。
4.分享一個跨平台反調試手段,檢測函數運行時間,加斷點會導致函數運行時間變長,也可感知正在被調試。
Python是提倡開源的,既然選擇Python還是擁抱開源才好~ 都開源還擔心逆向工程嘛
沒有不能逆的軟體。
只要匯編語言過關,逆向工程都是可以實現的,不要有其它想法。
你唯一可以做的,就是不讓別人用python讀取源代碼而已。那樣實現起來比較簡單。
python 適合開發伺服器程序,或者自己科研使用的程序,如果是 作為用戶程序,安裝到 pc 或手機上,還是 其它 c++ 或java 比較合適
1)可以把需要保護的部分用c語言實現,從而編譯成so等文件,這樣逆向的成本會比較高,可以防止直接打開python文件看到代碼邏輯。
2)so文件通過ida等工具也是可以反匯編的,可以通過對c語言進行代碼混淆,花指令等操作,提高通過ida等反匯編工具的分析難度。
3)不存在絕對無法逆向的技術手段,因此只能是看具體需求,選擇具體的防逆向的技術手段。
有工具類似py2exe轉成可執行程序,隱藏全部源代碼,雖然bytecode還是可以反編譯,但是難度大多了
1. 最穩的就是你改cpython載入代碼的過程,改zip包讀取最穩。
2. 藉助一些加密工具在編譯pyc之前進行一定的混淆,可以防君子,自我安慰一下。
商用一般都是用第一種辦法,小打小鬧用第二種。
可以考慮使用pymod工具,使用pymod pack 將模塊加密打包,發布的時候一個模塊就一個文件。
先睹為快,看看一個項目發布的時候,只有幾個文件,
main.py 項目程序入口
setting.py 項目配置
apps 項目模塊
plusins 項目插件目錄
創建項目 pymod create demo1
cd demo1
創建模塊 pymod add mod1
啟動pycharm 開始編寫功能模塊
一個模塊默認由三個文件組成
__init__.py 、 handlers.py 、param_schemas.py
業務邏輯主要在handlers.py中編寫
__init__.py
from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import *
param_schemas.py
schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "身份證明號碼" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年齡" } } }
handlers.py
from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="身份證明號碼驗證通過")) else: self.write(FalseResponse(hint="身份證明號碼驗證失敗"))
三、項目部署
程序調試 修改setting.py
# 開發模式下 運行的模塊名稱必須填寫
moles = ["mod1"] moles_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }
啟動程序 python main.py
調試沒有問題,進入發布模式
在項目目錄下
pymod pack mod1
在target目錄下生成mod1.mod文件,將其復制到apps目錄中
修改setting.py
# 開發模式下 運行的模塊名稱必須填寫
moles = []
再次運行 python main.py 測試
一切OK,系統就可以發布了。
說不能保密的,是沒有研究過python的機制的。我做個一個項目,所有源代碼自定義加密,運行時解密。