My favorite tool for this is the Saleae Logic[1], but I've had mixed success with the cheaper Bus Pirate[2] as well.
[1] http://www.saleae.com/logic [2] http://dangerousprototypes.com/docs/Bus_Pirate
[1] http://www.saleae.com/logic [2] http://dangerousprototypes.com/docs/Bus_Pirate
How does one go about doing this? Is this done on hardware or some wireshark-esque software tool?