projects
/
my-code
/
hdw-sniff.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
3267231
)
added tcp support
author
hackbard
<hackbard>
Thu, 19 Dec 2002 03:53:49 +0000
(
03:53
+0000)
committer
hackbard
<hackbard>
Thu, 19 Dec 2002 03:53:49 +0000
(
03:53
+0000)
hdw-sniff.c
patch
|
blob
|
history
hdw-sniff.h
patch
|
blob
|
history
diff --git
a/hdw-sniff.c
b/hdw-sniff.c
index
8b35e82
..
d2e7077
100644
(file)
--- a/
hdw-sniff.c
+++ b/
hdw-sniff.c
@@
-4,6
+4,8
@@
* author: hackbard@hackdaworld.dyndns.org
*/
* author: hackbard@hackdaworld.dyndns.org
*/
+#define _GNU_SOURCE
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@
-22,6
+24,7
@@
#include <netinet/if_ether.h> /* for ethhdr struct */
#include <netinet/ip.h> /* ip */
#include <netinet/in.h> /* in_addr , inet_ntoa */
#include <netinet/if_ether.h> /* for ethhdr struct */
#include <netinet/ip.h> /* ip */
#include <netinet/in.h> /* in_addr , inet_ntoa */
+#include <netinet/tcp.h> /* tcp header and protocols */
/* IEEE 802.11 stuff -- will become one include later ... */
#include "ieee80211.h" /* from hunz's aeolus, short hostap_wlan.h */
/* IEEE 802.11 stuff -- will become one include later ... */
#include "ieee80211.h" /* from hunz's aeolus, short hostap_wlan.h */
@@
-136,7
+139,7
@@
void pcap_process(u_char *info,const struct pcap_pkthdr *pcap_header,
struct beacon_struct *beacon_hdr;
struct ethhdr *e_hdr;
struct info_struct *my_info_struct;
struct beacon_struct *beacon_hdr;
struct ethhdr *e_hdr;
struct info_struct *my_info_struct;
- int i,p_o,w_o,e_o,i_o;
+ int i,p_o,w_o,e_o,i_o
,special_o=0
;
my_info_struct=(struct info_struct *)info;
++(my_info_struct->count);
my_info_struct=(struct info_struct *)info;
++(my_info_struct->count);
@@
-237,6
+240,7
@@
void pcap_process(u_char *info,const struct pcap_pkthdr *pcap_header,
if((strncmp(my_info_struct->dev,"eth",3)==0)) {
printf("ethernet: (%d bytes)\n",e_o);
e_hdr=(struct ethhdr *)(package+p_o+w_o);
if((strncmp(my_info_struct->dev,"eth",3)==0)) {
printf("ethernet: (%d bytes)\n",e_o);
e_hdr=(struct ethhdr *)(package+p_o+w_o);
+ special_o=sizeof(struct ethhdr);
/* what types ? */
printf("type = ");
printf("%x ",ntohs(e_hdr->h_proto));
/* what types ? */
printf("type = ");
printf("%x ",ntohs(e_hdr->h_proto));
@@
-296,7
+300,7
@@
void pcap_process(u_char *info,const struct pcap_pkthdr *pcap_header,
/* dump it */
#ifdef SHOW_HEX
printf("all dump: (hex)\n");
/* dump it */
#ifdef SHOW_HEX
printf("all dump: (hex)\n");
- for(i=p_o+w_o;i<pcap_header->caplen;i++)
+ for(i=p_o+w_o
+special_o
;i<pcap_header->caplen;i++)
printf("%x ",*(package+i));
printf("\n");
#endif
printf("%x ",*(package+i));
printf("\n");
#endif
@@
-335,10
+339,10
@@
int parse_ip(char *ip_o) {
printf("ip protocol:\n");
ip_hdr=(struct iphdr *)ip_o;
printf("ip protocol:\n");
ip_hdr=(struct iphdr *)ip_o;
- printf("version = %x ",
ntohs(ip_hdr->version)
);
- printf("header_length = %x \n",
ntohs(ip_hdr->ihl)
);
- printf("service = %x ",
ntohs(ip_hdr->tos)
);
- printf("total_length(dec.) = %d \n",
ntohs(ip_hdr->tot_len)
);
+ printf("version = %x ",
ip_hdr->version
);
+ printf("header_length = %x \n",
ip_hdr->ihl
);
+ printf("service = %x ",
ip_hdr->tos
);
+ printf("total_length(dec.) = %d \n",
ip_hdr->tot_len
);
printf("source_ip: ");
for(i=0;i<=3;++i) {
printf("%d%s",
printf("source_ip: ");
for(i=0;i<=3;++i) {
printf("%d%s",
@@
-352,8
+356,26
@@
int parse_ip(char *ip_o) {
(i==3?"\n":"."));
}
printf("ip_id = %x ",ntohs(ip_hdr->id));
(i==3?"\n":"."));
}
printf("ip_id = %x ",ntohs(ip_hdr->id));
- printf("ip_offset = %x \n",ntohs(ip_hdr->frag_off));
- printf("time2live = %x ip_proto = %x\n",ntohs(ip_hdr->ttl),
- ntohs(ip_hdr->protocol));
+ printf("ip_offset = %x \n",ip_hdr->frag_off);
+ printf("time2live = %x ip_proto = %x\n",ip_hdr->ttl,ip_hdr->protocol);
+ /* how to continue */
+ if(ip_hdr->protocol==IPPROTO_TCP)
+ parse_tcp(ip_hdr+sizeof(struct iphdr));
+ if(ip_hdr->protocol==IPPROTO_UDP)
+ printf("udp package! get's parsed in the future\n");
// printf("chksum: %x\n",ntohs(ip_hdr->ip_sum));
}
// printf("chksum: %x\n",ntohs(ip_hdr->ip_sum));
}
+
+int parse_tcp(char *tcp_o) {
+ struct tcphdr *tcp_hdr;
+
+ printf("tcp protocol:\n");
+ tcp_hdr=(struct tcphdr *)tcp_o;
+ printf("source port: %d - dest port: %d\n",ntohs(tcp_hdr->source),
+ ntohs(tcp_hdr->dest));
+ printf("sequence: %d - ack sequence: %d\n",ntohs(tcp_hdr->seq),
+ ntohs(tcp_hdr->ack_seq));
+ printf("offset to data: %d - checksumm: %d\n",ntohs(tcp_hdr->doff)
+ ,ntohs(tcp_hdr->check));
+ return 1;
+}
diff --git
a/hdw-sniff.h
b/hdw-sniff.h
index
908b95b
..
83d4dbd
100644
(file)
--- a/
hdw-sniff.h
+++ b/
hdw-sniff.h
@@
-28,6
+28,7
@@
struct info_struct {
/* hop_chanel function */
int hop_channel(struct info_struct *info,int foo_fd);
int parse_ip(char *ip_o);
/* hop_chanel function */
int hop_channel(struct info_struct *info,int foo_fd);
int parse_ip(char *ip_o);
+int parse_tcp(char *tcp_o);
/* ssid struct */
struct ssid_struct {
/* ssid struct */
struct ssid_struct {