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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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