00001 #include "ip_structs.h"
00002 #include "tcp_structs.h"
00003
00004 #define min(a,b) ((a)<(b)?(a):(b))
00005 #define max(a,b) ((a)>=(b)?(a):(b))
00006
00007 typedef struct sandnb
00008 {
00009 char *s;
00010 int nb;
00011 void *data;
00012 struct sandnb *next;
00013 } string_and_nb;
00014
00015 typedef struct
00016 {
00017 int len;
00018 int *start;
00019 int *nbpackets;
00020 } nb_table;
00021
00022 struct dialog
00023 {
00024 struct timeval ts_request;
00025 struct timeval ts_response;
00026 char ip_src[15];
00027 char ip_dst[15];
00028 int port_src;
00029 int port_dst;
00030 char *request;
00031 char *response;
00032 int request_len;
00033 int response_len;
00034 int req_nb;
00035 int resp_nb;
00036 struct dialog *prev;
00037 struct dialog *next;
00038 };
00039
00040 nb_table *clone_nb_table(nb_table table);
00041
00048 void packet_handler (u_char * param,const struct pcap_pkthdr *header, const u_char * pkt_data);
00049
00050
00054 void display_packet_infos(int nb, struct timeval *ts, char *ip_src, char *ip_dst, int sport, int dport);
00055
00056
00061 void ts_print(struct timeval *tvp_);
00062
00063
00068 void ts_print_diff(struct timeval *tvp_);
00069
00070
00079 char *strptime(const char *s, const char *format, struct tm *tm);
00080
00081
00088 int32_t gmt2local(time_t t);
00089
00090
00095 void convert_to_small(char *ptr);
00096
00097
00109 struct dialog *buffer_request(char *request, int len,int nb,char *ip_src, char *ip_dst, int port_src, int port_dst);
00110
00111
00121 struct dialog *find_request(char *ip_src, char *ip_dst, int port_src, int port_dst);
00122
00123
00129 char *generate_anonymised_url(char *s);
00130
00131
00137 void add_anonymised_url(char *url, char *newurl);
00138
00146 char *find_url(char *s, int offset);
00147
00153 char *find_anonymised_url(char *s);
00154
00158 void free_anonymised_url_table();
00159
00160
00166 int parse_size(char *string);
00167
00173 char *get_extension(char *s);
00174
00179 void anon_sequence(u_int32_t *seq);
00180
00185 void anon_port (u_int16_t *port);
00186
00191 void anon_ip (struct in_addr *ip);
00192
00193
00199 char *find_anonymised_ip(struct in_addr *ip);
00200
00205 void anon_url(char *s);
00206
00211 void anon_timestamp(register struct timeval *tvp);
00212
00217 void anon_date(char *date);
00218
00224 void anon_field(char *field, char *s);
00225
00231 void anon_http(char *data, int len);
00232
00237 void scan_http(struct dialog *d);
00238
00248 char *process_http(char *data, int len, int scan, int anon);
00249
00253 void content_length_stats();
00254
00258 void date_stats();
00259
00267 string_and_nb *add_and_count_string_with_data(string_and_nb *table, char *s, void *data);
00268
00275 string_and_nb *find_item(string_and_nb *table, char *s);
00276
00284 void display_string_table_with_data(char *title,string_and_nb *table, char *data_title, int sorted);
00285
00290 void free_string_table(string_and_nb *table);
00291
00296 void process_dialog(struct dialog *d);
00297
00302 void free_dialog(struct dialog *d);
00303
00309 pcap_if_t *get_pcap_interface (char *name);
00310
00311
00312 void stats_add_server(char *s);
00313 void stats_add_server_simple(char *s);
00314 void stats_add_http_response_code_with_data(char *s, char *data);
00315 void stats_add_http_version(char *s);
00316 void stats_add_user_agent(char *s);
00317 void stats_add_http_version(char *s);
00318 void stats_add_last_modified(char *s);
00319 void stats_add_url(char *s);
00320 void stats_add_extension(char *s);
00321 void stats_add_suffix(char *s);
00322 void stats_add_content_type(char *s);
00323 void stats_add_content_type_simple(char *s);
00324 void stats_add_content_length(char *s);
00325 void stats_add_header(char *s);
00326 void stats_add_url_with_data(char *s, void *data);
00327 void stats_add_new_url_with_data(char *s, void *data);
00328 void stats_add_sequence_number(char *s);
00329 void stats_add_freshness(int nb);
00330
00331
00332
00333
00334
00338 void *xmalloc(size_t size);
00339
00340
00344 void *xrealloc(void *ptr, size_t size);
00345
00346
00354 char *is_in(char **string_table, char *string);
00355
00356
00362 char *base_name(register char *f);
00363
00364
00370 int is_ip_in_a_string(char *s);
00371
00372
00379 void memset_range(char *start, char *end, int c);
00380
00381
00390 char *strstr_limited(char *ptr, char *end, char *str);
00391
00392
00398 u_int32_t getip32 (char *ip);
00399
00400
00405 inline char get_random_char();
00406
00407
00413 void catch_ctrl_c(int signum);
00414
00415
00421 char *compute_flags(u_int8_t flags);
00422
00423
00430 char *add_flag(char *s, char *flag);
00431
00432
00436 char *get_time(double t);
00437
00438
00442 char *get_size(int s);
00443
00444
00448 char *get_speed(double speed);
00449
00453 inline char *get_pct(double pct);
00454
00455
00459 char *string_append(char *s, const char *fmt, ...);