Skip to content

Aucun reboots computer, unless a debugger is present

There is a bug in my replacement GINA. I left a call to DebugBreak in my initialisation code.

When Winlogon can’t load a GINA, the server reboots. I run all my tests in virtual machines attached to a remote kernel debugger. I had set up a rule to ignore this first hardcoded breakpoint. In a regular environment, Winlogon did the only sensible thing to do when it received that unhandled exception : terminate.

That triggered the reboot process.

Please use version 1.4.5. I have updated the project page, binary and source code snapshot. I also updated my build script so that it never happens again.

Aucun now supports 64 bits versions of Windows

Again with much help from user Abdul Khaliq, I can now offert you a 64 bits version of my replacement GINA, called aucun64.dll.

This release also comes with a important bug fix. You can donwload it here.

FIX : Changing password with Aucun crashes winlogon

There is an important update to aucun that fixes a bug in the dialog procedure hooking code. If you have Aucun version 1.4.2 or earlier, you will experiment the following bug :

  1. Login to the pc.
  2. Hit CTRL-alt-Del to get to the Windows Security Screen
  3. Click “Change Password”
  4. Click “Cancel” to get back to the main Windows Security Screen.
  5. Click “Lock workstation” At this point, the workstation won’t lock.
  6. Click “Cancel”.

At this point Winlogon will crash and the pc will reboot. There are other ways to make the computer crash because of the same bug.

Please update to version 1.4.3.

Many thanks to Abdul Khaliq for helping me test and debug this release !

Attaque mathématique des codes Bixi (vélo libre-service)

J’étais au centre ville aujourd’hui et j’avais affaire pas très loin. Au lieu d’utiliser le métro, j’ai loué un Bixi, vélo en libre service. J’ai été surpris de constater que les codes Bixi ne comporte que 3 chiffres, sur 5 caractères, soit 3^5=243 codes possibles.

Billet bixi portant le code 21213

Billet bixi portant le code 21213

Ça semble bien peu, mais si les codes ne sont utilisables qu’au point de service où ils sont émis, et pour une durée limitée, avec peut-être une détection d’attaque en force brute, on devrais pouvoir dormir tranquille…

Je me suis rappellé une attaque mathémaitque sur des codes de ce genre. Avec une location de 24 heures à 5$, on peut prendre et remettre le vélo plusieurs fois, histoire de tester la théorie… Bonne nouvelle, Bixi n’est pas vulnérable. Mais j’écris quand même la démarche, c’est trop rare qu’on a l’occasion d’utiliser des math pour (tenter de) contourner les règles d’un système.

(Continued)

Notifu 1.5 supports IUserNotification2 new result codes

I updated my Notifu utility to use the new IUserNotification2 interface introduced in Vista. It allows to detect a left or right click on the icon in the system notification area. If you run Windows XP, behaviour is unchanged.

On Vista, you can also revert to the old interface by adding the /xp switch.

I am also investigating a timeout problem. In short, the timeout is not honoured if the user is doing something. A system default is used. On my Windows XP SP2 and Vista Business SP1, it is 10 seconds. Some users report shorter times than that (3 seconds).

You can download it here.

Porting a custom Gina to a Credential provider

I am still amazed by the popularity of my replacement Gina (it allows any user to unlock). Most users are quite happy using it with Windows XP and Server 2003, but I do get the occasionnal request for a Vista port. I am looking forward to doing it, but there are important desing changes that I must work with. I think I found a way to have a single source solution Gina and Credential Provider, with a clean architecture on any Windows version.

(Continued)

Segmentation example in a CAPTCHA

From time to time, I come across an application whose designers need – or think they need – a CAPTCHA. I stay convinced that CAPTCHA are to be avoided. This post just goes to show the effect of segmentation on optical character recognition (OCR).

If you read about artificial intelligence and character recognition, you will hear that there are references to segmentation. In short, segmentation is separating the letters from each other, before trying to guess what letters are there.

