[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