I think we're nearly in.

dev.ctrl_transfer(bmRequestType=0x04, bmRequest=0x02, wValue=0x02)

I think it's "bRequest=0x02" instead of "bmRequest=0x02" right ?

With this sentence I've got the follownig error:

Traceback (most recent call last):
  File "test", line 25, in <module>
    dev.ctrl_transfer(bmRequestType=0x04, bRequest=0x02, wValue=0x02)
TypeError: ctrl_transfer() takes at least 5 non-keyword arguments (4 given)

and if I add wIndex:

dev.ctrl_transfer(bmRequestType=0x04, bRequest=0x02, wValue=0x02,
wIndex=0x00)

the error:
  File "test", line 25, in <module>
    dev.ctrl_transfer(bmRequestType=0x04, bRequest=0x02, wValue=0x02,
wIndex=0x00)
  File "/usr/local/lib/python2.6/dist-packages/usb/core.py", line 619, in
ctrl_transfer
    a = (data_or_wLength is None) and array.array('B') or array.array('B',
data_or_wLength)
TypeError: 'NoneType' object is not iterable

Thanks

Romain


On Tue, Jan 26, 2010 at 3:48 PM, Romain Aviolat <r.avio...@gmail.com> wrote:

> Repair that there is a vendor control request issued before sending
> the command 0x00 0xFF 0xFF.
>
> RequestType = 0x40 (which means vendor)
> Request = 0x02
> Value = 0x02
> Index = 0x00
>
> There is no data payload.
>
> Try the following:
>
> import usb.core
> import usb.util
>
> # find our device
> dev = usb.core.find(idVendor=0x10c4, idProduct=0x0002)
>
> # was it found?
> if dev is None:
> raise ValueError('Device not found')
>
> # set the active configuration. With no arguments, the first
> # configuration will be the active one
>
> dev.set_configuration()
>
> ## HERE THE CONTROL TRANSFER
> dev.ctrl_transfer(bmRequestType=0x04, bmRequest=0x02, wValue=0x02)
>
> msg = [0x00, 0xFF, 0xFF]
> sent_bytes = dev.write(0x02, msg, 0, 100)
>
> Hopefully you can read some response from the device...
>
> Wander
>
> 2010/1/24 Romain Aviolat <r.avio...@gm...>:
> > Ooops my mail was too big, I pasted the log files on pastebin instead.
> >
> > Yes I did both sniffing, from linux with usbmon and from windows itself
> with
> > usbsnoop.
> > What I didn't do is starting sniffing when I plug the device, I always
> > started sniffing before pressing the "download data" button under windows
> > when the device was already connected.
> >
> > This first log file is from windows running usbsnoop when I plug the
> device.
> > I don't know if this traffic is generated from windows querying the
> device
> > or from the device driver initialising the device.
> > http://pastebin.com/f43a0c4a0
> >
> > The second log file, always from windows, is when I press the "download
> > data" button from the device software, so nothing happened between this
> log
> > and the previous one on the usb port
> > http://pastebin.com/f7acda94a
> >
> > Hope you can help me, I'm really stucked at this point
> >
> > Thanks,
> > Romain
> >
> >
> > On Fri, Jan 22, 2010 at 2:43 PM, Romain Aviolat <r.avio...@gm...> wrote:
> >>
> >> There must be some earlier data exchange, either on the out/in
> >> endpoint or in the default control endpoint... As you sad you were
> >> using a Windows VM for reverse engineering, you can use a USB sw
> >> sniffer to check it...
> >>
> >> You can use that: http://sourceforge.net/projects/usbsnoop/
> >>
> >> Wander
> >>
> >> 2010/1/22 Romain Aviolat <r.avio...@gm...>:
> >> > My device has 1 configuration, 1 interface, and two endpoints
> >> >
> >> > Bus 002 Device 002: ID 10c4:0002 Cygnal Integrated Products, Inc. F32x
> >> > USBXpress Device
> >> > Device Descriptor:
> >> >   bLength                18
> >> >   bDescriptorType         1
> >> >   bcdUSB               1.10
> >> >   bDeviceClass            0 (Defined at Interface level)
> >> >   bDeviceSubClass         0
> >> >   bDeviceProtocol         0
> >> >   bMaxPacketSize0        64
> >> >   idVendor           0x10c4 Cygnal Integrated Products, Inc.
> >> >   idProduct          0x0002 F32x USBXpress Device
> >> >   bcdDevice            1.00
> >> >   iManufacturer           1 Silicon Labs
> >> >   iProduct                2 USB API
> >> >   iSerial                 3 1
> >> >   bNumConfigurations      1
> >> >   Configuration Descriptor:
> >> >     bLength                 9
> >> >     bDescriptorType         2
> >> >     wTotalLength           32
> >> >     bNumInterfaces          1
> >> >     bConfigurationValue     1
> >> >     iConfiguration          0
> >> >     bmAttributes         0x80
> >> >       (Bus Powered)
> >> >     MaxPower               60mA
> >> >     Interface Descriptor:
> >> >       bLength                 9
> >> >       bDescriptorType         4
> >> >       bInterfaceNumber        0
> >> >       bAlternateSetting       0
> >> >       bNumEndpoints           2
> >> >       bInterfaceClass         0 (Defined at Interface level)
> >> >       bInterfaceSubClass      0
> >> >       bInterfaceProtocol      0
> >> >       iInterface              0
> >> >       Endpoint Descriptor:
> >> >         bLength                 7
> >> >         bDescriptorType         5
> >> >         bEndpointAddress     0x02  EP 2 OUT
> >> >         bmAttributes            2
> >> >           Transfer Type            Bulk
> >> >           Synch Type               None
> >> >           Usage Type               Data
> >> >         wMaxPacketSize     0x0040  1x 64 bytes
> >> >         bInterval               0
> >> >       Endpoint Descriptor:
> >> >         bLength                 7
> >> >         bDescriptorType         5
> >> >         bEndpointAddress     0x82  EP 2 IN
> >> >         bmAttributes            2
> >> >           Transfer Type            Bulk
> >> >           Synch Type               None
> >> >           Usage Type               Data
> >> >         wMaxPacketSize     0x0040  1x 64 bytes
> >> >         bInterval               0
> >> > Device Status:     0x0000
> >> >
> >> > I'm running ubuntu linux ans PyUSB1.0 you are right.
> >> >
> >> >
> >> >
> >> > On Fri, Jan 22, 2010 at 10:05 AM, Romain Aviolat <r.avio...@gm...>
> >> > wrote:
> >> >>
> >> >> This can be many things, does your device have more than one
> >> >> configuration or interface/alternate setting? And about the endpoint
> >> >> address? I see you are using PyUSB 1.0, are you running it under
> >> >> Windows? I haven't tested it in Windows yet (actually I did, but
> there
> >> >> are some issues that I did not fix yet, then I could not progress
> with
> >> >> tests).
> >> >>
> >> >> Wander
> >> >>
> >> >> 2010/1/21 Romain Aviolat <r.avio...@gm...>:
> >> >> > Hi, this my first time in this mailing list,
> >> >> >
> >> >> > I'm trying to reverse a device that has no support for Linux, I'm
> new
> >> >> > to
> >> >> > pyusb and have a problem with my script.
> >> >> >
> >> >> > I sniffed the USBlog from a virtual machine running windows and my
> >> >> > working
> >> >> > device here's the log:
> >> >> >
> >> >> > f53ed800 355026092 S Co:2:002:0 s 40 02 0002 0000 0000 0
> >> >> > f53ed800 355027800 C Co:2:002:0 0 0
> >> >> > f53ed800 355075185 S Bo:2:002:2 -115 3 = 00ffff
> >> >> >
> >> >> > If the device receive the 0x00, 0xFF, 0xFF sequence, it then send
> >> >> > it's
> >> >> > data
> >> >> >
> >> >> > Here's my code (mainly used the examples on the pyusb website)
> >> >> >
> >> >> > ------------------------
> >> >> > import usb.core
> >> >> > import usb.util
> >> >> >
> >> >> > # find our device
> >> >> > dev = usb.core.find(idVendor=0x10c4, idProduct=0x0002)
> >> >> >
> >> >> > # was it found?
> >> >> > if dev is None:
> >> >> >     raise ValueError('Device not found')
> >> >> >
> >> >> > # set the active configuration. With no arguments, the first
> >> >> > # configuration will be the active one
> >> >> >
> >> >> > dev.set_configuration()
> >> >> >
> >> >> > msg = [0x00, 0xFF, 0xFF]
> >> >> > sent_bytes = dev.write(0x02, msg, 0, 100)
> >> >> > ------------------------
> >> >> >
> >> >> > and here's the output
> >> >> >
> >> >> > f341b700 484297497 S Co:2:003:0 s 00 09 0001 0000 0000 0
> >> >> > f341b700 484299102 C Co:2:003:0 0 0
> >> >> > f341b700 484312389 S Bo:2:003:2 -115 3 = 00ffff
> >> >> >
> >> >> > The 0x00, 0xFF, 0xFF sequence is correctly sent but the device
> >> >> > doesn't
> >> >> > send
> >> >> > it's data, we can see in the first line of both log that the
> >> >> > ControlOutput
> >> >> > is not the same, I think this is my problem.
> >> >> >
> >> >> > I don't know how to change 09 0001 0000 0000 to 40 02 0002 0000
> 0000
> >> >> >
> >> >> > Hope someone can help me,
> >> >> >
> >> >> > Cheers, Romain
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> ------------------------------------------------------------------------------
> >> >> > Throughout its 18-year history, RSA Conference consistently
> attracts
> >> >> > the
> >> >> > world's best and brightest in the field, creating opportunities for
> >> >> > Conference
> >> >> > attendees to learn about information security's most important
> issues
> >> >> > through
> >> >> > interactions with peers, luminaries and emerging and established
> >> >> > companies.
> >> >> > http://p.sf.net/sfu/rsaconf-dev2dev
> >> >> > _______________________________________________
> >> >> > Pyusb-users mailing list
> >> >> > pyusb-us...@li...
> >> >> > https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >> >> >
> >> >> >
> >> >
> >> >
> >> >
> >> >
> ------------------------------------------------------------------------------
> >> > Throughout its 18-year history, RSA Conference consistently attracts
> the
> >> > world's best and brightest in the field, creating opportunities for
> >> > Conference
> >> > attendees to learn about information security's most important issues
> >> > through
> >> > interactions with peers, luminaries and emerging and established
> >> > companies.
> >> > http://p.sf.net/sfu/rsaconf-dev2dev
> >> > _______________________________________________
> >> > Pyusb-users mailing list
> >> > pyusb-us...@li...
> >> > https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >> >
> >> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Throughout its 18-year history, RSA Conference consistently attracts the
> > world's best and brightest in the field, creating opportunities for
> > Conference
> > attendees to learn about information security's most important issues
> > through
> > interactions with peers, luminaries and emerging and established
> companies.
> > http://p.sf.net/sfu/rsaconf-dev2dev
> > _______________________________________________
> > Pyusb-users mailing list
> > pyusb-us...@li...
> > https://lists.sourceforge.net/lists/listinfo/pyusb-users
> >
> >
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Pyusb-users mailing list
Pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to