IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Connaitre la nature d'un fichier à partir du binaire


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 46
    Points
    46
    Par défaut Connaitre la nature d'un fichier à partir du binaire
    Bonsoir,

    J'ai cherché mais j'ai toujours pas trouvé une solution à mon problème.
    A un moment dans mon programme, je recupère du binaire représentant un fichier. J'aimerais savoir si, seulement à l'aide du binaire, il y a moyen de savoir la nature/le type du fichier ? Par exemple, savoir si le binaire représente une image jpeg, un fichier texte, un fichier docx, un fichier mp3 ... Est ce que le type d'un fichier est defini dans une en-tête et si oui ou comment le récuperer ?

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 780
    Points
    23 780
    Par défaut
    Bonsoir,

    C'est exactement l'objet de la commande « file », depuis le Shell, si tu travailles sous Unix ou Linux. Si tu utilises un unixoïde libre, tu peux récupérer les sources de l'utilitaire en question et explorer sa base de connaissance.

    Plus généralement, pour répondre à ta question, il n'y a pas de méthode universelle, mais effectivement, cela se fait en examinant le contenu du fichier. Un fichier (dans le sens où on l'entend aujourd'hui) n'est qu'une suite d'octets consécutifs de longueur arbitraire. Donc, si leur contenu est aléatoire, rien ne te permet de savoir s'il s'agit de données cohérentes ou pas. Comprendre par cela : le système d'exploitation n'impose pas l'ajout de méta-données quelque part pour en identifier le contenu (en revanche, il va gérer les siennes dans un inode ou quelque chose d'assimilé mais cela ne concerne que lui).

    Lorsqu'un fichier correspond à quelque chose de normalisé comme une image JPEG ou un morceau MP3, le contenu de ton fichier respecte un « format de fichier » qui est défini par cette norme, et que l'on peut trouver un peu partout, par exemple ici (site archivé) ou sur la page Wikipédia du format, à condition qu'il soit public.

    À toi de voir si tu reconnais quelque chose dans les données que tu reçois. La plupart du temps, les formats de fichiers imposent la mise en place d'un entête ou un bloc de méta-données, mais ce n'est pas obligatoire et lorsque c'est le cas, ce bloc n'est pas toujours en début de fichier. Ce bloc contient généralement un identifiant fixe (un magic number) ou une somme de contrôle à calculer pour les identifier de façon certaine mais ce n'est pas obligatoire non plus. Dans ce cas, Il faut faire un peu d'heuristique pour établir une « probabilité » suffisamment élevée pour que la nature du fichier en question soit bien celle que l'on pense.

    L'exemple le plus flagrant est celui des fichiers texte tout simples : il ne contiennent que le texte proprement dit et donc, par définition, aucune information officielle pour indiquer que c'est bien du texte. On les reconnaît parce qu'ils ne contiennent généralement que les codes des caractères affichables et ceux des retours à la ligne, mais cela pourrait très bien être un fichier purement binaire qui aurait servi à sauvegarder une portion de mémoire qui, elle, contenait du texte à ce moment précis…

Discussions similaires

  1. [C#] Comment connaitre la taille d'un fichier.
    Par PascalCmoa dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/02/2018, 08h54
  2. Changer les attributs de fichier à partir de FrontPage
    Par kernel57 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/01/2005, 15h44
  3. Exécuter un fichier à partir du code
    Par TheCool dans le forum ASP
    Réponses: 28
    Dernier message: 18/01/2005, 19h22
  4. [JSP] Connaitre la taille d'un fichier
    Par dst dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 21/06/2004, 17h22
  5. [Servlet][EJB]lire un fichier à partir de mon bean
    Par kimausoleil dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/02/2004, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo