Le Macbook de ma copine s'est écrasé lors d'une tentative de restauration à partir d'un fichier en veille prolongée. La barre de progression s'est arrêtée à ~ 10%, après quoi nous avons redémarré l'ordinateur pour un démarrage normal.
Cette image mémoire mise en veille prolongée avait un document non enregistré ouvert dans Pages, que nous aimerions récupérer. Il y a un sleepimage
in /private/var/vm
, qui je suppose est l'image d'hibernation qui n'a jamais été correctement restaurée. Nous avons sauvegardé cette chose pour la garder en vie.
Nous avons essayé strings sleepimage | grep known_substring
mais cela n'a rien donné. grep -a known_substring sleepimage
n'a également rien fait, donc je suppose que Pages n'a pas gardé les données de texte en mémoire sous forme de texte brut.
Edit: Après avoir lu cette réponse sur grep binaire, j'ai essayé perl -ln0777e 'print unpack("H*",$1), "\n", pos() while /(null_padded_substring)/g' sleepimage
, encore une fois sans résultat. Je l'ai rembourré avec des valeurs nulles afin d'essayer une correspondance pour le texte UTF-8. Ensuite, j'ai essayé avec des .*
globes entre chaque personnage - toujours pas de dés.
Donc, Pages ne stocke probablement pas de texte par un encodage commun en mémoire. Il faudrait que je trouve une règle de traduction entre la chaîne ASCII et la représentation des données Pages - je pense peut-être à une sorte de tampon de chaîne Objective C. Pour moi, il semble très étrange de stocker des données de caractères autrement que comme une séquence de caractères, mais cela semble être ce que Pages fait.
Si vous avez une idée sur la façon de comprendre la représentation en mémoire du texte dans Pages, cela peut être très utile pour résoudre ce problème. Peut-être que je peux vider et lire la mémoire de processus d'une manière simple?
Une autre solution possible est plus simple - je suppose qu'il est possible de redémarrer l'ordinateur à partir de cela sleepimage
, mais je ne trouve aucune documentation sur la façon dont vous procéderiez. Certains autres utilisateurs ( macrumors ) semblent avoir rencontré cela, mais pour toutes les questions du forum que j'ai trouvées, aucun d'entre eux n'a de réponse.
La version OS X est Snow Leopard, 10.6.8.
Les suggestions complexes concernant la programmation sont les bienvenues. Je fais du C et du Python.
Je vous remercie.
sleepimage
. Passer au crible une autre image à la recherche d'un texte unique serait tout aussi difficile, car l'image aurait toujours une taille de 4 Go et le bloc de mémoire Pages serait alloué quelque part au hasard dans ce fichier. Je suppose que je pourrais mettre à zéro la RAM, puis ouvrir des pages, puis rechercher des séquences non nulles dans l'image de sommeil, cependant. Mais Pages mange jusqu'à 200 Mo de mémoire malgré tout - toujours une petite aiguille dans la botte de foin.