PPaste!

Home - All the pastes - Authored by Thooms

Raw version

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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);
}