Driving a USB Rocket Launcher from Perl in User Space PowerPoint PPT Presentation

presentation player overlay
About This Presentation
Transcript and Presenter's Notes

Title: Driving a USB Rocket Launcher from Perl in User Space


1
Driving a USB Rocket Launcher from Perl in User
Space
  • Mike Schilli, Yahoo!
  • 06/23/2009 YAPC, Pittsburgh, PA

2
Goals
  • How can I use USB gadgets on Linux, even if they
    only come with a Windows driver?

3
USB A versatile technology
4
USB A versatile technology
5
USB A versatile technology
6
USB A versatile technology
7
Limited Fun on Windows
8
Unlimited Fun with Perl
  • Defend your Cubicle
  • Burglar Alarm with Web Cam and Rocket Launcher

9
USB Architecture
10
USB Hierarchy
11
USB Hierarchy
12
USB Hierarchy
13
Plug it in
14
Plug it in
15
Plug it in
16
(No Transcript)
17
USB Architecture
18
USB Architecture
19
USB Architecture
20
(No Transcript)
21
Device Drivers
  • Often not available for Linux, just for
    Windows/Mac
  • Hard to write
  • Highly dependent on kernel version
  • Vendors dont want to bother with niche markets

22
USB Architecture
23
libusb
  • Drivers in User Space
  • http//libusb.sourceforge.net
  • Problem How to find a device?

24
Plug it in
25
USB Architecture
26
USB Architecture
27
Install Everything
28
USB Rules to set Permissions
29
(No Transcript)
30
Plug it in
31
(No Transcript)
32
RocketBaby
33
USB Architecture
  • Control Transfers (config control)?
  • Bulk Transfers (large quantities of
    time-sensitive data)?
  • Interrupt Transfers (small amounts of
    time-sensitive data)?
  • Isochronous Transfers (real-time data at
    predictable rates)?

34
Reverse Engineering Efforts
  • RocketBaby comes with Win XP driver
  • Protocol sniffed out with USBSniff
  • .DLL code investigated with IDA Pro Disassembler
    (see references)?
  • Control Transfers for turn/raise/lower/fire
  • Bulk Transfers for reading status

35
Reverse Engineering Efforts
  • Control Transfers (config control)?
  • Bulk Transfers (large quantities of
    time-sensitive data)?
  • Interrupt Transfers (small amounts of
    time-sensitive data)?
  • Isochronous Transfers (real-time data at
    predictable rates)?

36
(No Transcript)
37
(No Transcript)
38
(No Transcript)
39
Demo
40
(No Transcript)
41
(No Transcript)
42
Demo
  • Attention in the splash zone!
  • Incoming rockets!

43
References
  • Video The Great Office War http//www.youtube.co
    m/watch?vpVKnF26qFFM
  • Alessandro Rubini, Linux Device Drivers
    http//lwn.net/images/pdf/LDD3/ch13.pdf
  • Essential Linux Device Drivers, Sreekrishnan
    Venkateswaren, Prentice Hall, 2007
  • RocketBaby Reverse Engineering Efforts
    http//dvlabs.tippingpoint.com/blog/2009/02/12/pyt
    hon-interfacing-a-usb-missile-launcher
Write a Comment
User Comments (0)
About PowerShow.com