Ayant commencé l’informatique sur Linux/FreeBSD, j’ai mes petites habitudes pour analyser des logs (awk/sed/cat/sort/uniq…).
Récemment cygwin, un port de shell Unix (bash) et outils diverses s’est mis à ne plus fonctionner:
Il s’agit donc d’un problème sur cygwin1.dll. Effectivement, j’utilise aussi en ce moment un autre outil, John the ripper, qui a été porté sur Windows via cygwin.
La DLL pour JTR est beaucoup plus ancienne que mon installation de cygwin. Démarrer dans l’ordre inverse donne le même résultat, c’est JTR qui plante.
Procmon de Sysinternals indique bien que chaque programme charge la dll cygwin1.dll de son répertoire, mais JTR lis la DLL et fini par « Load image » alors que cygwin fait uniquement un « Load image »:
Process Explorer m’a permis de mettre en évidence d’où vient le problème. Cygwin1.dll utilise un handle de type section qui porte le même nom quelque soit la version de la DLL.
Voici les handles pour cygwin lui même (bash.exe)
J’ai pu confirmer le diagnostique en utilisant une fonctionnalité de Process Explorer: fermer arbitrairement un handle:
Le shell Cygwin (bash.exe) se lance maintenant, alors que JTR tourne toujours. Je ne sais pas cependant si cela peut avoir des conséquences dans JTR: