Make your own free website on Tripod.com

CUE CAT

I would first like to thank Digital Convergence for such a cool idea; having a little (and FREE !) device that reads barcodes and sends you to advertiser's webpages. Unfortunately for me, I am unable to fill out forms that ask for my Name, Birthdate, Address, Email Address, etc. Therefore, I had to find a work-around. INTRODUCING ...

HAK THE KAT

Written Sept 17, 2000 by "Mad" Merle Zimmermann

Get the Cue:Cat

You can get one for free by going into any Radio Shack store in person and asking for a "Cue Cat." My store gave me one with a free catalog full of barcodes.

You can also get one at http://www.getcat.com/ but obviously you have to give them information about your address and suchlike, which I can't do.

Hak the Cue:Cat

There's this really cool barcode reader device called the Cue Cat that lets advertisers sell you stuff when you use it to scan barcodes. I didn't like the regiforms that asked too many personal questions. Therefore, I scanned all the videogames that I had boxes for near my comp, and wrote down all of the output messages and also the barcodes. Then, I printed it out and took it to my dining room table, where I got out some milk and cookies. As I ate, I studied the codes. To make a sort of long story short, here is a copy of my Secret Decoder Ring program that translates the arcane messages created by CUE CAT into useful barcode numbers. Now you have a free barcode reader!

The Sheet I printed out

9781566195904 9000>
.C3nZC3nZC3nXD3DYDhbYCNnY.cGf2.ENr7CNz1Dxj6DNPZD3PZC3nZ.
711719440529
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.DhjYDhj6D3DZDNf6.
098764410142
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3P7Dhv3D3jZCNDX.
014633118797
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3j3DxbWCNj7DhP0.
023383230976
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3fWChTWCxbZDhP1.
014633116908
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3j3DxbWCNj1ENn7.
081656063304
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3TYDxz1C3vWChn3.
761521113753
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.DhvYDNfYCNjWDhzW.
608610990317
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.Dxn7DxjZENPZChj0.
608610990317 00046
.C3nZC3nZC3nXD3DYDhbYCNnY.fGj2.Dxn7DxjZENPZChj0C3nZD3u.
787659009928
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.DhT0Dxz6C3n6ENf7.
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.DhT0Dxz6C3n6ENf7.
076930995747
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3r1ENbZENP2DhD0.
020626836678
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3fZDxf1E3b1Dxr7.
743175790078
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.DhDWCNr2DhPZC3r7.
076092000075
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3r1C3PXC3nZC3r2.
040421005253
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3DZD3fYC3n2CxzW.
To my surprise, I discovered that I made several transcription errors when I was typing in the barcode numbers. The errors are preserved here if you want exactly my experience.

BREAKING the CODE

Those of you who want to solve this yourself, do not read further.
The code was as follows.
.C3nZC3nZC3nXD3DYDhbYCNnY.fHmc.C3fZDxf1E3b1Dxr7. [Starsiege: Tribes 020626836678]
Somewhere in the code is a bell character. I did not bother analyzing where it is; I suspect that it is at the beginning.
The first chunk of data sent by the CAT is always the same; I think that it is probably a serial number for the device itself, but I am not completely sure. The second chunk of data varies depending on the format of the barcode. I am not done with my analysis of this either. The third chunk of data is the actual barcode number, sent through a kinda fun encoding scheme to prevent the unworthy from using the information hidden inside. This is the segment that I will talk about now (i.e. C3fZDxf1E3b1Dxr7.).

