Consider an answering machine with remote inquiry facility, where you can call the answering machine and enter a 4 digit passcode into your telephone keypad, so you can listen to the messages from anywhere you like. Many of these machines will let you in if you enter the correct consecutive sequence of digits, regardless of what preceded that sequence.
Example: Passcode is 1234.
if you feed the machine 1234, you're in.
if you feed the machine 01234, you're in.
if you feed the machine 0121234, you're in.
if you feed the machine 94129838701234, you're in.
To brute-force hack the machine, you could try all numbers from 0000 to 9999, sending 40000 sounds across the wire. But since you are a smart hacker, you see that there's room for optimization. What is the shortest series of digits you have to send to the answering machine in order to break the code in any case?
My first guess is 10001.
For 2 digits codes a 101 digit string works:
100 codes * 2 digits per code / 2 codes per digit + 1 (because they don't wrap around.)
It is more complicated with more digits, but this can probably be optimized in a similar way: 0000100020003000400050006000700080009
I'm not sure what comes next.
Posted by Jer
on 2004-05-24 14:28:41