Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mlafeldt/codebreaker-rs
A Rust library to decrypt & encrypt any cheat code for CodeBreaker PS2
https://github.com/mlafeldt/codebreaker-rs
codebreaker cryptography game-hacking homebrew ps2 rust-library
Last synced: about 2 months ago
JSON representation
A Rust library to decrypt & encrypt any cheat code for CodeBreaker PS2
- Host: GitHub
- URL: https://github.com/mlafeldt/codebreaker-rs
- Owner: mlafeldt
- License: apache-2.0
- Created: 2020-05-08T18:02:25.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-06T11:40:51.000Z (10 months ago)
- Last Synced: 2024-10-13T22:49:03.874Z (2 months ago)
- Topics: codebreaker, cryptography, game-hacking, homebrew, ps2, rust-library
- Language: Rust
- Homepage: https://crates.io/crates/codebreaker
- Size: 164 KB
- Stars: 19
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# codebreaker-rs
[![Latest version](https://img.shields.io/crates/v/codebreaker.svg)](https://crates.io/crates/codebreaker)
[![Documentation](https://docs.rs/codebreaker/badge.svg)](https://docs.rs/codebreaker)
[![CI](https://github.com/mlafeldt/codebreaker-rs/workflows/CI/badge.svg)](https://github.com/mlafeldt/codebreaker-rs/actions)A Rust library to decrypt & encrypt any cheat code for CodeBreaker PS2.
Originally reverse-engineered from MIPS R5900 assembly and [converted to C](https://github.com/mlafeldt/cb2util/blob/v1.9/cb2_crypto.c) in 2006. Now ported to Rust for [fun and profit](https://github.com/mlafeldt/cb2util/pull/13).
For more information, check out my article on [7 Things I Learned From Porting a C Crypto Library to Rust](https://sharpend.io/7-things-i-learned-from-porting-a-c-crypto-library-to-rust/).
## Quickstart
Add the crate as a dependency to your `Cargo.toml`:
```toml
[dependencies]
codebreaker = "0.3"
```Now you can start decrypting some codes:
```rust
use codebreaker::Codebreaker;let input: Vec<(u32, u32)> = vec![
(0x2043AFCC, 0x2411FFFF),
(0x2A973DBD, 0x00000000),
(0xB4336FA9, 0x4DFEFB79),
(0x973E0B2A, 0xA7D4AF10),
];
let output: Vec<(u32, u32)> = vec![
(0x2043AFCC, 0x2411FFFF),
(0x201F6024, 0x00000000),
(0xBEEFC0DE, 0x00000000),
(0x2096F5B8, 0x000000BE),
];let mut cb = Codebreaker::new();
for (i, code) in input.iter().enumerate() {
assert_eq!(cb.auto_decrypt_code(code.0, code.1), output[i]);
}
```Read the [full documentation](https://docs.rs/codebreaker) for more examples.
## `no_std` support
The `codebreaker` crate has a Cargo feature named "std" that is enabled by default. In order to use the crate on embedded systems, this feature needs to be disabled:
```toml
[dependencies]
codebreaker = { version = "0.3", default-features = false }
```## License
Copyright (c) 2020-2024 Mathias Lafeldt
Licensed under the [Apache License, Version 2.0](LICENSE-APACHE) or the [MIT license](LICENSE-MIT), at your option.