C'est un peu plus compliqué que ça car il faut réassembler les paquets dans l'ordre et ensuite concaténer les données récuperer dans le dictionnaire...
On peut faire beaucoup plus simple en utilisant le programme tcpflow (http://www.circlemud.org/jelson/software/tcpflow/).
# On lance une capture réseau sur un shell
$ sudo tcpdump -i eth0 -s 0 -w dump.cap port 80
# Sur un autre on télécharge un PDF
$ wget www.python.org/doc/essays/ppt/lwnyc2002/intro22.pdf
$ tcpflow -r dump.cap
$ ls -l *192*
-rw-rw-r-- 1 cedric cedric 1667904 2012-01-08 09:53 082.094.164.162.00080-192.168.001.013.36033
-rw-rw-r-- 1 cedric cedric 148 2012-01-08 09:53 192.168.001.013.36033-082.094.164.162.00080
Ensuite on peut utiliser un script (reconstruct-data.py) du genre:
with open("082.094.164.162.00080-192.168.001.013.36033" , "rb") as flow:
data = flow.readlines()
i = 0
for line in data:
i += 1
if "Content-Type" in line:
file_type = line.split("/")[1]
with open("result."+file_type, "w") as result:
result.write("".join(data(i+1:)))
C'est script un peu bête.
$ reconstruct-data.py
$ sha1sum result.pdf intro22.pdf
20547681871702179773a4291d94960bdcfdb040 result.pdf
20547681871702179773a4291d94960bdcfdb040 intro22.pdf
Les deux fichiers sont identiques.