Hallo, ich habe eine Frage zum CBWTag Eintrag. wie setzt er sich genau zusammen, ich habe hier zwar schon ein recht anschauliches Beispiel: http://www.nxp.com/acrobat_download/usermanuals/d12_masssto_usb2ide_cf_guide.pdf In diesem Fall stellt es ein SCSI Read command dar: 28 E8 31 FE. Das Kürzel für SCSI Read ist hex 28, doch was bedeuten die anderen 3 Bytes!? Zu SCSI generell vielleicht noch eine Kleinigkeit, ich habe noch kein Kommando zum löschen gefunden (erase device) - gibt es das überhaupt!? eine recht anschauliche Liste mit den gängigsten Befehlen habe ich bei microchip gefunden: http://ww1.microchip.com/downloads/en/AppNotes/01169a.pdf gruß, w.
hi, die frage zu tag hat sich mittlerweile beantwortet, es wird vom os ausgefüllt und ist wirklich nur die kennung für den befehl. der eigentliche scsi befehl im usb datanstrom ist dann doch nur ein byte groß. ich habe hier noch ein wirklich gutes dokument dazu gefunden, hier ist es sehr schön farblich hinterlegt. http://mcu.emea.fujitsu.com/document/appnotes/Public/16Bit/mcu-an-300243-e-16fx_usb_host_mass_storage/mcu-an-300243-e-v10-16fx_usb_host_mass_storage.pdf zum thema scsi erase command habe ich noch dieses listing gefunden: http://en.wikipedia.org/wiki/SCSI_command Mittlerseile kann ich mit meinem modifizierten cypress treiber den es als kit zum cy7c68001 dazu gab (die api ist dort sehr schön), über eine selbstgebastelte emulierung des command block wrappers alle art informationen auslesen, momentan habe ich gerade den mbr des sticks ausgelesen - schonmal klasse, das klappt. letztendlich hilft auch ein usb sniffer ungemein, hier habe ich usbsnoop verwendet, leider sind die ausgaben nur in einer textdatei und die interpretation kostet ein wenig nerven, aber es ist besser als nichts... dennoch stellt windows eine ganze menge anfragen an so ein usb device, teilweise doppelt und teilweise zyklisch... momentan hänge ich an einer stelle mit dem usb sniffer tool fest, dort gibt es gewisse transfer flags, deren bedeutung mir noch nicht ganz klar ist. hier mal ein ausschnitt vom auslesen des mbr: -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: PipeHandle = 84ed9fdc [endpoint 0x00000002] TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK) TransferBufferLength = 0000001f TransferBuffer = 8475db48 TransferBufferMDL = 00000000 00000000: 55 53 42 43 08 40 02 85 00 02 00 00 80 00 0a 28 00000010: 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 UrbLink = 00000000 [405 ms] UsbSnoop - MyInternalIOCTLCompletion(f78fddb0) : fido=85073480, Irp=85024008, Context=850e8808, IRQL=2 [405 ms] <<< URB 27 coming back <<< -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: PipeHandle = 84ed9fdc [endpoint 0x00000002] TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK) TransferBufferLength = 0000001f TransferBuffer = 8475db48 TransferBufferMDL = 84e7e8d0 UrbLink = 00000000 [405 ms] UsbSnoop - DispatchAny(f78fc610) : IRP_MJ_INTERNAL_DEVICE_CONTROL [405 ms] UsbSnoop - MyDispatchInternalIOCTL(f78fde80) : fdo=84e7d188, Irp=85024008, IRQL=2 [405 ms] >>> URB 28 going down >>> -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: PipeHandle = 84ed9fbc [endpoint 0x00000081] TransferFlags = 00000002 (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000200 TransferBuffer = 00000000 TransferBufferMDL = 84f12538 00000000: 00 b0 9d 84 a0 c4 55 80 00 00 00 00 03 00 00 00 00000010: 00 80 41 84 00 00 00 00 28 00 00 00 f0 0b 00 00 00000020: e8 0f 00 00 00 00 00 00 e8 02 00 00 7e 00 73 02 00000030: 00 00 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00000040: 2d 55 01 00 00 00 b3 02 90 00 80 00 00 00 00 00 00000050: 72 02 00 00 00 00 73 02 82 97 9a 93 97 e1 c8 01 00000060: 82 97 9a 93 97 e1 c8 01 82 97 9a 93 97 e1 c8 01 00000070: 82 97 9a 93 97 e1 c8 01 00 2a 00 00 00 00 00 00 00000080: dc 29 00 00 00 00 00 00 20 20 00 00 00 00 00 00 00000090: 1f 01 53 00 4d 00 53 00 5f 00 53 00 4e 00 49 00 000000a0: 46 00 46 00 5f 00 53 00 54 00 55 00 46 00 46 00 000000b0: 2e 00 45 00 58 00 45 00 2d 00 31 00 43 00 38 00 000000c0: 46 00 35 00 36 00 42 00 32 00 2e 00 70 00 66 00 000000d0: 2d 55 01 00 00 00 b3 02 68 00 58 00 00 00 00 00 000000e0: 72 02 00 00 00 00 73 02 82 97 9a 93 97 e1 c8 01 000000f0: 82 97 9a 93 97 e1 c8 01 82 97 9a 93 97 e1 c8 01 00000100: 82 97 9a 93 97 e1 c8 01 00 2a 00 00 00 00 00 00 00000110: dc 29 00 00 00 00 00 00 20 20 00 00 00 00 00 00 00000120: 0b 02 53 00 4d 00 53 00 5f 00 53 00 4e 00 7e 00 00000130: 31 00 2e 00 50 00 46 00 dc bc 00 00 00 00 5c 00 00000140: 80 00 6c 00 00 00 00 00 72 02 00 00 00 00 73 02 00000150: 49 d4 63 8e 8c e5 c8 01 49 d4 63 8e 8c e5 c8 01 00000160: 49 d4 63 8e 8c e5 c8 01 49 d4 63 8e 8c e5 c8 01 00000170: 00 e6 00 00 00 00 00 00 0a e4 00 00 00 00 00 00 00000180: 20 20 00 00 00 00 00 00 15 01 53 00 4e 00 49 00 00000190: 46 00 46 00 2e 00 45 00 58 00 45 00 2d 00 33 00 000001a0: 31 00 46 00 45 00 42 00 37 00 44 00 30 00 2e 00 000001b0: 70 00 66 00 70 00 66 00 f9 bc 00 00 00 00 c5 00 000001c0: 90 00 7a 00 00 00 00 00 72 02 00 00 00 00 73 02 000001d0: 25 1a 2c 8f 8c e5 c8 01 25 1a 2c 8f 8c e5 c8 01 000001e0: 25 1a 2c 8f 8c e5 c8 01 25 1a 2c 8f 8c e5 c8 01 000001f0: 00 9e 00 00 00 00 00 00 bc 9d 00 00 00 00 e8 02 UrbLink = 00000000 [405 ms] UsbSnoop - MyInternalIOCTLCompletion(f78fddb0) : fido=85073480, Irp=85024008, Context=84fa9300, IRQL=2 [405 ms] <<< URB 28 coming back <<< -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: PipeHandle = 84ed9fbc [endpoint 0x00000081] TransferFlags = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000200 TransferBuffer = 00000000 TransferBufferMDL = 84f12538 00000000: fc 31 c0 8e d0 31 e4 8e d8 8e c0 be 00 7c bf 00 00000010: 06 b9 00 01 f3 a5 be ee 07 b0 08 ea 20 06 00 00 00000020: 80 3e b3 07 ff 75 04 88 16 b3 07 80 3c 00 74 04 00000030: 08 06 af 07 83 ee 10 d0 e8 73 f0 90 90 90 90 90 00000040: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00000050: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00000060: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00000070: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 be be 00000080: 07 b0 00 b9 04 00 80 3c 00 75 6e fe c0 83 c6 10 00000090: e2 f4 31 db b4 0e be 9d 07 8a 0e af 07 ac d0 e9 000000a0: 73 02 cd 10 08 c9 75 f5 b0 3a cd 10 31 c0 cd 16 000000b0: 3c 00 74 f8 be 8b 07 b9 02 00 e8 ba 00 3c 0d 74 000000c0: b4 3c 61 72 06 3c 7a 77 02 2c 20 88 c3 be 9d 07 000000d0: 8a 0e af 07 ac d0 e9 73 04 38 c3 74 06 08 c9 75 000000e0: f3 eb af b8 0d 0e 31 db cd 10 8d 84 62 00 3c 07 000000f0: 75 07 b0 1f a2 af 07 eb 99 31 d2 b9 01 00 3c 04 00000100: 74 11 73 f3 30 e4 b1 04 d2 e0 be be 07 01 c6 8a 00000110: 16 b3 07 bf 05 00 56 f6 c2 80 74 31 b4 41 bb aa 00000120: 55 52 cd 13 5a 5e 56 72 1e 81 fb 55 aa 75 18 f6 00000130: c1 01 74 13 8b 44 08 8b 5c 0a be 8d 07 89 44 08 00000140: 89 5c 0a b4 42 eb 0c 8a 74 01 8b 4c 02 b8 01 02 00000150: bb 00 7c 50 c6 06 8f 07 01 cd 13 58 5e 73 05 4f 00000160: 75 b4 eb 93 81 3e fe 7d 55 aa 75 f6 ea 00 7c 00 00000170: 00 be 83 07 b9 0a 00 50 b4 0e 31 db ac cd 10 e2 00000180: fb 58 c3 54 65 73 74 44 69 73 6b 0d 0a 10 00 01 00000190: 00 00 7c 00 00 00 00 00 00 00 00 00 00 31 32 33 000001a0: 34 46 00 00 41 4e 44 54 6d 62 72 00 02 02 02 1f 000001b0: c7 00 00 80 00 00 00 00 00 00 00 00 a5 01 00 01 000001c0: 01 00 0b fe 3f 3d 3f 00 00 00 7f 32 0f 00 00 00 000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa UrbLink = 00000000 [405 ms] UsbSnoop - DispatchAny(f78fc610) : IRP_MJ_INTERNAL_DEVICE_CONTROL [405 ms] UsbSnoop - MyDispatchInternalIOCTL(f78fde80) : fdo=84e7d188, Irp=85024008, IRQL=2 [405 ms] >>> URB 29 going down >>> -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: PipeHandle = 84ed9fbc [endpoint 0x00000081] TransferFlags = 00000002 (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK) TransferBufferLength = 00000200 TransferBuffer = 8475db48 TransferBufferMDL = 00000000 00000000: 55 53 42 43 08 40 02 85 00 02 00 00 80 00 0a 28 00000010: 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 UrbLink = 00000000 [406 ms] UsbSnoop - MyInternalIOCTLCompletion(f78fddb0) : fido=85073480, Irp=85024008, Context=84ec70f0, IRQL=2 [406 ms] <<< URB 29 coming back <<< -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: PipeHandle = 84ed9fbc [endpoint 0x00000081] TransferFlags = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK) TransferBufferLength = 0000000d TransferBuffer = 8475db48 TransferBufferMDL = 84e7e8d0 00000000: 55 53 42 53 08 40 02 85 00 00 00 00 00 UrbLink = 00000000 der zweite große datenblock entspricht dem mbr des sticks, der erste datenblock ist nicht auf dem stick, dennoch kommen sie auf dem endpoint 81 welcher eindeutig ein IN endpoint ist, in den flags die usbsnoop darstellt ist hierfür eine 2 eingetragen (OUT), beim mbr eine 3 (IN) - was mag dies bedeuten!? ich aus meiner anwendungssicht sehe den ersten block garnicht. vielleicht kennt jemand von euch das tool usbsnoop!? gruß, whitenoise
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.