Difference between revisions of "UVSGXOR"
Jump to navigation
Jump to search
m (Reverted edits by YRUPOOPBANANS (Talk) to last revision by AriX) |
|||
Line 1: | Line 1: | ||
− | [[ | + | 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. |
+ | |||
+ | <code> | ||
+ | #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); | ||
+ | } | ||
+ | </code> |
Latest revision as of 13:43, 25 January 2011
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);
}