pythonida
A. 怎么证明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
B. 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 客户端
C. 黑客与逆向工程师的python编程之道 怎么样
Python是一款非常流行的脚本编程语言。特别是在黑客圈子里,你不会Python就几乎无法与国外的那些大牛们沟通。这一点我在2008年的XCon,以及2009年的idefense高级逆向工程师培训中感触颇深。前一次是因为我落伍,几乎还不怎么会Python,而后一次……记得当时我、海平和Michael Ligh(他最近出版的Malware Analyst's Cookbook and DVD: Tools and Techniques for Fighting Malicious Code)一书在Amazon上得了7颗五星!)讨论一些恶意软件分析技术时经常会用到Python,从Immunity Debugger的PyCommand、IDA的IDAPython到纯用Python编写的Volatility工具(这是一款内存分析工具,用于发现rootkit之类的恶意软件)。Python几乎无处不在!我也尝试过对Volatility进行了一些改进,在电子工业出版社举办的“在线安全”Open Party上海站活动中,我以《利用内存分析的方法快速分析恶意软件》为题进行了演讲。
遗憾的是,之前市面上还没有一本关于如何利用黑客工具中提供的Python(由于必须使用许多黑客工具中提供的库函数,所以这时你更像在用一种Python的方言编程)的书籍。故而,在进行相关编程时,我们总是要穿行于各种文档、资料之中,个中甘苦只自知。
本书的出版满足了这方面的需求,它会是我手头常备的一本书,啊不!是两本,一本备用,另一本因为经常翻看用不了多久就肯定会破烂不堪。
说到这本书的好处也许还不仅于此,它不仅是一本Python黑客编程方面的极佳参考书,同时也是一本软件调试和漏洞发掘方面很好的入门教材。这本书的作者从调试器的底层工作原理讲起,一路带你领略了Python在调试器、钩子、代码注入、fuzzing、反汇编器和模拟器中的应用,涵盖了软件调试和漏洞发掘中的各个方面,使你在循序渐进中了解这一研究领域目前最新研究成果的大略。
本书译者的翻译也很到位。不客气地说,不少好书是被糟糕的翻译耽误掉的。比如我在读大学时的一本中文版的参考书,我看了三遍没明白是怎么回事,后来想起老师推荐时用的是英文版,于是试着去图书馆借了本英文版,结果看一遍就明白了。不过这本书显然不属于此例。译者丁赟卿本来就是从事这一领域研究的,对原文意思的理解非常到位,中文用词也十分贴切。特别是这本书的英文版中原本是存在一些错误的(包括一些代码),译者在中文版中竟然已经一一予以纠正了,从这一点上也可以看出译者在翻译过程中的认真细致。
我已经啰啰嗦嗦地讲了不少了,你还在等什么?还不快去账台付钱?
D. 反编译是什么意思
计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,
某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
(4)pythonida扩展阅读
反编译是一个复杂的过程,反编译软件有:
1、SWF相关的反编译程序
Action Script Viewer
第一个也是最强大的商业SWF反编译工具,同类产品中,它的AS代码反编译效果最好,SWF转Fla工程重建成功率最高。
2、Android相关的反编译程序
SMALI/BAKSMAL
SMALI/BAKSMALI是一个强大的apk文件编辑工具,用于Dalvik虚拟机(Google公司自己设计用于Android平台的虚拟机)来反编译和回编译classes.dex。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
3、Python相关的反编译程序
uncompyle2
uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件。
参考资料来源:网络-反向编译
E. 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 相关目录,重新安装一下即可。
F. idc和ida python的区别
idc 脚本 是ida 自带,相对简陋
idapython 是插件实现脚本功能,因为用python,更全面强大
G. 使用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的机制的。我做个一个项目,所有源代码自定义加密,运行时解密。
H. python打印金字塔
#-*-coding:utf-8-*-
"""
打印金字塔,随手写了个,肯定不是最优化的,供参考。
"""
defprintGoldTa(input):
L=[chr(i)foriinrange(65,91)]##大写字母A--Z
idA=65#从A开始
idInput=ord(input)
num=idInput-idA+1##A--输入的字符个数
print"A-->"+input+":"+str(num)
tempResult=""
forCinrange(0,num):
##左[ABCD]
forC1inrange(0,C):
tempResult=tempResult+L[C1]
##中[E]
tempResult=tempResult+L[C]
##右[DCBA]
forC2inrange(C-1,-1,-1):
tempResult=tempResult+L[C2]
##每行空格
forC3inrange(num-1-C):#
tempResult=""+tempResult
##输出
printtempResult
##清空临时结果
tempResult=""
#endfor
#enddef
printGoldTa("E")
printGoldTa("H")###################
A-->E:5
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
A-->H:8
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
I. IDA PRO中怎样查看寄存器的值
如果你用IDAPYTHON插件的话,用python可以使用Debugger Hooks中的GetRegValue(string Register)函数来获得,具体请见《灰帽 Python之旅》第11章。