CueCat Resources

The CueCat® is a barcode scanner being passed out for free at various places along with a Windows9x® driver/package called CRQ. In it's intended use the pair is probably one of the most blatent privacy violations ever committed against a clueless populace, but once you strip away the unique serial number and the lame attempt to obfuscate the output it is a fairly good general purpose barcode scanner. This website is mostly devoted to these unintended uses of the hardware.

How it works

Basically it hooks inline with your keyboard the same as any other 'keyboard wedge' type of scanner. The difference is that it doesn't send out a plain barcode. Instead it sends the following:

It sends four sections seperated by periods, including a trailing period.

  1. ALT-F10 is sent as a wakeup signal
  2. The serial number of the wand is sent.
  3. The type of barcode (UPCA, ISBN, etc).
  4. The actual barcode information.

The last three fields are encoded using a simple scheme to both send a full 8-bit ASCII value as printable letters/numbers and to obfuscate the output to make it less useful for other purposes.

Take each block of four characters and convert them into six bit values by indexing into "[a-z][A-Z][0-9]+-" String the four six bit fields together to get a 24bit value containing three bytes. Exclusive OR each with 67 and you have three decoded bytes. Strings that aren't a multiple of three characters are zero filled and they should be stripped out if it isn't being processed by C code which takes a NULL as the end of string.

Update 00/09/28 According to the driver from Lineo, some cats don't encode the same. For these odd beasties you index into "[a-z][A-Z][0-9],/".

Available Software
A perl script by Kevin Fowlks to decode the output

A Cuecat Decoder in JavaScript by Daniel Hull. Clinking the link actually runs it. Right click and pick "save as..." to download a copy.
A decoder for those who prefer Python authored by skiprosebaugh at
Another perl decoder by skiprosebaugh at

CueCat Decoder - Linux
This C package by Michael Rothwell has the decoding already moved into a library and includes a GNOME panel applet. New version posted 00/09/11

Another package from skiprosebaugh at My but he's a busy fellow. <grin>

And adding another language, here is one in TCL by Michael Jacobson. The link goes to the instructions he included, wherein is a link to the actual script.
Larry Wall just chimed in with what he calls the 'tatooable version'. Good grief! It's so short! And after staring at it long enough I actually grok what it's doing... which somehow frightens me.

And now "kc" (Identity withheld by request) has pitched in a VB6 version for all 'yall in the Legacy Computing world.

Several folks have asked me to pass along requests for "kc's" source. Well here it tis. According to "kc" it has the beginnings of support for transparent scanning but something is still blowing up Win98 when it tries to insert the decoded keystrokes back into the keyboard buffer.

Finally got the Lineo driver by Pierre-Philippe Coupard. It has a kernel patch so it's the closest to what I'm needing. Now to eliminate the /dev/cuecat device, the serial number, etc. and just stuff the decoded number back into the keyboard buffer.
Adding yet another language option, here is a set of JAVA classes to deal with the red-nosed pussycat from Taylor Goetz.

And another VB version by minion at

There is more software that was available before the Cease & Desist's started flying, as I find em I'll be mirroring them here.

I'm working on a more generic solution, hacking the Linux keyboard driver to transparently decode and stuff the output in as normal keyboard input. This would let us use them here at the Beauregard Parish Public Library on workstations which don't need a scanner badly enough for us to have already bought one. If anybody would like to help me figure out how to get time delays to work safely inside the keyboard driver, feel free to drop me a line at and clue me in.

The Legal status of this webpage

This page was created when Digital Convergence began issuing Cease & Desist Orders to existing websites dedicated to similar efforts as an attempt to mirror existing material and as a future distribution point for the software I'm working toward.

Digital Convergence is free to send me one of their letters, but unless they specify exactly HOW I'm infringing their IP rights it will only be kept as a trophy, and scanned to include in this section.

I'm not a lawyer, but as far as I know there are only a couple of catagories of Intellectual Property rights under US law.
None of Digital Convergence's material is reproduced on this website so any claims of Copyright Infringement will be ignored. Nothing on this webpage enables the violation of any copyright so nothing mentioning any of those odious (and likely to be stricken down) clauses in the DCMA can be invoked without inducing laughter.

Nothing in the material discussed on this site is unique enough to qualify as patentable. Ya, like Digital Convergence is going to claim ownership of MIME Encoding or Exclusive OR? And I'm not making or advocating others to make copies of the hardware. Even if they have convinced the morons at the Patent Office to award a business model patent for their privacy violating webscam, nothing here directly relates to that.

All registered TradeMarks are being respected, at least to the best of my knowledge.

Trade Secret
I have not had access to any of Digital Convergence's Trade Secrets so there is no possibility that I have stolen any such from them. And reverse engineering is still mostly legal, even in Amerika. Besides, I figured out the encoding in a couple of hours and I'm not a supergenius cryptographer.

As for their new claims that they are 'loaning' the scanners instead of giving them away I reject that theory completely. I have a receipt showing that I BOUGHT mine, even if the extended price was $0.00. Nothing on their website makes any such claim, in fact the words "Get a FREE :CueCat" appear in large letters. Perhaps my Friendly Local Radio Shack is trafficing in stolen merchandise when they sell em, but I'll leave that issue to be settled between the Tandy lawyers and the Digital Convergence lawyers. Should it come to pass that they wish to retrieve my unit as stolen property I'll be more than happy to comply with the law when they deliver the proper paperwork.

To make it easier for Digital Convergence's lawyers, here is my mailing address:

They obviously have my address now, no sense leaving it up
to get harvested by spambots.

Somebody has to stand up for what's Right, Holy and Just dammit. So come get some ya stupid losers.

Update 00/09/03 The first hit from Digital Convergence appeared in the logs this morning. Now we see if they plan to fish or cut bait. Hopefully wiser heads will prevail now that it's turning into a protest movement, they will shut up and we can all go back to coding. Or I dig out the suit and get ready for an appearance in Federal District Court.

Update 00/09/09 Still no FedEx package from Digital Convergence. Guess their cluemeter finally kicked in.

Update 00/09/25 Guess they still have some fight in them after all. I was getting kind of disappointed. I was getting worried that I wasn't being enough of a pest to warrant their attentions. Today the FedEx guy brought my very own copy of the same boiler plate letter that flyingbuttmonkeys posted on their site. But I couldn't resist showing off my copy so here is page 1 and page 2.

Of course, since they have already read my page they should know what my answer is. But just to make things legal and tidy I sent the following out this afternoon by certified mail. page 1 and page 2 so the gauntlet is now thrown down.

Other mirrors and related sites:
Principles of Operation by Stephen Satchell CueCat Hacks Uscan Translation Site One of the first sites to get a Cease & Desist. How did I manage to forget to link these guys for so long? Dissecting the CueCat Catscan homepage - CueCrap- Crap About CueCat - The CueDog, a CueCat Decoder for Win32 Systems

[counter image]
hits since 2000/09/01