Friday, January 05, 2007

Pseudocode Exercise.

10 REM This is a pseudocode program.
20 REM Normally pseudocode is used to design programs but in this case I am using it to make a point.
22 REM
30 Let $PC = I
40 Print 'Polls closed?"
50 If "Y" or "y" then End Program. If "N" or "n" then 60.
60 REM Let's have this represent a sample election
61 Let X = overall vote counter
70 Print "Sample Race for Dog Catcher"
80 Print "This race will be provided with an Audit Trail"
90 Print "Please select the candidate you prefer."
100 Print
110 Print "Candidate A"
120 Print "Candidate B"
130 Input C
140 If C = Candidate A then print Candidate A's Name to the Audit Trail
150 If C = Candidate B then print Candidate B's Name to the Audit Trail
160 Let X = X + 1
161 REM This advances the overall vote counter..
165 Let H = H + 1
166 REM The purpose of this second counter will be revealed later.
170 REM Notice that the voter is being provided with an audit trail for his own use, whether to the screen or as a printout, so "He can see what is being done with his vote"? o_O
173 REM
180 REM Now watch what happens next!
181 REM
190 If C = Candidate A then let Candidate A's total = A + 1.
191 REM
200 REM So far, so good, right? Note once more that the audit trail has already been printed.
201 REM
210 If C = Candidate B and H < 1000 then 275 Else 220
211 REM
220 REM Now the dirty work begins! :P
221 REM
230 If H = 1000 then let Candidate A's total = A +1
240 Reset H to Zero.
250 GOTO 30
251 REM
252 REM Whee!
253 REM
260 REM Did you just see what happened? o_O
261 REM
262 REM Any voter for Candidate B would get his receipt showing that he voted for his man alright but 1 out of 1000 votes would have their votes diverted without any way of being the wiser.
264 REM
265 REM If you stop to think about it there is no reason any printout has to reflect what the Computer is actually doing.
267 REM
268 REM And if *I* can think of this then I assure you that other
269 REM activists with a programming background probably already have
270 REM as well. ^_^;
271 REM
272 REM Now let's finish the rest of this pseudocode.
273 REM
275 Let Candidate B's total = B + 1
280 Let H = H + 1
281 REM
282 REM Alas, poor B! 1 vote out of 1000 is subtle enough that he would never know what hit him but would still apply a killer advantage in a large election that happened to be close. ^_^;
285 REM
286 REM Note by the way, that I have deliberately designed this in a botched manner to discourage any script kiddies who want to try this for real. :P
289 REM
290 GOTO 30.
291 REM
292 REM That said, I hope that anyone who reads this still sees my point.
294 REM
295 REM Now you know why I don't consider printouts or receipts to be any protection against vote fraud. ^_^;;
297 REM
300 End Pseudocode Exercise! >_<

Labels: ,

0 Comments:

Post a Comment

<< Home