Hacking the Winn-Dixie Survey
by Tim K

     When I was in college, I lived next door to a Winn-Dixie grocery store. 
About 75 percent of the time I made a purchase, the bottom of my receipt would 
have the phone number for an automated survey asking me to rate aspects of my 
shopping experience in return for the chance to win $5000 (it's since dropped 
to $2000).  Naturally, as a poor college student, I would do this survey every 
single time.  Though I never won, I did notice some recurring patterns in the 
survey codes.

     The code on the receipt is made up of three blocks of six numbers each, 
but for simplicity's sake let's treat it as a single 18-digit number.  Based on
examining literally hundreds of receipts, here's how the numbers breakdown:

	Digits 1-4: The date in mmdd format.

	Digits 5-6: The hour in 24-hour notation.

	Digits 7-10: The Winn-Dixie store number.

	Digits 11-14: The transaction number for the checkout lane for that 

	Digit 15: Always 0 as far as I can tell, though it may be a leading 
                  zero for...

	Digits 16-17: The checkout lane number.  This was almost always 93, 94,
		      or 96 in my data, then one day I realized it's because I 
		      go to the self-checkout almost every time.  So I made a 
                      point of going to a human cashier; lo and behold, these
                      two digits came up as 03.

	Digit 18: Some sort of hash or check digit - I have not determined how 
		  this is calculated.  In many cases, I noticed that this 
		  corresponded to the number of items purchased mod 10, but not
		  always, so I discarded that theory.  But if you enter this 
		  digit incorrectly, the friendly voice tells you "Invalid 
                  Entry" and you have to enter all 18 digits again.

     After I had deciphered all of this information, I noticed a lot of it 
repeated in the bar code at the bottom of every receipt, whether there was a 
survey or not.  However, on a few receipts, there were some numbers that I just
couldn't make sense of - until I had another face-palming moment.  Here are two
real sample receipt numbers from my data.  See if you see the same thing I did,
based on the information I've given you so far.


     Let's break them down together block by block: 

	4411: Always the same; likely a Winn-Dixie company code. 

	0616/0703: I did these grocery runs on June 16th and July 3rd.

	0209: Store 0209 is in Pembroke Pines, Florida.

	003/091: I paid at lane number 3 and the self-checkout, respectively. 

	00581358/00000091: ???? 

	0213/0306: Considering I was shopping at 8:30-9 o'clock at night, it's 
		   not unrealistic to think 200-300 people had already been 
                   through a particular checkout lane that day.

	00000: Filler zeros.

     So, the differences?  Take a look at the lane number and the "unknown" 
number.  I believe that eight digit number to be some kind of employee ID, 
whether known to them or not.  So what's the point of all this (as my wife has 
asked several times)?  Maybe someone who really wanted to win the cash could 
write a dialer program, generating its own valid survey codes.  I've also 
noticed that recently Winn-Dixie has switched to printing a URL instead.  I'm
sure some clever scripting could accomplish the same thing.  Or maybe it's just 
interesting to find patterns in the seemingly mundane bits of our everyday