add PC save file formats and encrypt/decrypt functions

This commit is contained in:
Martin Michelsen
2023-09-23 17:01:37 -07:00
parent 85897baaeb
commit cc70280761
30 changed files with 412 additions and 79 deletions
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+20 -20
View File
@@ -7,30 +7,30 @@ if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
echo "... decode gci/quest-ep3.gci"
$EXECUTABLE decode-gci tests/gci/quest-ep3.gci
diff tests/gci/quest-ep3.dec tests/gci/quest-ep3.gci.dec
echo "... decode gci/quest-unencrypted.gci"
$EXECUTABLE decode-gci tests/gci/quest-unencrypted.gci
diff tests/gci/quest-unencrypted.dec tests/gci/quest-unencrypted.gci.dec
echo "... decode gci/quest-with-key.gci"
$EXECUTABLE decode-gci tests/gci/quest-with-key.gci
diff tests/gci/quest-with-key.dec tests/gci/quest-with-key.gci.dec
echo "... decode gci/quest-without-key.gci"
$EXECUTABLE decode-gci tests/gci/quest-without-key.gci --seed=1705B11E
diff tests/gci/quest-without-key.dec tests/gci/quest-without-key.gci.dec
echo "... decode saves/quest-ep3.gci"
$EXECUTABLE decode-gci tests/saves/quest-ep3.gci
diff tests/saves/quest-ep3.dec tests/saves/quest-ep3.gci.dec
echo "... decode saves/quest-unencrypted.gci"
$EXECUTABLE decode-gci tests/saves/quest-unencrypted.gci
diff tests/saves/quest-unencrypted.dec tests/saves/quest-unencrypted.gci.dec
echo "... decode saves/quest-with-key.gci"
$EXECUTABLE decode-gci tests/saves/quest-with-key.gci
diff tests/saves/quest-with-key.dec tests/saves/quest-with-key.gci.dec
echo "... decode saves/quest-without-key.gci"
$EXECUTABLE decode-gci tests/saves/quest-without-key.gci --seed=1705B11E
diff tests/saves/quest-without-key.dec tests/saves/quest-without-key.gci.dec
echo "... re-encrypt gci/save-charfile.gci"
$EXECUTABLE encrypt-gci-save --sys=tests/gci/save-system.gci tests/gci/save-charfile.gcid tests/gci/save-charfile.gci
$EXECUTABLE decrypt-gci-save --sys=tests/gci/save-system.gci tests/gci/save-charfile.gci tests/gci/save-charfile-redec.gcid
hexdump -vC tests/gci/save-charfile.gcid > tests/gci/save-charfile.gcid.hex
hexdump -vC tests/gci/save-charfile-redec.gcid > tests/gci/save-charfile-redec.gcid.hex
echo "... re-encrypt saves/save-charfile.gci"
$EXECUTABLE encrypt-gci-save --sys=tests/saves/save-system.gci tests/saves/save-charfile.gcid tests/saves/save-charfile.gci
$EXECUTABLE decrypt-gci-save --sys=tests/saves/save-system.gci tests/saves/save-charfile.gci tests/saves/save-charfile-redec.gcid
hexdump -vC tests/saves/save-charfile.gcid > tests/saves/save-charfile.gcid.hex
hexdump -vC tests/saves/save-charfile-redec.gcid > tests/saves/save-charfile-redec.gcid.hex
# There should be differences on two lines: the checksum and the round2 seed
NUM_DIFF_LINES=$(diff -y --suppress-common-lines tests/gci/save-charfile.gcid.hex tests/gci/save-charfile-redec.gcid.hex | wc -l)
NUM_DIFF_LINES=$(diff -y --suppress-common-lines tests/saves/save-charfile.gcid.hex tests/saves/save-charfile-redec.gcid.hex | wc -l)
if [[ $NUM_DIFF_LINES -ne 2 ]]; then
diff -U3 tests/gci/save-charfile.gcid.hex tests/gci/save-charfile-redec.gcid.hex
diff -U3 tests/saves/save-charfile.gcid.hex tests/saves/save-charfile-redec.gcid.hex
exit 1
fi
echo "... clean up"
rm tests/gci/*.gci.dec tests/gci/save-charfile.gci tests/gci/save-charfile-redec.gcid tests/gci/*.hex
rm tests/saves/*.gci.dec tests/saves/save-charfile.gci tests/saves/save-charfile-redec.gcid tests/saves/*.gcid.hex
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
set -e
EXECUTABLE="$1"
if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
echo "... decrypt saves/pc_gud.bin"
$EXECUTABLE decrypt-pc-save tests/saves/pc_gud.bin --seed=1705B11E
diff tests/saves/pc_gud.dec tests/saves/pc_gud.bin.dec
echo "... decrypt saves/pc_sys.bin"
$EXECUTABLE decrypt-pc-save tests/saves/pc_sys.bin --seed=1705B11E
diff tests/saves/pc_sys.dec tests/saves/pc_sys.bin.dec
echo "... clean up"
rm tests/saves/pc_*.bin.dec
+7 -7
View File
@@ -7,12 +7,12 @@ if [ "$EXECUTABLE" == "" ]; then
EXECUTABLE="./newserv"
fi
echo "... decode vms/lionel-v1.vms"
$EXECUTABLE decode-vms tests/vms/lionel-v1.vms
diff tests/vms/lionel-v1.dec tests/vms/lionel-v1.vms.dec
echo "... decode vms/lionel-v2.vms"
$EXECUTABLE decode-vms tests/vms/lionel-v2.vms --seed=D0231610
diff tests/vms/lionel-v2.dec tests/vms/lionel-v2.vms.dec
echo "... decode saves/lionel-v1.vms"
$EXECUTABLE decode-vms tests/saves/lionel-v1.vms
diff tests/saves/lionel-v1.dec tests/saves/lionel-v1.vms.dec
echo "... decode saves/lionel-v2.vms"
$EXECUTABLE decode-vms tests/saves/lionel-v2.vms --seed=D0231610
diff tests/saves/lionel-v2.dec tests/saves/lionel-v2.vms.dec
echo "... clean up"
rm tests/vms/*.vms.dec
rm tests/saves/*.vms.dec