Initial commit for SIA HS Daemon.

This commit is contained in:
Wilco Baan Hofman 2012-07-28 21:44:09 +02:00
commit 9d49055b90
10 changed files with 2478 additions and 0 deletions

6
tryouts/Makefile Normal file
View file

@ -0,0 +1,6 @@
CFLAGS=-ggdb -g -Wall
all: crc_validate
clean:
rm -f *.o crc_validate

183
tryouts/crc_validate.c Normal file
View file

@ -0,0 +1,183 @@
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include "packets.h"
char *bin(uint16_t x)
{
char *b = malloc(17);
b[0] = '\0';
uint16_t z;
for (z = 1 << 15; z > 0; z >>= 1) {
strcat(b, (x & z) ? "1" : "0");
}
return b;
}
void create_packet_array(const uint8_t *packets[2][40])
{
packets[0][0] = peer0_0;
packets[0][1] = peer0_1;
packets[0][2] = peer0_2;
packets[0][3] = peer0_3;
packets[0][4] = peer0_4;
packets[0][5] = peer0_5;
packets[0][6] = peer0_6;
packets[0][7] = peer0_7;
packets[0][8] = peer0_8;
packets[0][9] = peer0_9;
packets[0][10] = peer0_10;
packets[0][11] = peer0_11;
packets[0][12] = peer0_12;
packets[0][13] = peer0_13;
packets[0][14] = peer0_14;
packets[0][15] = peer0_15;
packets[0][16] = peer0_16;
packets[0][17] = peer0_17;
packets[0][18] = peer0_18;
packets[0][19] = peer0_19;
packets[0][20] = peer0_20;
packets[0][21] = peer0_21;
packets[0][22] = peer0_22;
packets[0][23] = peer0_23;
packets[0][24] = peer0_24;
packets[0][25] = peer0_25;
packets[0][26] = peer0_26;
packets[0][27] = peer0_27;
packets[0][28] = peer0_28;
packets[0][29] = peer0_29;
packets[0][30] = peer0_30;
packets[0][31] = peer0_31;
packets[0][32] = peer0_32;
packets[0][33] = peer0_33;
packets[0][34] = peer0_34;
packets[0][35] = peer0_35;
packets[0][36] = peer0_36;
packets[0][37] = peer0_37;
packets[0][38] = peer0_38;
packets[0][39] = peer0_39;
packets[1][0] = peer1_0;
packets[1][1] = peer1_1;
packets[1][2] = peer1_2;
packets[1][3] = peer1_3;
packets[1][4] = peer1_4;
packets[1][5] = peer1_5;
packets[1][6] = peer1_6;
packets[1][7] = peer1_7;
packets[1][8] = peer1_8;
packets[1][9] = peer1_9;
packets[1][10] = peer1_10;
packets[1][11] = peer1_11;
packets[1][12] = peer1_12;
packets[1][13] = peer1_13;
packets[1][14] = peer1_14;
packets[1][15] = peer1_15;
packets[1][16] = peer1_16;
packets[1][17] = peer1_17;
packets[1][18] = peer1_18;
packets[1][19] = peer1_19;
packets[1][20] = peer1_20;
packets[1][21] = peer1_21;
packets[1][22] = peer1_22;
packets[1][23] = peer1_23;
packets[1][24] = peer1_24;
packets[1][25] = peer1_25;
packets[1][26] = peer1_26;
packets[1][27] = peer1_27;
packets[1][28] = peer1_28;
packets[1][29] = peer1_29;
packets[1][30] = peer1_30;
packets[1][31] = peer1_31;
packets[1][32] = peer1_32;
packets[1][33] = peer1_33;
packets[1][34] = peer1_34;
packets[1][35] = peer1_35;
packets[1][36] = peer1_36;
packets[1][37] = peer1_37;
packets[1][38] = peer1_38;
packets[1][39] = peer1_39;
}
#define POLYNOMIAL 0x3FF0
#define WIDTH (16)
#define TOPBIT (1 << (WIDTH - 1))
uint16_t
crcSlow(uint8_t const message[], int nBytes)
{
uint16_t remainder = 0x10d0;
int byte;
uint8_t bit;
for (byte = 0; byte < nBytes; ++byte) {
remainder ^= message[byte];
for (bit = 0; bit < 8; bit++) {
if (remainder & 1) {
remainder = ((remainder >> 1) ^ POLYNOMIAL);
} else {
remainder = (remainder >> 1);
}
}
}
return (remainder);
} /* crcSlow() */
int main (int argc, char **argv)
{
int i,j;
const uint8_t *pkts[2][40];
uint8_t decode_xor;
create_packet_array(pkts);
for (j = 0; j < 40; j++) {
for (i = 0; i < 2; i++) {
if (i == 0)
decode_xor = 0xB6;
else
decode_xor = 0x85;
uint32_t len = ntohl(*(uint32_t*) pkts[i][j]);
uint8_t decoded[len - 5];
uint16_t crc, calc_crc, nondecoded_crc;
uint32_t k;
uint16_t sum = 0;
len = ntohl(*(uint32_t*) pkts[i][j]);
decoded[sizeof(decoded)-1] = '\0';
for (k = 0; k < len-6; k++) {
decoded[k] = pkts[i][j][k + 8] ^ decode_xor;
}
printf("%s\n", decoded+26);
for (k = 0; k < len+2; k++) {
sum += pkts[i][j][k];
}
crc = ntohs(*(uint16_t*)&decoded[len - 6]);
calc_crc = crcSlow(decoded, len - 6);
nondecoded_crc = ntohs(*(uint16_t*)&pkts[i][j][len+2]);
printf("%04x %04x peer %d len %x\n",
nondecoded_crc, sum, i, len);
}
}
return 0;
}

1360
tryouts/packets.h Normal file

File diff suppressed because it is too large Load diff

BIN
tryouts/sia.pcap Normal file

Binary file not shown.