Bonsoir,

Je code actuellement un proxy local afin de récupérer les requêtes envoyées par ma machine et les réponses reçues, mon problèmes est que j'aimerais pouvoir lire les données reçues mais que ces dernières sont généralement compressées avant d'être envoyées.
Après quelques recherches, j'ai cru comprendre que l'algo de compression le plus utilisé pour ce genre de chose est gzip ou deflate, d'ailleurs, ces algo sont-ils identiques ? La réponse varie selon les sites ou on regarde..
J'ai alors essayé d'utiliser gunzip sur les corps de réponses, sans succes, de même avec la fonction uncompress de la librairie zlib qui me retourne un résultat incohérent.

Voila le code:
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
        /* dest représente la socket qui relie ce programme
        a mon navigateur, src la socket qui relie ce programme à l'hôte distant*/
        int getencodedmsg(int dest, int src){
	printf("Appel de getencodedmsg\n");
 
	int 	i, data = 0;
	int	taille = 1024;
	int	lu, total = 0;
	char	tmp[taille];
	char	*header_end = "\r\n\r\n";
	char	*begin;
	char	file[24];
 
	sprintf(file, "test_%d.gz", getpid());
 
	int fd = open(file, O_WRONLY | O_TRUNC | O_CREAT, 0700);
 
	while((lu = read(src, tmp, taille-1)) > 0){
		write(dest, tmp, lu);
		total += lu;
 
                //Si le buffer ne contient plus de header
		if(data == 1){
			write(fd, tmp, lu);
		}
 
                //Si le buffer contient des headers et une partie du corps du message
		if((begin = memmem(tmp, lu, header_end, strlen(header_end))) != NULL){
			begin += strlen(header_end);
			write(fd, begin, lu - (begin - tmp));
			data = 1;
		}
 
		memset(tmp, 0, taille);
	}
 
        //Nécessaire ?
	write(fd,"\0", 1);
 
	close(fd);
 
	return total;	// Nombre de bytes écrits dans msg	
}
Outre ce problème de décompression, le programme fonctionne, du moins avec HTTP

Voila l'erreur que me sort gunzip:
gzip: test_3156.gz: not in gzip format
Il arrive que la décompression fonctionne et m'affiche:
gzip: test_3594.gz: decompression OK, trailing garbage ignored
Mais je ne sais pas pourquoi ca marche dans ces cas la et pas dans les autres

Si qqun peut m'eclairer..