OpenTViX encryption
From OpenTViX
Encryption/decryption was first reverse engineerd by BadEip.
The following code by Leader's is confirmed working on all models.
#include <stdio.h>
#define TVIX_HEX1 0x5A
#define TVIX_HEX2 0xA5
void tvixEncrypt(unsigned char *buf, int size) {
if (size<=0)
return;
unsigned char *v1=buf;
unsigned int v0;
int i;
for (i=0; i<size; i++) {
v0=((unsigned int)(*v1)+0xFF)&0xFF;
v0 = v0 < 0xFE ? 1 : 0;
if ((v0!=0) && ((*v1)!=TVIX_HEX1) && ((*v1)!=TVIX_HEX2)) {
v0=(*v1)^TVIX_HEX1;
*(buf+i)=v0;
}
*v1=*(v1)^0xFFFFFF88;
v1++;
}
}
void tvixDecrypt(unsigned char *buf, int size) {
if (size<=0)
return;
unsigned char *v1=buf;
unsigned int v0;
int i;
for (i=0; i<size; i++) {
v0=(unsigned int) (*v1)^0xFFFFFF88;
*v1=v0;
v0=((unsigned int)(*v1)+0xFFFF)&0xFF;
v0 = v0 < 0xFE ? 1 : 0;
if ((v0!=0) && ((*v1)!=TVIX_HEX1) && ((*v1)!=TVIX_HEX2)) {
v0=(*v1)^TVIX_HEX1;
*(buf+i)=v0;
}
v1++;
}
}