OpenTViX encryption

From OpenTViX

Jump to: navigation, search

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++;
 }
}
Personal tools