diff options
Diffstat (limited to 'src/protocol.c')
-rw-r--r-- | src/protocol.c | 135 |
1 files changed, 60 insertions, 75 deletions
diff --git a/src/protocol.c b/src/protocol.c index bb26392..5aaccc2 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -301,6 +301,7 @@ prne_htbt_ser_rc_t prne_dec_host_cred ( void prne_htbt_init_host_info (prne_htbt_host_info_t *hi) { prne_memzero(hi, sizeof(prne_htbt_host_info_t)); + hi->parent_uptime = hi->child_uptime = 0xFFFFFFFF; } bool prne_htbt_alloc_host_info ( @@ -642,7 +643,7 @@ prne_htbt_ser_rc_t prne_htbt_ser_host_info ( return PRNE_HTBT_SER_RC_FMT_ERR; } - *actual = 112 + in->host_cred_len + in->bf_len; + *actual = 104 + in->host_cred_len + in->bf_len; if (mem_len < *actual) { return PRNE_HTBT_SER_RC_MORE_BUF; } @@ -651,56 +652,48 @@ prne_htbt_ser_rc_t prne_htbt_ser_host_info ( memcpy(mem + 16, in->boot_id, 16); memcpy(mem + 32, in->instance_id, 16); memcpy(mem + 48, in->org_id, 16); - mem[64] = prne_getmsb64(in->parent_uptime, 0); - mem[65] = prne_getmsb64(in->parent_uptime, 1); - mem[66] = prne_getmsb64(in->parent_uptime, 2); - mem[67] = prne_getmsb64(in->parent_uptime, 3); - mem[68] = prne_getmsb64(in->parent_uptime, 4); - mem[69] = prne_getmsb64(in->parent_uptime, 5); - mem[70] = prne_getmsb64(in->parent_uptime, 6); - mem[71] = prne_getmsb64(in->parent_uptime, 7); - mem[72] = prne_getmsb64(in->child_uptime, 0); - mem[73] = prne_getmsb64(in->child_uptime, 1); - mem[74] = prne_getmsb64(in->child_uptime, 2); - mem[75] = prne_getmsb64(in->child_uptime, 3); - mem[76] = prne_getmsb64(in->child_uptime, 4); - mem[77] = prne_getmsb64(in->child_uptime, 5); - mem[78] = prne_getmsb64(in->child_uptime, 6); - mem[79] = prne_getmsb64(in->child_uptime, 7); - mem[80] = prne_getmsb64(in->bne_cnt, 0); - mem[81] = prne_getmsb64(in->bne_cnt, 1); - mem[82] = prne_getmsb64(in->bne_cnt, 2); - mem[83] = prne_getmsb64(in->bne_cnt, 3); - mem[84] = prne_getmsb64(in->bne_cnt, 4); - mem[85] = prne_getmsb64(in->bne_cnt, 5); - mem[86] = prne_getmsb64(in->bne_cnt, 6); - mem[87] = prne_getmsb64(in->bne_cnt, 7); - mem[88] = prne_getmsb64(in->infect_cnt, 0); - mem[89] = prne_getmsb64(in->infect_cnt, 1); - mem[90] = prne_getmsb64(in->infect_cnt, 2); - mem[91] = prne_getmsb64(in->infect_cnt, 3); - mem[92] = prne_getmsb64(in->infect_cnt, 4); - mem[93] = prne_getmsb64(in->infect_cnt, 5); - mem[94] = prne_getmsb64(in->infect_cnt, 6); - mem[95] = prne_getmsb64(in->infect_cnt, 7); - mem[96] = prne_getmsb32(in->crash_cnt, 0); - mem[97] = prne_getmsb32(in->crash_cnt, 1); - mem[98] = prne_getmsb32(in->crash_cnt, 2); - mem[99] = prne_getmsb32(in->crash_cnt, 3); - mem[100] = prne_getmsb32(in->parent_pid, 0); - mem[101] = prne_getmsb32(in->parent_pid, 1); - mem[102] = prne_getmsb32(in->parent_pid, 2); - mem[103] = prne_getmsb32(in->parent_pid, 3); - mem[104] = prne_getmsb32(in->child_pid, 0); - mem[105] = prne_getmsb32(in->child_pid, 1); - mem[106] = prne_getmsb32(in->child_pid, 2); - mem[107] = prne_getmsb32(in->child_pid, 3); - mem[108] = (uint8_t)in->host_cred_len; - mem[109] = (uint8_t)in->arch; - mem[110] = (uint8_t)in->os; - mem[111] = (uint8_t)in->bf_len; - memcpy(mem + 112, in->host_cred, in->host_cred_len); - memcpy(mem + 112 + in->host_cred_len, in->bf, in->bf_len); + mem[64] = prne_getmsb32(in->parent_uptime, 0); + mem[65] = prne_getmsb32(in->parent_uptime, 1); + mem[66] = prne_getmsb32(in->parent_uptime, 2); + mem[67] = prne_getmsb32(in->parent_uptime, 3); + mem[68] = prne_getmsb32(in->child_uptime, 0); + mem[69] = prne_getmsb32(in->child_uptime, 1); + mem[70] = prne_getmsb32(in->child_uptime, 2); + mem[71] = prne_getmsb32(in->child_uptime, 3); + mem[72] = prne_getmsb64(in->bne_cnt, 0); + mem[73] = prne_getmsb64(in->bne_cnt, 1); + mem[74] = prne_getmsb64(in->bne_cnt, 2); + mem[75] = prne_getmsb64(in->bne_cnt, 3); + mem[76] = prne_getmsb64(in->bne_cnt, 4); + mem[77] = prne_getmsb64(in->bne_cnt, 5); + mem[78] = prne_getmsb64(in->bne_cnt, 6); + mem[79] = prne_getmsb64(in->bne_cnt, 7); + mem[80] = prne_getmsb64(in->infect_cnt, 0); + mem[81] = prne_getmsb64(in->infect_cnt, 1); + mem[82] = prne_getmsb64(in->infect_cnt, 2); + mem[83] = prne_getmsb64(in->infect_cnt, 3); + mem[84] = prne_getmsb64(in->infect_cnt, 4); + mem[85] = prne_getmsb64(in->infect_cnt, 5); + mem[86] = prne_getmsb64(in->infect_cnt, 6); + mem[87] = prne_getmsb64(in->infect_cnt, 7); + mem[88] = prne_getmsb32(in->crash_cnt, 0); + mem[89] = prne_getmsb32(in->crash_cnt, 1); + mem[90] = prne_getmsb32(in->crash_cnt, 2); + mem[91] = prne_getmsb32(in->crash_cnt, 3); + mem[92] = prne_getmsb32(in->parent_pid, 0); + mem[93] = prne_getmsb32(in->parent_pid, 1); + mem[94] = prne_getmsb32(in->parent_pid, 2); + mem[95] = prne_getmsb32(in->parent_pid, 3); + mem[96] = prne_getmsb32(in->child_pid, 0); + mem[97] = prne_getmsb32(in->child_pid, 1); + mem[98] = prne_getmsb32(in->child_pid, 2); + mem[99] = prne_getmsb32(in->child_pid, 3); + mem[100] = (uint8_t)in->host_cred_len; + mem[101] = (uint8_t)in->arch; + mem[102] = (uint8_t)in->os; + mem[103] = (uint8_t)in->bf_len; + memcpy(mem + 104, in->host_cred, in->host_cred_len); + memcpy(mem + 104 + in->host_cred_len, in->bf, in->bf_len); return PRNE_HTBT_SER_RC_OK; } @@ -872,13 +865,13 @@ prne_htbt_ser_rc_t prne_htbt_dser_host_info ( { size_t cred_size, bf_size; - *actual = 112; + *actual = 104; if (len < *actual) { return PRNE_HTBT_SER_RC_MORE_BUF; } - cred_size = data[108]; - bf_size = data[111]; + cred_size = data[100]; + bf_size = data[103]; *actual += cred_size + bf_size; if (len < *actual) { return PRNE_HTBT_SER_RC_MORE_BUF; @@ -892,16 +885,17 @@ prne_htbt_ser_rc_t prne_htbt_dser_host_info ( memcpy(out->boot_id, data + 16, 16); memcpy(out->instance_id, data + 32, 16); memcpy(out->org_id, data + 48, 16); - out->parent_uptime = prne_recmb_msb64( + out->parent_uptime = prne_recmb_msb32( data[64], data[65], data[66], - data[67], + data[67]); + out->child_uptime = prne_recmb_msb32( data[68], data[69], data[70], data[71]); - out->child_uptime = prne_recmb_msb64( + out->bne_cnt = prne_recmb_msb64( data[72], data[73], data[74], @@ -910,7 +904,7 @@ prne_htbt_ser_rc_t prne_htbt_dser_host_info ( data[77], data[78], data[79]); - out->bne_cnt = prne_recmb_msb64( + out->infect_cnt = prne_recmb_msb64( data[80], data[81], data[82], @@ -919,34 +913,25 @@ prne_htbt_ser_rc_t prne_htbt_dser_host_info ( data[85], data[86], data[87]); - out->infect_cnt = prne_recmb_msb64( + out->crash_cnt = prne_recmb_msb32( data[88], data[89], data[90], - data[91], + data[91]); + out->parent_pid = prne_recmb_msb32( data[92], data[93], data[94], data[95]); - out->crash_cnt = prne_recmb_msb32( + out->child_pid = prne_recmb_msb32( data[96], data[97], data[98], data[99]); - out->parent_pid = prne_recmb_msb32( - data[100], - data[101], - data[102], - data[103]); - out->child_pid = prne_recmb_msb32( - data[104], - data[105], - data[106], - data[107]); - out->arch = (prne_arch_t)data[109]; - out->os = (prne_os_t)data[110]; - memcpy(out->host_cred, data + 112, cred_size); - memcpy(out->bf, data + 112 + cred_size, bf_size); + out->arch = (prne_arch_t)data[101]; + out->os = (prne_os_t)data[102]; + memcpy(out->host_cred, data + 104, cred_size); + memcpy(out->bf, data + 104 + cred_size, bf_size); return PRNE_HTBT_SER_RC_OK; } |