#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
void addkey(uint8_t *title, uint8_t *key, uint8_t *titleend) {
uint8_t carry = 0;
for(size_t i = 0 ; i < 8 ; i++) {
uint8_t input = title + i >= titleend ? 0x00 : title[i];
uint16_t tmp = input + key[i] + carry;
carry = tmp > 0xFF ? 1 : 0;
title[i] = tmp & 0xFF;
}
}
void print_title(uint8_t *title) {
printf("{");
for(size_t i = 0 ; i < 32 ; i++) {
printf("0x%02x", title[i]);
if(i != 31)
printf(", ");
}
printf("}\n");
}
int main() {
uint8_t title[] = {
0x50, 0x55, 0x54, 0x20, 0x46, 0x4C, 0x41, 0x47,
0x20, 0x48, 0x45, 0x52, 0x45, 0x20, 0x54, 0x4F,
0x20, 0x50, 0x4C, 0x41, 0x59, 0x20, 0x4D, 0x55,
0x53, 0x49, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00
};
uint8_t key[] = {
0xCF, 0xC6, 0x3C, 0xF7, 0xFF, 0x7F, 0x00, 0x00
};
for(size_t i = 0 ; i < 0x20 ; i += 3) {
addkey(title + i, key, title + 0x20);
}
print_title(title);
}