Re: Need urgent help checking voting machines for Java code - today!
<jmarch@prodigy.net> wrote in message
news:1158082871.801034.221000@i3g2000cwc.googlegroups.com...
Folks,
I'm an elections observer in Pima County AZ credentialled by both the
Pima County Democratic and Libertarian parties. I need to be able to
check the Diebold Election Systems central tabulator for illicit Java
programs that might alter the central vote tally database.
In case you're not aware, Diebold's central vote tabulator stores it's
data in MS-Access. Yeah. Which means it can be "back doored" all too
easily. The box runs Windows 2000.
I already have a method for doing this for Visual Basic scripts from
the command line:
C:\>findstr /l /s /i /m /c:"select case" /c:"elseif" /c:"end sub" *.* >
c:\vblog.txt
The "findstr" command (built into Win2k and XP) will report back all
files that contain any of those three strings which are common stuff in
VB. I can then pull up the log file created and manually look at each
one for potential cheatin' stuff.
I need an equivelent for Java, as a separate second command line to
write to a "jslog.txt" file. But I don't know enough about Java to
create such a critter.
Any ideas? This is for a test this evening as today is the AZ
primaries.
(Note: yeah, I know they might compile it and screw us. Nothing I can
do about that except hope that any cheater is a pretty low-grade
geek...
I believe the pseudo-equivalents to VB's "select case", "elseif" and
"end sub" are "switch", "else"[*] and "}" respectively. However, for the
number of matches you're likely to get with "}", you might as well just read
the entire Java source code.
I don't see how finding these constructs, either in VB or Java, will
help you detect "illicit programs" in any way (unless this is one of those
"going through the motions to give the illusion of security" kind of
things), so maybe I completely misunderstood your question.
Are you trying to make sure there aren't any Java programs installed at
all? Well, as an easy first step, I'd go into the control panel and
uninstall any Java Virtual Machines I could find. That'll probably stop most
low-grade cheaters. If you're looking for keywords that almost always appear
in Java programs, you can try stuff like "public static void main(String",
"public class", "package", "import".
As for your "they might compile it and screw us", I have to say they
will definitely compile it. Java, traditionally, is compiled, not
interpreted. Which means if they're low grade, they probably compiled it. If
they manage to get a Java program running without compilation, that's
probably evidence of a high-grade cheater. So you should look for files with
the .class file extension. If the first 4 bytes are 0xCA 0xFE 0xBA 0xBE,
then it's a Java file. These 4 bytes are not whithin ASCII, so I'm not sure
if you can use findstr to detect them.
- Oliver
*: "else if" might be a better match, but then you'd have to deal with
whitespace issues like "else if".