1. The typical USB protocol requires that anything with USB declares itself as either a "device" or "host". "Host" can be a PC and other bigger machines accessible whereas "Devices" can be iPod, iPads, USB thumb drives, and other "small" accessory-like things. If you ever want a USB "host" to pretend to be a USB "device", you need special hardware. The FaceDancer is that key.
2. The FaceDancer allows a computer (or "host") to masquerade as a USB "device" to communicate with other USB devices or USB Hosts. The FaceDancer allows a developer to access data on the USB bus from high level languages like C, Python, and Ruby.
Details and above info from : http://int3.cc/products/facedancer21