Bonjour tout le monde,
J'ai un problème: je dois lire des captures de paquets UDP enregistrés par wireshark ou tshark. Entre chaque paquets capturé est inséré une petite structure qui contient un long. Et ce long vaut 32 bits sur une archi 32 bits, et 64 bits sur une archi 64 bits. Jusque la tout va bien.
Le problème est que je dois lire un tel fichier, et que je ne sais pas a priori si les traces viennent d'une archi 32 ou 64 bits, et donc la taille du long d'origine. Comment m'en sortir ?
Si quelqu'un a une idée...
# Hum
Posté par yellowiscool . Évalué à 2.
Le plus simple, ça peut être de tester les deux possibilités, en commençant par le 32bits.. C'est plus répandu.
Envoyé depuis mon lapin.
[^] # Re: Hum
Posté par feth . Évalué à 2.
Sans plus de précisions sur le long (et surtout sans relire la structure d'un paquet UDP) il me semble que théoriquement il est possible qu'ici un fichier 32 bits soit un 64 bits valide ; improbable mais possible.
Du coup il faudrait une routine de vérification du format du fichier qui analyse pas mal d'éléments, non ?
[^] # Re: Hum
Posté par fabricius . Évalué à 1.
Ca enregistre ainsi:
une structure PCAP
un paquet
une structure PCAP
un autre paquet
....
La structure PCAP qui contient des timestamp (sous forme de secondes/microseconde) depuis le 1er Janvier 1970. Et les fameux timestamps sont codés sur des long.
Un jour j'ai voulu lire les fichiers d'enregistrement des paquets, une fois l'application mise sur une machine 64 bits, et je voyait bien que les long etaient sur 64 bits. Le probleme est que je fait l'analyse sur une machine 32 bits, et que pour elle un long est sur 32 octets.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.