mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
ptformat: Decrypt ptf files exported from ptx sessions
This commit is contained in:
parent
480e0b2a5f
commit
3cda7bcbfb
2 changed files with 29 additions and 0 deletions
|
|
@ -234,6 +234,12 @@ PTFFormat::load(std::string path, int64_t targetsr) {
|
||||||
unxor10();
|
unxor10();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special case when ptx is exported to ptf in PT
|
||||||
|
if (v == 3) {
|
||||||
|
version = 11;
|
||||||
|
unxor_ptx_to_ptf();
|
||||||
|
}
|
||||||
|
|
||||||
if (version == 0 || version == 5 || version == 7) {
|
if (version == 0 || version == 5 || version == 7) {
|
||||||
/* Haven't detected version yet so decipher */
|
/* Haven't detected version yet so decipher */
|
||||||
j = 0;
|
j = 0;
|
||||||
|
|
@ -306,6 +312,28 @@ PTFFormat::unxor10(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PTFFormat::unxor_ptx_to_ptf(void)
|
||||||
|
{
|
||||||
|
unsigned char keyy[16] = { 0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,
|
||||||
|
0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0
|
||||||
|
};
|
||||||
|
uint64_t j;
|
||||||
|
uint8_t i;
|
||||||
|
|
||||||
|
for (i = 0, j = 0x10; j < len; j++,i++) {
|
||||||
|
ptfunxored[j] ^= keyy[i];
|
||||||
|
if ((j % 16) == 0) {
|
||||||
|
i = 0;
|
||||||
|
if (ptfunxored[j] % 2 == 0) {
|
||||||
|
ptfunxored[j]++;
|
||||||
|
} else {
|
||||||
|
ptfunxored[j]--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
PTFFormat::parse(void) {
|
PTFFormat::parse(void) {
|
||||||
if (version == 5) {
|
if (version == 5) {
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,7 @@ private:
|
||||||
bool foundin(std::string haystack, std::string needle);
|
bool foundin(std::string haystack, std::string needle);
|
||||||
int parse(void);
|
int parse(void);
|
||||||
void unxor10(void);
|
void unxor10(void);
|
||||||
|
void unxor_ptx_to_ptf(void);
|
||||||
void setrates(void);
|
void setrates(void);
|
||||||
void parse5header(void);
|
void parse5header(void);
|
||||||
void parse7header(void);
|
void parse7header(void);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue