Push 0.10.0
This commit is contained in:
parent
266f3fc76d
commit
12c05afa57
25 changed files with 2016 additions and 645 deletions
1
docs/.gitignore
vendored
Normal file
1
docs/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
*.svg
|
||||
53
docs/README.md
Normal file
53
docs/README.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# LibRay 1.0.0 Specification
|
||||
|
||||
**Note**
|
||||
This specification has not been implemented yet.
|
||||
|
||||
**Note**
|
||||
Work in progress.
|
||||
|
||||
## User interaction
|
||||
|
||||
Here is a flow diagram to explain the different ways a user can interact with LibRay:
|
||||
|
||||
![LiBray flow][flow]
|
||||
|
||||
As you can see there are three main routes:
|
||||
|
||||
1. The user has a key (in hex)
|
||||
2. The user has an .ird
|
||||
3. The user has nothing
|
||||
|
||||
It is assumed that no. 3 is the most common way to use LibRay, simply give it your .iso file and let LibRay decrypt it.
|
||||
|
||||
|
||||
## Database
|
||||
|
||||
LiBray bundles a database containing two tables:
|
||||
|
||||
- ird: containing parsed data from various .ird dumps
|
||||
- redump: containing parsed data from redump
|
||||
|
||||
![LibRay DB tables][tables]
|
||||
|
||||
|
||||
## Dependencies
|
||||
|
||||
- crypto: `pycryptodomex`
|
||||
- progressbar: `tqdm`
|
||||
- http/https: `requests`
|
||||
- html: `beautifulsoup4`
|
||||
|
||||
In previous versions there were problems where dependencies interfered with eachother (notably, `crypto` vs `pycrypto` vs `pycryptodome`), so 1.0.0 and above uses `pycryptodomex` which is standalone from the previously mentioned packages.
|
||||
|
||||
## Packaging
|
||||
|
||||
- [Poetry](https://python-poetry.org/)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[flow]: flow.png "LibRay user interaction flowchart"
|
||||
[tables]: tables.png "LibRay database tables"
|
||||
|
||||
81
docs/flow.d2
Normal file
81
docs/flow.d2
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
direction: down
|
||||
|
||||
Start: {
|
||||
Ird: libray -i encrypted.iso -d game.ird
|
||||
Manual: libray -i encrypted.iso -d supplied_key
|
||||
Automatic: libray -i encrypted.iso
|
||||
Info: libray -i game.iso --info
|
||||
}
|
||||
|
||||
End: {
|
||||
Dead: { shape: circle }
|
||||
Success?: { shape: circle }
|
||||
}
|
||||
|
||||
|
||||
PrintInfo: Print info about .iso
|
||||
|
||||
Start.Info -> PrintInfo
|
||||
|
||||
Process: decrypt or re-encrypt
|
||||
|
||||
VerifyIrd: Verify \n title ID { shape: diamond }
|
||||
|
||||
Key: "" {
|
||||
|
||||
NoVerify: No verification, \n use given key
|
||||
IrdKey: Use .ird key
|
||||
UseBundled: Use bundled key
|
||||
UseSelected: Use selected key
|
||||
|
||||
}
|
||||
|
||||
|
||||
Start.Manual -> Key.NoVerify -> Process -> End.Success?
|
||||
|
||||
|
||||
Start.Ird -> VerifyIrd
|
||||
VerifyIrd -> End.Dead: Wrong ID
|
||||
VerifyIrd -> Key.IrdKey: Same ID in .ird and .iso
|
||||
Key.IrdKey -> Process
|
||||
|
||||
Bundled: "" {
|
||||
|
||||
CheckIrd: Check for \n bundled .ird { shape: diamond }
|
||||
CheckKeys: Check for \n bundled key { shape: diamond }
|
||||
Size: Size { shape: diamond }
|
||||
SCN: Size \n Country \n Name { shape: diamond }
|
||||
Choose: Let user \n Choose { shape: diamond }
|
||||
|
||||
CheckKeys -> Size
|
||||
Size -> SCN: Multiple keys
|
||||
SCN -> Choose: Multiple keys
|
||||
|
||||
|
||||
}
|
||||
|
||||
Net: "" {
|
||||
Search: Search for .ird online with title ID
|
||||
Jonny: jonnysp { shape: diamond }
|
||||
Aldos: aldostools { shape: diamond }
|
||||
}
|
||||
|
||||
Bundled.Size -> Key.UseBundled: Single key
|
||||
Bundled.SCN -> Key.UseBundled: Single key
|
||||
Bundled.Choose -> Key.UseSelected
|
||||
Bundled.SCN -> Net.Search: No keys
|
||||
Key.UseSelected -> Process
|
||||
Key.UseBundled -> Process
|
||||
Bundled.Choose -> Net.Search: Not opted in \n None selected
|
||||
|
||||
Start.Automatic -> Bundled.CheckIrd
|
||||
Bundled.CheckIrd -> Key.IrdKey: Title ID Match
|
||||
Bundled.CheckIrd -> Bundled.CheckKeys: No keys / No match
|
||||
Bundled.CheckKeys -> Net.Search: No keys
|
||||
Net.Search -> Net.Jonny
|
||||
Net.Jonny -> Net.Aldos: no .ird / \n is down
|
||||
Net.Aldos -> End.Dead: no .ird
|
||||
Net.Jonny -> Key.IrdKey: .ird found
|
||||
Net.Aldos -> Key.IrdKey: .ird found
|
||||
|
||||
|
||||
BIN
docs/flow.png
BIN
docs/flow.png
Binary file not shown.
|
Before Width: | Height: | Size: 444 KiB After Width: | Height: | Size: 223 KiB |
20
docs/tables.d2
Normal file
20
docs/tables.d2
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
|
||||
ird: {
|
||||
shape: sql_table
|
||||
title_id TEXT
|
||||
name TEXT
|
||||
size BIGINT
|
||||
key BLOB
|
||||
}
|
||||
|
||||
redump: {
|
||||
shape: sql_table
|
||||
name TEXT
|
||||
size BIGINT
|
||||
crc32 TEXT
|
||||
md5 TEXT
|
||||
sha1 TEXT
|
||||
key BLOB
|
||||
}
|
||||
|
||||
BIN
docs/tables.png
Normal file
BIN
docs/tables.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
Loading…
Add table
Add a link
Reference in a new issue