Skip to main content

A Python library for handling IPS patches

Project description

ips.py

A Python library for handling IPS patches.

I wanted to create this as there was no suitable library for how I wanted to manipulate IPS patches, which at the time was just changing the offsets in the records. Since then I have wanted to extend it for my own needs, and for the potential needs of others.

The logic for creating patches from two file objects is taken from flips, which creates very good, small patches.

How to use

To import the library, do

import ips

To get a Patch object from an IPS file, do

with open("path/to/patch.ips", "rb") as f:
    p = ips.Patch.load(f)

If you already have the bytes of the IPS file, you can do

with open("path/to/patch.ips", "rb") as f:
    cont = f.read()

...

p = ips.Patch.load(cont)

To apply a Patch object, do

with open("path/to/original/file.bin", "rb") as old, open("path/to/new/file.bin", "wb") as new:
    p.apply(old, new)

If you don't want to necessarily write it to a new file, you can do

import io

new = io.BytesIO()
with open("path/to/original/file.bin", "rb") as old:
    p.apply(old, new)

To create a Patch object from two file objects, do

with open("path/to/original/file.bin", "rb") as old, open("path/to/new/file.bin", "rb") as new:
    p = ips.Patch.create(old, new)

To pack a Patch object into a bytes object, do

bytes(p)

To add a record to a Patch object, use the add_record method.

To get a list of records in a Patch object, use the records attribute.

To get whether a Patch object is using the IPS32 format, which allows for offsets up to 4 GiB, check the ips32 attribute.

Project details


Download files

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

Source Distribution

ips.py-0.1.2.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

ips.py-0.1.2-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

Details for the file ips.py-0.1.2.tar.gz.

File metadata

  • Download URL: ips.py-0.1.2.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.1

File hashes

Hashes for ips.py-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b91ddde1ea146937b8e60b8c5bf724ab5b1000909b588c66f268e6160581591d
MD5 6af323511979dcd678acad4462c6cb38
BLAKE2b-256 16566e74cdaac9f774beeacc85b61e5f2845cb92f7337a78a9739498ff8b9f4a

See more details on using hashes here.

File details

Details for the file ips.py-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ips.py-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 16.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.1

File hashes

Hashes for ips.py-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 59c29d8646e00f2aa034b248832af11b6d147d68d85ae27d23c33489393b40bb
MD5 bd18072e5e03e90faefbb3d82e33b7fa
BLAKE2b-256 b876441bff94f9fe852bed1c4e1e7d5c7535704b04dc88de218e41e49bea2678

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page