-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add mgs5
- Loading branch information
Showing
14 changed files
with
102 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# mgs5-tpp-decrypter | ||
|
||
A tool to decrypt Metal Gear Solid V: The Phantom Pain PS3/PS4 save-games | ||
|
||
``` | ||
USAGE: ./mgs5-tpp-decrypter [option] filename | ||
OPTIONS Explanation: | ||
-3 Auto-Decrypt/Encrypt PS3 File | ||
-4 Auto-Decrypt/Encrypt PS4 File | ||
``` | ||
|
||
### MD5 Hash | ||
|
||
**Note:** the tool also updates the MD5 integrity hash. | ||
|
||
``` | ||
[Update MD5 checksum (Required)] | ||
set range:0x0010,EOF+1 | ||
set [hash]:MD5 | ||
write at 0x0000:[hash] | ||
``` | ||
|
||
### Credits | ||
|
||
This tool is based (reversed) on the original Xbox [MGS 5: The Phantom Pain SecFixer](https://www.360haven.com/forums/showthread.php/45050-MGS-5-The-Phantom-Pain-SecFixer) by Philymaster |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import time | ||
from multiprocessing import Pool | ||
|
||
#desired_result = 0xDE40D74C # PS3 | ||
desired_result = 0xDF92344A # PS4 | ||
num_processes = 8 # You can adjust this based on the number of CPU cores you have. | ||
|
||
def find_solution(start, end): | ||
print ("ST=", hex(start), " END=", hex(end)) | ||
for x in range(start, end): | ||
num = x | ||
y = 0 | ||
while y < 5: | ||
num = (num ^ ((num << 13) & 0xFFFFFFFF)) & 0xFFFFFFFF | ||
num = (num ^ ((num >> 7) & 0xFFFFFFFF)) & 0xFFFFFFFF | ||
num = (num ^ ((num << 5) & 0xFFFFFFFF)) & 0xFFFFFFFF | ||
y += 1 | ||
|
||
if (num == desired_result): | ||
print("X=", hex(x), " Y=", y) # Return the solution if found | ||
return x # Return the solution if found | ||
|
||
return None # Return None if no solution found in this range | ||
|
||
def main(): | ||
start_time = time.time() | ||
|
||
with Pool(num_processes) as pool: | ||
# Divide the search space into equal parts for parallel processing | ||
partition_size = 2**32 // num_processes | ||
ranges = [(i * partition_size, (i + 1) * partition_size) for i in range(num_processes)] | ||
|
||
results = pool.starmap(find_solution, ranges) | ||
|
||
# Combine the results and print the solution if found | ||
for result in results: | ||
if result is not None: | ||
print("Solution found: x =", result) | ||
break | ||
|
||
end_time = time.time() | ||
execution_time = end_time - start_time | ||
print("Execution time:", execution_time, "seconds") | ||
|
||
if __name__ == "__main__": | ||
main() |
Binary file not shown.