Skip to main content

ASP.NET 视图状态解码器

项目描述

用于解码 ASP.NET 视图状态的小型 Python 3.5+ 库。

Viewstate 是 ASP.NET 框架中使用的一种方法,用于在回发之间将更改持久保存到 Web 表单。它通常保存在隐藏的表单域中:

<input type=<s>"hidden"</s> name=<s>"__VIEWSTATE"</s> id=<s>"__VIEWSTATE"</s> value=<s>"/wEP..."</s>>

解码视图状态在 ASP.NET 应用程序的渗透测试中很有用,也可以揭示更多可用于有效抓取网页的信息。

https://github.com/yuvadm/viewstate/workflows/Build/badge.svg https://img.shields.io/pypi/v/viewstate

安装

$ pip install viewstate

用法

Viewstate 解码器接受 Base64 编码的 .NET viewstate 数据,并以纯 Python 对象的形式返回解码后的输出。

使用这个包有两种主要方法。首先,它可以用作具有以下典型用例的导入库:

>>> from viewstate import ViewState
>>> base64_encoded_viewstate = '/wEPBQVhYmNkZQ9nAgE='
>>> vs = ViewState(base64_encoded_viewstate)
>>> vs.decode()
('abcde', (True, 1))

也可以直接提供原始字节:

>>> vs = ViewState(raw=b'\xff\x01....')

或者,可以通过命令行直接执行模块来使用该库:

$ cat data.base64 | python -m viewstate

这将漂亮地打印解码的数据结构。

命令行用法也可以接受带有-r标志的原始字节:

$ cat data.base64 | base64 -d | python -m viewstate -r

还支持 Viewstate HMAC 签名。如果解析后还有剩余字节,则假定它们是HMAC签名,根据签名长度估计类型。

>>> vs = ViewState(signed_view_state)
>>> vs.decode()
>>> vs.mac
'hmac_sha256'
>>> vs.signature
b'....'

发展

可以使用pipenv安装开发包。单元测试和代码格式化任务可以使用内置脚本运行:

$ pipenv sync -d
$ pipenv run test
$ pipenv run format

对于 PyPI 版本,请遵循构建、检查和上传脚本。

$ pipenv run build
$ pipenv run check
$ pipenv run upload

请注意,要上传新的包版本,应在~/.pypirc中定义有效的 PyPI 身份验证令牌。

参考

由于没有关于 .NET 视图状态如何编码的公开规范,因此逆向工程基于先前的工作:

我们很乐意接受任何官方文档来帮助改进解析逻辑。

执照

麻省理工学院

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

viewstate-0.5.3.tar.gz (8.4 kB 图哈希)

已上传 source