After much meditation over the milk and cookies, I tried comparing the number of barcode letters to the number of digits in the code. No dice. There are 12 numbers in the barcode, and 16 letters in the CUE KAT code. Hmm. Two of the barcodes on my sheet were the same. (the sheet is appended above for those of you who are into cryptography who don't yet have a CUE CAT to play with.) Two of the barcodes on the sheet are almost the same (I had two EA CD-ROM CLASSICS games near my desk.) I started by copying their codes next to eachother, so:

014633118797 (Populous) C3j3DxbWCNj7DhP0
014633116908 (ESPN Swb) C3j3DxbWCNj1ENn7
hmm. the last five letters differ, but the others are the same. I started copying sets of the last five letters and the last four numbers. There is more than one cypher going on at once !
To make a long story short, I figured out the following facts.
  1. The pattern of letters contains doubles representing one number.
  2. The pattern goes DSSDSSDSSDSS..
  3. The pattern is repeated in threes.
  4. There are three codes for every number (a triple and two different singles).
  5. it varies by position...

Translation table

Here is the translation table:
Doubles
0,C3
1,CN
2,Cx
3,Ch
4,D3
5,DN
6,Dx
7,Dh
8,E3
9,EN

Singles (1st, 2nd)
0,n,Z
1,j,Y
2,f,X
3,b,W
4,D,3
5,z,2
6,v,1
7,r,0
8,T,7
9,P,6

Here is my little GW/BW/Atari/Cheap BASIC PRGM to decode barcodes:

10 PRINT ":CUE CAT DECODER ring by Merle D. Zimmermann, Vaaleron@hotmail.com"
20 PRINT "Loading Zugg CODE TABLE... Please hold.."
30 DIM dc$(10) ' Double-CODE table
40 DIM s1$(10) ' Single-CODE-1 table
50 DIM s2$(10) '     ditto   2 table
60 FOR i = 0 TO 9
70 READ dc$(i)
80 NEXT i
90 FOR i = 0 TO 9
100 READ s1$(i)
110 NEXT i
120 FOR i = 0 TO 9
130 READ s2$(i)
140 NEXT i
150 PRINT "CODE TABLE LOADED: PATTERN: Double-Single1-Single2..."
160 PRINT
170 PRINT "Please scan your barcode now (you will hear a beep):"
180 INPUT scan$
190 dots = 0 ' after three dots the actual BARCODE CODES are in the string.
200 FOR i = 1 TO LEN(scan$)
210 IF MID$(scan$, i, 1) = "." THEN dots = dots + 1
220 IF dots = 3 THEN w = i + 1: dots = 4 ' mark w with the 1st CODE CHAR.
230 NEXT i
240 PRINT ' we are now on the CODE SEGMENT...
250 Waltz = 0 ' a waltz has three beats.  There are three kinds of CODEs.
260 FOR i = w TO LEN(scan$) - 1
270 Waltz = Waltz + 1
280 IF Waltz = 1 THEN GOSUB 400: i = i + 1 ' CODE: Double; correct for 2ltrs
290 IF Waltz = 2 THEN GOSUB 450 ' CODE: Single (1)
300 IF Waltz = 3 THEN GOSUB 500 ' CODE: Single (2)
310 IF Waltz = 3 THEN Waltz = 0 ' and wrap around again !
320 NEXT i
330 PRINT
340 PRINT
350 GOTO 170

400 c$ = MID$(scan$, i, 2) ' DOUBLE CODE --> c$
410 FOR j = 0 TO 9
420 IF c$ = dc$(j) THEN PRINT USING "#"; j;  ' Print out # if matched.
430 NEXT j
440 RETURN

450 c$ = MID$(scan$, i, 1) ' SINGLE CODE 1 --> c$
460 FOR j = 0 TO 9
470 IF c$ = s1$(j) THEN PRINT USING "#"; j;
480 NEXT j
490 RETURN

500 c$ = MID$(scan$, i, 1) ' S/C 2 --> c$
510 FOR j = 0 TO 9
520 IF c$ = s2$(j) THEN PRINT USING "#"; j;
530 NEXT j
540 RETURN

550 DATA C3,CN,Cx,Ch,D3,DN,Dx,Dh,E3,EN
560 DATA n,j,f,b,D,z,v,r,T,P
570 DATA Z,Y,X,W,3,2,1,0,7,6
580 END


Let it not be said that I am gone. I am BAK for the HAk. MADMAN - Sept, 17 2000
index file
Sstay tuned for new programs and things from the madman.