UVSGXOR
Jump to navigation
Jump to search
This code simply returns the initial checksum of a UVSG command, provided you (1) give it a sample command that ends in $00 <checksum> and (2) strip off the 55 AA at the beginning. It's probably poorly written, but it works.
#import <stdio.h>
int main(int argc, char *argv[]) {
int i=0, j, checksum;
char *buf = "<PUT AN EXAMPLE COMMAND HERE>";
char *hexPtr = buf;
unsigned int *result = calloc(strlen(buf)/2 + 1, sizeof *result);
while (sscanf(hexPtr, "%02x", &result[i++])) {
hexPtr += 2;
if (hexPtr >= buf + strlen(buf)) break;
}
for (j = i; j > -1; j--) {
if (j == (i-1)) {
checksum = (int)result[j];
}
if (j < (i-1)) {
checksum = checksum ^ (int)result[j];
}
}
printf("\n%02x\n", checksum);
}