.NET ViewState解码器
viewstate的Python项目详细描述
一个用于解码ASP.NET viewstate的小型Python 3.5+库
viewstate是asp.net框架中使用的一种方法,用于跨回发保存对web表单的更改。它通常保存在隐藏的窗体字段中:
<inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value="/wEP...">
解码视图状态在ASP.NET应用程序的渗透测试中非常有用,同时还可以显示更多可用于有效刮除网页的信息。
安装
$ pip install viewstate
用法
Viewstate解码器接受Base64编码的.netviewstate数据,并以纯Python对象的形式返回解码输出
使用这个软件包有两种主要方法。首先,它可以用作具有以下典型用例的导入库:
>>>fromviewstateimportViewState>>>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.signatureb'....'
开发
$ pytest
参考文献
由于没有关于.net viewstate如何编码的公开规范,反向工程是基于先前的工作:
- https://github.com/mutantzombie/JavaScript-ViewState-Parser
- http://viewstatedecoder.azurewebsites.net/
任何官方文档都会很乐意接受,以帮助改进解析逻辑。
许可证
麻省理工学院