|
|
| version 1.1.1.1.2.12, 2011/10/14 12:45:09 | version 1.2, 2011/10/17 20:14:02 |
|---|---|
| Line 206 icmpRecv(int s, u_int * __restrict seq, u_short * __re | Line 206 icmpRecv(int s, u_int * __restrict seq, u_short * __re |
| VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ..."); | VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ..."); |
| return ANSH_FLG_ERR; | return ANSH_FLG_ERR; |
| } | } |
| if (ntohl(hdr->ansh_nonce) != *crypted) | |
| VERB(4) LOG("Detect change of nonce from %x to %x", *crypted, ntohl(hdr->ansh_nonce)); | |
| *crypted = ntohl(hdr->ansh_nonce); | *crypted = ntohl(hdr->ansh_nonce); |
| } | } |
| Line 285 icmpSend(int s, u_int seq, u_short id, char flg, u_int | Line 287 icmpSend(int s, u_int seq, u_short id, char flg, u_int |
| static int | static int |
| _pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea) | _pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea) |
| { | { |
| u_char *pos, buf[USHRT_MAX] = { 0 }; | u_char *pos, *str, buf[USHRT_MAX] = { 0 }; |
| struct ether_header *e = (struct ether_header*) buf; | struct ether_header *e = (struct ether_header*) buf; |
| struct ansh_hdr *hdr; | struct ansh_hdr *hdr; |
| int ret = 0; | int ret = 0; |
| Line 301 _pkt_Send(int s, u_int seq, char flg, u_int crypted, u | Line 303 _pkt_Send(int s, u_int seq, char flg, u_int crypted, u |
| memcpy(pos, data, datlen); | memcpy(pos, data, datlen); |
| if (Crypted) { | |
| str = cryptBuffer(pos, datlen, Crypted); | |
| if (str) { | |
| memcpy(pos, str, datlen); | |
| free(str); | |
| } | |
| } | |
| hdr->ansh_ver = ANSH_VERSION; | hdr->ansh_ver = ANSH_VERSION; |
| hdr->ansh_flg = flg; | hdr->ansh_flg = flg; |
| hdr->ansh_len = htons(datlen + sizeof(struct ansh_hdr)); | hdr->ansh_len = htons(datlen + sizeof(struct ansh_hdr)); |
| Line 352 _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ | Line 362 _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ |
| struct bpf_hdr *bpf; | struct bpf_hdr *bpf; |
| struct ansh_hdr *hdr; | struct ansh_hdr *hdr; |
| u_int crc; | u_int crc; |
| u_char *str; | |
| if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) { | if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) { |
| VERB(1) LOG("Discard packet too short %d ...", rlen); | VERB(1) LOG("Discard packet too short %d ...", rlen); |
| Line 384 _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ | Line 395 _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ |
| VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ..."); | VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ..."); |
| return ANSH_FLG_ERR; | return ANSH_FLG_ERR; |
| } | } |
| if (ntohl(hdr->ansh_nonce) != *crypted) | |
| VERB(4) LOG("Detect change of nonce from %x to %x", *crypted, ntohl(hdr->ansh_nonce)); | |
| *crypted = ntohl(hdr->ansh_nonce); | *crypted = ntohl(hdr->ansh_nonce); |
| } | } |
| Line 400 _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ | Line 413 _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ |
| /* select data */ | /* select data */ |
| if (data) { | if (data) { |
| *datlen = ntohs(hdr->ansh_len) - sizeof(struct ansh_hdr); | *datlen = ntohs(hdr->ansh_len) - sizeof(struct ansh_hdr); |
| if (Crypted) { | |
| str = cryptBuffer(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), | |
| *datlen, Crypted); | |
| if (str) { | |
| memcpy(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), | |
| str, *datlen); | |
| free(str); | |
| } | |
| } | |
| memcpy(data, buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), *datlen); | memcpy(data, buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), *datlen); |
| } | } |