Difference between revisions of "Category:Save Data"

From COD Engine Research
Jump to: navigation, search
(Black Ops)
Line 12: Line 12:
 
Treyarch has added additional protection on the save data. It is first encrypted using Sony's AES algorithm, after decrypting that layer it is additionally encrypted using the Triple DES algorithm.
 
Treyarch has added additional protection on the save data. It is first encrypted using Sony's AES algorithm, after decrypting that layer it is additionally encrypted using the Triple DES algorithm.
  
Tripple DES key:
+
Triple DES key:
 
<source lang="cpp">
 
<source lang="cpp">
 
unsigned char black_ops_3des_key[24] = "Md8ea20lPcftYwsl496q63x9"
 
unsigned char black_ops_3des_key[24] = "Md8ea20lPcftYwsl496q63x9"
 
</source>
 
</source>
  
Tripple DES IV (Initialization Vector)
+
Triple DES IV (Initialization Vector)
 
<source lang="cpp">
 
<source lang="cpp">
 
unsigned char black_ops_3des_iv[24] = "0Peyx825J4S2ndpr54rW312z"
 
unsigned char black_ops_3des_iv[24] = "0Peyx825J4S2ndpr54rW312z"

Revision as of 07:34, 21 February 2015

GPADX.PRF Files

These files (GPADX_MP.PRF, GPADX_CM.PRF, GPADX_SP.PRF) contain variables related to game settings.

Call of Duty 4: Modern Warfare, World at War

Call of Duty 4 stores the GPAD files in plaintext. The max size the file can be is 1000 bytes. It was then later patched by Infinity Ward because users started to edit the files to exploit the game.

World at War in the other hand, is encrypted using Sony's AES encryption algorithm. After decrypting that layer the GPAD's is going to be plaintext just like Call of Duty 4. Treyarch hasn't bothered in patching the files, which allows modifications on the game.

Both games use .cfg codes, which is easy to manipulate dvars (Developer Vars).

Black Ops

Treyarch has added additional protection on the save data. It is first encrypted using Sony's AES algorithm, after decrypting that layer it is additionally encrypted using the Triple DES algorithm.

Triple DES key:

unsigned char black_ops_3des_key[24] = "Md8ea20lPcftYwsl496q63x9"

Triple DES IV (Initialization Vector)

unsigned char black_ops_3des_iv[24] = "0Peyx825J4S2ndpr54rW312z"

After decrypting this DES layer it is then plaintext and you are able to edit the file to your liking, allowing you to edit dvars and .cfg code.

Modern Warfare 2, Modern Warfare 3, Ghosts, Advanced Warfare

enum GamerProfileDataType
{
  TYPE_INVALID = 0x0,
  TYPE_BYTE = 0x1,
  TYPE_BOOL = 0x2,
  TYPE_SHORT = 0x3,
  TYPE_INT = 0x4,
  TYPE_FLOAT = 0x5,
  TYPE_STRING = 0x6,
  TYPE_BITFIELD = 0x7,
};
 
union GamerProfileDataUnion
{
  char byteVal;
  bool boolVal;
  __int16 shortVal;
  int intVal;
  float floatVal;
  const char *stringVal;
};
 
struct GamerProfileData
{
  GamerProfileDataType type;
  GamerProfileDataUnion u;
};

SAVEGAME.SVG

World at War

struct qtime_s
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;
};
 
struct SaveHeader
{
 int saveVersion;
 int gameCheckSum;
 int saveCheckSum;
 int saveId;
 bool isUsingScriptChecksum;
 int scrCheckSum[3];
 char mapName[256];
 char buildNumber[128];
 char campaign[256];
 char screenShotName[64];
 char description[256];
 char filename[64];
 int health;
 int skill;
 bool internalSave;
 qtime_s time;
 int server_bodySize;
 int client_bodySize;
};

Black Ops II

enum SaveType
{
  SAVE_TYPE_INTERNAL = 0x0,
  SAVE_TYPE_AUTOSAVE = 0x1,
  SAVE_TYPE_CONSOLE = 0x2,
};
 
struct qtime_s
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;
};
 
struct SaveHeader
{
  int saveVersion;
  int gameCheckSum;
  int saveCheckSum;
  int saveId;
  bool demoPlayback;
  bool splitscreen;
  int scrCheckSum[3];
  char mapName[256];
  char buildNumber[128];
  char gametype[256];
  char buildVersionSuffix[16];
  unsigned int networkProtocol;
  char screenShotName[64];
  char description[256];
  char filename[64];
  SaveType saveType;
  qtime_s time;
  int bodySize;
  unsigned int pad[8];
};

Ghosts

enum SaveType
{
  SAVE_TYPE_INTERNAL = 0x0,
  SAVE_TYPE_AUTOSAVE = 0x1,
  SAVE_TYPE_CONSOLE = 0x2,
  SAVE_TYPESCOUNT = 0x3,
};
 
struct qtime_s
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;
};
 
struct SaveHeader
{
  int saveVersion;
  int gameCheckSum;
  int saveCheckSum;
  int saveId;
  bool demoPlayback;
  bool splitscreen;
  int scrCheckSum[3];
  char mapName[256];
  char buildNumber[128];
  unsigned int omnvarPerGameCount;
  unsigned int omnvarPerClientCount;
  char gametype[128];
  char buildVersionSuffix[16];
  unsigned int networkProtocol;
  char screenShotName[64];
  char description[256];
  char filename[64];
  SaveType saveType;
  qtime_s time;
  int bodySize;
  unsigned int pad[6];
};

This category currently contains no pages or media.