Bonjour, je suis actuellement en train d essayer de display une sortie web d'un fichier extrait de tcpdump.

J ecoute le rezo avec tcpdump et je display les packets sur ma page web.

J'ai un probleme, pour 10/100 packets, ca passe et j affiche mon tableau de packets sans probleme.

quand j essaye d afficher 200 packets, mon programme freeze, je pense ke c du a la taille de mon tableau qui devient trop grande

Je declare mon enregistrement et mopn tableau comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
typedef struct packet_type{
  unsigned char id[IDLEN];
  char timestamp[20];
  char packtype[10];
  char srcip[100];
  char srcport[10];
  char dstip[100];
  char dstport[10];
  char type[10];
  char type2[10];
  char length[10];
}scanresults_t;
#define MAXSCANRESULTS 10000
scanresults_t scanresults[MAXSCANRESULTS];
unsigned int scanresultslen=0;
Le programme s arrete kan j essaye de rentrer les valeurs dans le tableau:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
int getscanresults(){
 
 
for(scanresultslen=0;scanresultslen<nbpackets;scanresultslen++) //MAXSCANRESULTS
    { 
         sscanf(p,"%s",scanresults[scanresultslen].timestamp);
 
	 #ifdef DEBUG1
	 //printf("Time:%s\n",scanresults[scanresultslen].timestamp);
	 #endif
 
	 while (*p!=' ') { p++; }
	 p++;
 
	 sscanf(p,"%s",scanresults[scanresultslen].packtype);
   	 #ifdef DEBUG2
	 printf("Packet Type:%s\n",scanresults[scanresultslen].packtype);
	 #endif
	 if (!strcmp(scanresults[scanresultslen].packtype,"arp")) {
	 	while (*p!=' ') { p++; }
	 	p++;
	 	sscanf(p,"%s",scanresults[scanresultslen].type);
		#ifdef DEBUG2
		printf("TYPE:%s\n",scanresults[scanresultslen].type);
		#endif
		while (*p!=' ') { p++; }
	 	p++;
	 	sscanf(p,"%s",scanresults[scanresultslen].dstip);	
		#ifdef DEBUG2
		printf("DST:%s\n",scanresults[scanresultslen].dstip);
		#endif
		while (*p!=' ') { p++; }
	 	p++;
		while (*p!=' ') { p++; }
	 	p++;
	 	sscanf(p,"%s",scanresults[scanresultslen].srcip);
		#ifdef DEBUG2
		printf("SRC:%s\n",scanresults[scanresultslen].srcip);
	 	printf("<br><br>");
		#endif
		}
	 else {
 
	 while (*p!=' ') { p++; }
	 p++;
	 sscanf(p,"%s",src);
	 char srcip[100];
	 #ifdef DEBUG2
	 printf("SRC:%s\n",src);
	 #endif
	 //strcpy(srcip,scanresults[scanresultslen].src);
	 //char *p1=scanresults[scanresultslen].src
 
 
 
	 while (*p!='>') { p++; }
	 p=p+2;
	 sscanf(p,"%s",dst);
	 #ifdef DEBUG2
	 printf("DST:%s\n",dst);
	 #endif
 
	 while (*p!=' ') { p++; }
	 p++;
	 sscanf(p,"%s",scanresults[scanresultslen].type);
	 #ifdef DEBUG2
	 printf("TYPE:%s\n",scanresults[scanresultslen].type);
	 #endif
	 //If ICMP => no port ...
	  getdstdata();
	  getsrcdata();
 
	 if (!strcmp(scanresults[scanresultslen].packtype,"IP") && (!strcmp(scanresults[scanresultslen].type,"UDP,") || !strcmp(scanresults[scanresultslen].type,"ICMP"))) {
	 	while (*p!=' ') { p++; }
	 	p++;
	 	while (*p!=' ') { p++; }
	 	p++;
		sscanf(p,"%s",scanresults[scanresultslen].length);
		#ifdef DEBUG2
		printf("Length:%s\n",scanresults[scanresultslen].length);
		printf("<br><br>");
		#endif
		} 
	 if (!strcmp(scanresults[scanresultslen].packtype,"IP") && !strcmp(scanresults[scanresultslen].type,"tcp")) {
		while (*p!=' ') { p++; }
	 	p++;
		sscanf(p,"%s",scanresults[scanresultslen].length);
		#ifdef DEBUG2
		printf("Length:%s\n",scanresults[scanresultslen].length);
		printf("<br><br>");
		#endif
		}
 
 
	 if (!strcmp(scanresults[scanresultslen].packtype,"IPX")) {
	 	while (*p!=' ') { p++; }
	 	p++;
		sscanf(p,"%s",scanresults[scanresultslen].length);
		#ifdef DEBUG2
		printf("Length:%s\n",scanresults[scanresultslen].length);
		printf("<br><br>");
		#endif
		} 
 
 
 
	}	
		//else {
		//if (strcmp(scanresults[scanresultslen].packtype,"UDP")) {
		//	sscanf(p,"%s",scanresults[scanresultslen].length);
		//} else {
		//	sscanf(p,"%s",scanresults[scanresultslen].type2);
		//	}
 
 	while (*p!='\n') { p++; }
	 	p++;
}
 
}

Merci d avance