[Lazarus] Decoding USB sniff data
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Fri Jun 4 11:25:00 CEST 2010
Adem wrote:
> Would you say it is also installing a device driver too?
You're the one with the hardware and software. I'm saying nothing.
> I think this device is some form of mass storage device; but I am not sure.
I'd suggest that the thing you should be doing /first/ is plugging it
into a (Linux) system and getting as much information as possible about
what it describes itself as. If it is simply a mass storage device then
it is probably creating files which the Java app is transferring and
trying to process. The fact that it takes several attempts to start up
could be bad hardware design- I'm far from being an expert in this area
but there are various requirements about how a device boots on
connection, including changing pullup termination.
> How can I tell whether it does install a device driver also --in Windows
> platofrm.
Don't know, the only Windows I use is NT as an application server and
that has very limited USB capabilities. A good starting point would be
looking for any software that dissects the software installer or the
uninstall files it creates, a brute-force search for files with
interesting names or incriminating messages including copyright notices,
and- obviously- a thorough Google for the vid:pid
(vendor_identifier:product_identifier) and any other related hardware or
software.
> USBTrace seems to be able to help in filtering and/or turning the data
> exchange into an organized blurb [it darn well should; for that price.]
Since it's XML there's obviously lots of processing tools around. But
the first thing is to find the underlying device class etc. so that you
can see the wood for the trees: if you spent months working through your
200K trace only to find that it was entirely routine mass-storage
management you'd feel pretty sick.
Beware of devices that need firmware from a driver. Beware of devices
that start off looking like a mass storage or CD device and need a
special command sequence ("Zero-CD" etc.) to make them operational.
Java should be a natural choice for this sort of thing. Unfortunately
Sun dawdled for years before they even introduced serial support,
meaning that Java made no significant penetration into e.g. lab
equipment support. I've come across it being used for mini-PLC
programming and that's about all.
I'm not sure about this but I suspect that the same class or archive
that supports serial ports also supports USB. Anything at all that you
can deduce about the Java classes and any custom libraries is likely to
be a useful resource. And don't forget to look inside files for
developer copyright messages and URLs, and allow that some of that might
be Unicode so non-trivial to search.
So to summarise: work out what class of USB device you've got, inspect
the Java, and then (only) if necessary use standard tools on the XML. I
believe that all of these are well-understood by practitioners in
appropriate fields (but not necessarily by me :-)
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the Lazarus
mailing list