Segmentation is the “hard” part in solving a text based CAPTCHA, background noise and colors are the easy part. As a rule of thumb, if the letters of your CAPTCHA do not touch each other, your CAPTCHA is weak.

Here is an example. With a stock build of ocrad, I have tried to get the text from the same image, with one or two lines over the text.

banane banane-11
banane-21
$ ocrad -v banane.pbm
processing file ‘banane.pbm’
file type is P4
file size is 175w x 66h
number of text blocks = 1
BANANE
$ ocrad -v banane-1.pbm
processing file ‘banane-1.pbm’
file type is P4
file size is 175w x 66h
number of text blocks = 1
_ANE
$ ocrad -v banane-2.pbm
processing file `banane-2.pbm’
file type is P4
file size is 175w x 66h
number of text blocks = 1

The text goes from 100% to 0% percent recognition just by adding two lines ! The word BANANE, then _ANE and after that … nothing !

This CAPTCHA is by no means robust, and I stay convinced that all forms of CAPTCHA are to be avoided. This example just goes to show the effect of segmentation on optical character recognition (OCR).

After all, artificial intelligence is a field of expertise you can spend your life learning. Just like cryptography, it should not be done by amateurs. But unlike cryptography, an AI challenge has no key. Microsoft and Google’s CAPTCHA have been broken. Your CAPTCHA will be broken too, it someones takes a shot at it. It is a matter of time, and there is a shorter way than brute force.

If you think you must put a CAPTCHA, start thinking about plan B right away… Using an image based CAPTCHA is not good either (post in French).

Ne jouez pas avec un CAPTCHA sans la surveillance d’un expert

Je suis tombé sur cette implémentation d’un CAPTCHA.

Must select 3 hamburgers in this lousy captcha

Je déteste les CAPTCHA. C’est comme de la mauvaise crypto.

Fondamentalement, le CAPTCHA ne fonctionne pas. La tâche d’analyse (le test de Turing) est complexe juste parce que personne ne s’est encore donné la peine d’écrire le code pour réussir. C’est aussi vrai pour la crypto classique, mais ces mathématiques sont soumises à des études formelles et continues. On sait à quoi s’en tenir : avec de la bonne crypto, on déplace le problème ailleurs (la gestion de clé, souvent). En intelligence artificielle, la segmentation est difficile, mais l’ordre de grandeur d’effort est à la portée des botnets actuels.

(Continued)

Les sources du malaise identitaire Québecois

Le Parti Québecois à répondu au président Sarkozy. Je retiens surtout ce passage :

Il est vrai, Monsieur le Président, que les Québécois ne seront pas appelés à revoter sur cette question dans l’avenir immédiat. Cependant, puisque rien de fondamental n’est résolu dans les rapports Québec-Canada, il n’est pas impossible que cela survienne pendant que vous présidez aux destinées de la France. Il n’est pas impossible que la démocratie québécoise ait besoin de l’appui de tous ses amis, de tous ses frères.

Le problème est surtout là. Les “querelles épuisantes” sont fondées sur des coups de force. De l’acte d’union au rapatriement de la constitution, les ententes ont toujours été imposées, politiquement ou par la force des armes selon l’époque. Loco Locass emprunte les mots de Pierre Falardeau dans la chanson Résistance pour résumer ce point.

Je ne sais plus si l’idée de souveraineté du MSA/PQ est encore la solution. Une fédération d’états peut-être ? Mais cette solution ne sera pas de simplement rentrer de rang, niant notre différence au lieu de la célébrer, sous prétexte qu’on a oublié les sources du malaise. Je m’en souviens.


Guillaume

Stop internal drive from showing up in "Safely remove hardware"

Like many of you, I had a drive that showed up in the “Safely remove hardware” tray icon, and was unable to remove it.

The trick is to subtract 4 from the Capabilities in the registry. Not easy, but it can be done. The only thing is that it keeps coming back after every boot ! And it looks like the value cannot be edited under Vista. Here is how to fix it for good.

(Continued)