Bonjour à tous.
J'ai commencé il y a quelques jours à écrire un programme de récupération de données (en C sous Linux mais je compte le porter sur Mac et peut-être Windows).
Le but est de pouvoir retrouver ses fichiers après un formatage de carte mémoire. Soit en analysant l'image de la carte mémoire, soit en la lisant directement.
Pour la plupart des formats, on peut spéculer relativement facilement (TIFF, JPG, ZIP), contrôler une cohérence et retrouver le fichier exact dans le flux.
Par contre, le format de fichier CRW de Canon (pour les appareils compacts) me pose problème car si j'ai bien le HEADER et son marqueur HEAPCCDR, je n'arrive pas à trouver la fin du fichier. J'ai pensé au début a surévaluer sa taille (on trouve systématiquement des tags de miniatures juste avant la fin) légèrement mais avoir des octets en trop rend le fichier invalide. J'ai regardé dans un programme opensource de derawtisation mais non seulement ce programme se sert de valeurs claquées en fonction de l'appareil, mais en plus, il saute presque dès le début en fin de fichier lire des données, ce qui n'est pas possible pour moi, ne connaissant pas cette fin.
Reste bien la possibilité de faire de gros calculs en testant quelques millions de possibilités mais le programme risque d'être trèèèèèèès lent.
Est-ce que quelqu'un s'est déjà collé à ce genre de chose ou aurait de la documentation plus poussée sur le CRW?
Pour le moment, je n'ai trouvé que ça de potable comme doc:
http://www.sno.phy.queensu.ca/~phi [...] n_raw.html
Et un source ici (plus simple que dcraw)
chrome://downloads/media/TeraStock/download/decompress.c