Skip to main content

A small Python 3.5+ library for decoding .NET viewstate. Can be used in various scraping scenarios.

https://travis-ci.org/yuvadm/viewstate.svg?branch=master

Install

$ pip install viewstate

Usage

The Viewstate decoder accepts Base64 encoded .NET viewstate data and returns the decoded output in the form of plain Python objects.

There are two main ways to use this package. First, it can be used as an imported library with the following typical use case:

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

It is also possible to feed the raw bytes directly:

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

Alternatively, the library can be used via command line by directly executing the module:

$ cat data.base64 | python -m viewstate

Which will pretty-print the decoded data structure.

The command line usage can also accept raw bytes with the -r flag:

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

Viewstate HMAC signatures are also supported. In case there are any remaining bytes after parsing, they are assumed to be HMAC signatures, with the types estimated according to signature length.

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

Development

$ pytest

References

Since there is no publically available specification of how .NET viewstate is encoded, reverse engineering was based on prior work:

Any official documents would be gladly accepted to help improve the parsing logic.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

viewstate-0.4.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

viewstate-0.4.0-py2.py3-none-any.whl (7.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file viewstate-0.4.0.tar.gz.

File metadata

  • Download URL: viewstate-0.4.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for viewstate-0.4.0.tar.gz
Algorithm Hash digest
SHA256 63ceaa923ae95d31c2c18103157b8eff9c5bc2e1d2c0622a1dfb28110e957f77
MD5 683024ef2c3ac9caf142e9c848890020
BLAKE2b-256 7f05141b95c9df47f20c5ae7a3ed46fb9c0401b273ff71bd8cb9a70c5b3fddb4

See more details on using hashes here.

File details

Details for the file viewstate-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for viewstate-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2fb6d7014b8db93d914f7c1e697ecc95ded6b4cfefe5d0b132e005af59b915c3
MD5 f153449e473f35eeb611f12bdafd0ab3
BLAKE2b-256 4a8d5f37170b10d3f6fffd44a84bc16ab155ae07e8006ca73d2689b6fc7a8831

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.0

2 files

0.6.0

2 files

0.5.3

1 file

0.5.2

1 file

0.5.1

1 file

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

This release

0.4.0 This release

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

1 file

0.2.0

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page