NSAPlayset / SLOTSCREAMER

76 stars 12 forks source link

Basics:

The way it works is that the USB3380 chip has usb endpoints - PCIIN and PCIOUT - that give the usb host the ability to generate any kind of PCIe packet. It doesn't give full control of all header fields, but you can issue mem, io, and cfg reads and writes. Inception only scratches the surface, but is an easy and cool demonstration. Right now it's pretty slow, but i believe that's due to pyusb/libusb and a few other inefficiencies. theoretically it should be able to dump 4gb of memory in a matter of seconds, not 40 minutes.

Video Demo:

https://www.youtube.com/watch?v=SvnvOXXAxaI

Getting Hardware:

The PLX USB3380 is available for about $15. A custom DIY PCB is in progress but not ready yet. USB3380 reference boards work fine but need firmware to be flashed. They can be aquired from PLX as part of a costly kit, or bought directly form the distributor, Bplus technologies. All of the below are the same company:

http://www.bplus.com.tw/PLX.html

http://www.hwtools.net/PLX.html

http://www.aliexpress.com/store/group/PLX-Series/706012_250803066.html

Confirmed working:

Does not work:

Making a SLOTSCREAMER out of a PLX USB3380:

All the months of toiling trying to prototype with linux usb gadget drivers were overcomplicated and went nowhere. If you build an eeprom image all you have to do is set a usb enabled bit after pcie powers up. All the other default settings are actually completely sufficient to make it all work. SLOTSCREAMER.bin is attached. PLX provides windows and linux tools to program the firmware, or you could use a hardware programmer. To use the plx tools:

PlxCm is their command line interface. it should automatically choose your usb3380. type: show current eeprom state: "eep" load slotscreamer config: "eep_load SLOTSCREAMER.bin" confirm loading: "eep"

That's it, your usb3380 reference board is now a SLOTSCREAMER

Notes for the PP3380:

The PP3380 may have a larger eeprom that requires two-byte addressing, which PlxCm doesn't do by default. In that case use PlxEe and specify the address width and file to load. You also have to bridge jumper 3 to connect the eeprom.

Running inception:

Slotscreamer support is now incorporated upstream into inception, so this fork is no longer current. https://github.com/carmaa/inception

Files:

TODO:

We have not thoroughly tested inception for password bypass. In the near future, we intend to go through the list of known working OSs that inception can bypass and confirm it works of debug why it doesn't

Changelog:

The changes are essentially: