{"id":24057763,"url":"https://github.com/esno/helix","last_synced_at":"2025-02-26T12:46:16.608Z","repository":{"id":142321218,"uuid":"95328789","full_name":"esno/helix","owner":"esno","description":"dna75 usb hid reverse engineered","archived":false,"fork":false,"pushed_at":"2021-01-31T11:44:20.000Z","size":7,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-09T05:51:17.573Z","etag":null,"topics":["dna75","reverse-engineering","usb-hid","vape"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-24T23:55:10.000Z","updated_at":"2023-06-26T21:28:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"668edfaa-73f9-4d16-9ced-b33c97d952e2","html_url":"https://github.com/esno/helix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Fhelix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Fhelix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Fhelix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Fhelix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esno","download_url":"https://codeload.github.com/esno/helix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240858573,"owners_count":19868998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dna75","reverse-engineering","usb-hid","vape"],"created_at":"2025-01-09T05:50:48.415Z","updated_at":"2025-02-26T12:46:16.542Z","avatar_url":"https://github.com/esno.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# helix\n\nthis is a prototype to configure dna75 chips on linux distributions.\n\n## dna75\n\nThe DNA 75 is a power regulated digital switch-mode DC-DC converter for personal vaporizers.\n\n## dependencies\n\n* python-hidapi (https://github.com/trezor/cython-hidapi)\n\n# dna75 chip info\n\n## dmesg\n\n    usb 1-4.1.4: new full-speed USB device number 11 using xhci_hcd\n    hid-generic 0003:268B:0408.0005: hiddev0,hidraw3: USB HID v1.10 Device [Dimension Engineering Evolv DNA 75] on usb-0000:00:14.0-4.1.4/input0\n    cdc_acm 1-4.1.4:1.1: ttyACM0: USB ACM device\n\n## lsusb\n\n    Bus 001 Device 011: ID 268b:0408  \n    Device Descriptor:\n      bLength                18\n      bDescriptorType         1\n      bcdUSB               2.00\n      bDeviceClass          239 Miscellaneous Device\n      bDeviceSubClass         2 \n      bDeviceProtocol         1 Interface Association\n      bMaxPacketSize0        64\n      idVendor           0x268b \n      idProduct          0x0408 \n      bcdDevice            1.00\n      iManufacturer           2 Dimension Engineering\n      iProduct                3 Evolv DNA 75\n      iSerial                 1 ********\n      bNumConfigurations      1\n      Configuration Descriptor:\n        bLength                 9\n        bDescriptorType         2\n        wTotalLength          107\n        bNumInterfaces          3\n        bConfigurationValue     1\n        iConfiguration          0 \n        bmAttributes         0x80\n          (Bus Powered)\n        MaxPower              500mA\n        Interface Descriptor:\n          bLength                 9\n          bDescriptorType         4\n          bInterfaceNumber        0\n          bAlternateSetting       0\n          bNumEndpoints           2\n          bInterfaceClass         3 Human Interface Device\n          bInterfaceSubClass      0 \n          bInterfaceProtocol      0 \n          iInterface              0 \n            HID Device Descriptor:\n              bLength                 9\n              bDescriptorType        33\n              bcdHID               1.10\n              bCountryCode            0 Not supported\n              bNumDescriptors         1\n              bDescriptorType        34 Report\n              wDescriptorLength      31\n             Report Descriptors: \n               ** UNAVAILABLE **\n          Endpoint Descriptor:\n            bLength                 7\n            bDescriptorType         5\n            bEndpointAddress     0x81  EP 1 IN\n            bmAttributes            3\n              Transfer Type            Interrupt\n              Synch Type               None\n              Usage Type               Data\n            wMaxPacketSize     0x0040  1x 64 bytes\n            bInterval               1\n          Endpoint Descriptor:\n            bLength                 7\n            bDescriptorType         5\n            bEndpointAddress     0x01  EP 1 OUT\n            bmAttributes            3\n              Transfer Type            Interrupt\n              Synch Type               None\n              Usage Type               Data\n            wMaxPacketSize     0x0040  1x 64 bytes\n            bInterval               1\n        Interface Association:\n          bLength                 8\n          bDescriptorType        11\n          bFirstInterface         1\n          bInterfaceCount         2\n          bFunctionClass          2 Communications\n          bFunctionSubClass       2 Abstract (modem)\n          bFunctionProtocol       1 AT-commands (v.25ter)\n          iFunction               0 \n        Interface Descriptor:\n          bLength                 9\n          bDescriptorType         4\n          bInterfaceNumber        1\n          bAlternateSetting       0\n          bNumEndpoints           1\n          bInterfaceClass         2 Communications\n          bInterfaceSubClass      2 Abstract (modem)\n          bInterfaceProtocol      1 AT-commands (v.25ter)\n          iInterface              0 \n          CDC Header:\n            bcdCDC               1.10\n          CDC ACM:\n            bmCapabilities       0x06\n              sends break\n              line coding and serial state\n          CDC Call Management:\n            bmCapabilities       0x00\n            bDataInterface          2\n          CDC Union:\n            bMasterInterface        1\n            bSlaveInterface         2 \n          Endpoint Descriptor:\n            bLength                 7\n            bDescriptorType         5\n            bEndpointAddress     0x84  EP 4 IN\n            bmAttributes            3\n              Transfer Type            Interrupt\n              Synch Type               None\n              Usage Type               Data\n            wMaxPacketSize     0x0040  1x 64 bytes\n            bInterval               1\n        Interface Descriptor:\n          bLength                 9\n          bDescriptorType         4\n          bInterfaceNumber        2\n          bAlternateSetting       0\n          bNumEndpoints           2\n          bInterfaceClass        10 CDC Data\n          bInterfaceSubClass      0 \n          bInterfaceProtocol      0 \n          iInterface              0 \n          Endpoint Descriptor:\n            bLength                 7\n            bDescriptorType         5\n            bEndpointAddress     0x82  EP 2 IN\n            bmAttributes            2\n              Transfer Type            Bulk\n              Synch Type               None\n              Usage Type               Data\n            wMaxPacketSize     0x0040  1x 64 bytes\n            bInterval               0\n          Endpoint Descriptor:\n            bLength                 7\n            bDescriptorType         5\n            bEndpointAddress     0x02  EP 2 OUT\n            bmAttributes            2\n              Transfer Type            Bulk\n              Synch Type               None\n              Usage Type               Data\n            wMaxPacketSize     0x0040  1x 64 bytes\n            bInterval               0\n    Device Status:     0x0000\n      (Bus Powered)\n\n# USB message types\n\n## GET DESCRIPTOR (DEVICE)\n\ndiscover device information\n\n* device class/subclass\n* device protocol\n* max packet size\n* vendor id\n* product id\n* manufacturer\n* product\n* serial no\n* number of possible configurations\n\n## GET DESCRIPTOR (CONFIGURATION)\n\nall USB devices have at least one configuration descriptor. the amount of config descriptors is returned in the device descriptor.\neach configuration descriptor has at least one interface descriptor and each interface descriptor up to 15 endpoints descriptors.\n\n## SET CONFIGURATION\n\nset device configuration\n\n## GET DESCRIPTOR (HID Report)\n\nrequests the device usages and reports that describes the device characteristics\n\n## SET INTERFACE\n\nselect an alternative setting to be used for particular interface of the current configuration.\n\n# wireshark\n\n## how to capture traffic\n\n* install windows into virtualbox\n* load usbmon on linux host\n* identify usbmon device\n* capture traffic on usbmon device\n* filter for `usb.bus_id == \u003cbusid\u003e and usb.device_address == \u003cdeviceaddr\u003e`\n* trigger events in windows vm to capture transfer protocol\n\n## traffic dump\n\n    GET DESCRIPTOR Request DEVICE\n      bmRequestType: 0x80\n      bRequest: GET DESCRIPTOR (6)\n      Descriptor Index: 0x00\n      bDescriptorType: 0x01\n      Language Id: no language specified (0x0000)\n      wLength: 18\n\n    GET DESCRIPTOR Response DEVICE\n      bLength: 18\n      DescriptorType: 0x01 (DEVICE)\n      bcdUSB: 0x0200\n      bDeviceClass: Miscellaneous (0xef)\n      bDeviceSubClass: 2\n      bDeviceProtocol: 1 (Interface Association Descriptor)\n      bMaxPacketSize0: 64\n      idVendor: 0x268b\n      idProduct: 0x0408\n      bcdDevice: 0x0100\n      iManufacturer: 2\n      iProduct: 3\n      iSerialNumber: 1\n      bNumConfigurations: 1\n\n    GET DESCRIPTOR Request Configuration\n      bmRequestType: 0x80\n      bRequest: GET DESCRIPTOR (6)\n      Descriptor Index: 0x00\n      bDescriptorType: 0x02\n      Language Id: no language specified (0x0000)\n      wLength: 9\n\n    GET DESCRIPTOR Response Configuration\n      bLength: 9\n      bDescriptorType: 0x02 (CONFIGURATION)\n      wTotalLength: 107\n      bNumInterfaces: 3\n      bConfigurationValue: 1\n      iConfiguration: 0\n      Configuration bmAttributes: 0x80 (NOT SELF-POWERED, NO REMOTE-WAKEUP)\n      bMaxPower: 250 (500mA)\n\n     GET DESCRIPTOR Request Configuration\n      bmRequestType: 0x80\n      bRequest: GET DESCRIPTOR (6)\n      Descriptor Index: 0x00\n      bDescriptorType: 0x02\n      Language Id: no language specified (0x0000)\n      wLength: 107\n\n    GET DESCRIPTOR Response Configuration\n      bLength: 9\n      bDescriptorType: 0x02 (CONFIGURATION)\n      wTotalLength: 107\n      bNumInterfaces: 3\n      bConfigurationValue: 1\n      iConfiguration: 0\n      Configuration bmAttributes: 0x08\n      bMaxPower: 250 (500mA)\n\n      INTERFACE DESCRIPTOR (0.0): class HID\n        bLength: 9\n        bDescriptorType: 0x04 (INTERFACE)\n        bInterfaceNumber: 0\n        bAlternateSetting: 0\n        bNumEndpoints: 2\n        bInterfaceClass: HID (0x03)\n        bInterfaceSubClass: No subclass (0x00)\n        bInterfaceProtocol: 0x00\n        iInterface: 0\n\n      HID DESCRIPTOR\n        bLength: 9\n        bDescriptorType: 0x21 (HID)\n        bcdHID: 0x0110\n        bContryCode: Not Supported (0x00)\n        bNumDescriptors: 1\n        bDescriptorType: HID Report (0x22)\n        wDescriptorLength: 31\n\n      ENDPOINT DESCRIPTOR\n        bLength: 7\n        bDescriptorType: 0x05 (ENDPOINT)\n        bEndpointAddress: 0x81 IN Endpoint:1\n        bmAttributes; 0x03\n        wMaxPacketSize: 64\n        bInterval: 1\n\n      ENDPOINT DESCRIPTOR\n        bLength: 7\n        bDescriptorType: 0x05 (ENDPOINT)\n        bEndpointAddress: 0x01 OUT ENDPOINT:1\n        bmAttributes 0x03\n        wMaxPacketSize: 64\n        bInterval: 1\n\n      INTERFACE ASSOCIATION DESCRIPTOR\n        bLength: 8\n        bDescriptorType: 0x0b (INTERFACE ASSOCIATION)\n        bFirstInterface: 1\n        bInterfaceCount: 2\n        bFunctionClass: Communications and CDC Control (0x02)\n        bFunctionSubClass: 0x02\n        bFunctionProtocol: 0x01\n        iFunction: 0\n\n      INTERFACE DESCRIPTOR (1.0): class Communications and CDC Control\n        bLength: 9\n        bDescriptorType: 0x04 (INTERFACE)\n        bInterfaceNumber: 1\n        bAlternateSetting: 0\n        bNumEndpoints: 1\n        bInterfaceClass: Communications and CDC Control (0x02)\n        bInterfaceSubClass: Abstract Control Model (0x02)\n        bInterfaceProtocol: AT Commands: V.250 etc (0x01)\n        iInterface: 0\n\n      COMMUNICATIONS DESCRIPTOR\n        bLength: 5\n        bDescriptorType: 0x24 (CS_INTERFACE)\n        Descriptor Subtype: Header Functional Descriptor (0x00)\n        CDC: 0x0110\n\n      COMMUNICATIONS DESCRIPTOR\n        bLength: 4\n        bDescriptorType: 0x24 (CS_INTERFACE)\n        Descriptor Subtype: Abstract Control Management Functional Descriptor (0x02)\n        bmCapabilities: 0x06\n\n      COMMUNICATIONS DESCRIPTOR\n        bLength: 5\n        bDescriptorType: 0x24 (CS_INTERFACE)\n        Descriptor Subtype: Call Management Functional Descriptor (0x01)\n        bmCapabilities: 0x00\n        Data Interface: 0x02\n\n      COMMUNICATIONS DESCRIPTOR\n        bLength: 5\n        bDescriptorType: 0x24 (CS_INTERFACE)\n        Descriptor Subtype: Union Functional Descriptor (0x06)\n        Control Interface: 0x01\n        Subordinate Interface: 0x02\n\n      ENDPOINT DESCRIPTOR\n        bLength: 7\n        bDescriptorType: 0x05 (ENDPOINT)\n        bEndpointAddress: 0x84 IN Endpoint:4\n        bmAttributes: 0x03\n        wMaxPacketSize: 64\n        bInterval: 1\n\n      INTERFACE DESCRIPTOR (2.0): class CDC-Data\n        bLength: 9\n        bDescriptorType: 0x04 (INTERFACE)\n        bInterfaceNumber: 2\n        bAlternateSetting: 0\n        bNumEndpoints: 2\n        bInterfaceClass: CDC-Data (0x0a)\n        bInterfaceSubClass: 0x00\n        bInterfaceProtocol: No class specific protocol required (0x00)\n        iInterface: 0\n\n      ENDPOINT DESCRIPTOR\n        bLength: 7\n        bDescriptorType: 0x05 (ENDPOINT)\n        bEndpointAddress: 0x82 IN Endpoint:2\n        bmAttributes: 0x02\n        wMaxPacketSize: 64\n        bInterval: 0\n\n      ENDPOINT DESCRIPTOR\n        bLength: 7\n        bDescriptorType: 0x05 (ENDPOINT)\n        bEndpointAddress: 0x02 OUT Endpoint:2\n        bmAttributes: 0x02\n        wMaxPacketSize: 64\n        bInterval: 0\n\n    SET CONFIGURATION Request\n      bmRequestType: 0x00\n      bRequest: SET CONFIGURATION (9)\n      bConfigurationValue: 1\n      wIndex: 0 (0x0000)\n      wLength: 0\n\n    GET DESCRIPTOR Request STRING\n      bmRequestType: 0x80\n      bRequest: GET DESCRIPTOR (6)\n      Descriptor Index: 0x03\n      bDescriptorType: 0x03\n      Language Id: English (United States) (0x0409)\n      wLength: 4\n\n    GET DESCRIPTOR Response STRING\n      bLength: 26\n      bDescriptorType: 0x03 (STRING)\n      bString: E\n\n    GET DESCRIPTOR Request STRING\n      bmRequestType: 0x80\n      bRequest: GET DESCRIPTOR (6)\n      Descriptor Index: 0x03\n      bDescriptorType: 0x03\n      Language Id: English (United States) (0x0409)\n      wLength: 26\n\n    GET DESCRIPTOR Response STRING\n      bLength: 26\n      bDescriptorType: 0x03 (STRING)\n      bString: Evolv DNA 75\n\n    SET_IDLE Request\n      bmRequestType: 0x21\n      bRequest: SET_IDLE (0x0a)\n      wValue: 0x0000\n      wIndex: 0\n      wLength: 0\n\n    GET DESCRIPTOR Request HID Report\n      bmRequestType: 0x81\n      bDescriptorIndex: 0x00\n      bDescriptorType: HID Report (0x22)\n      wInterfaceNumber: 0\n      wDescriptorLength: 95\n\n    GET DESCRIPTOR Response HID Report\n      HID Report\n        Global item (Usage)\n          Header\n            bSize: 2 bytes (2)\n            bType: Global (1)\n            bTag: Usage (0x0)\n          Usage page: [Vendor-defined] (0xff00)\n        Global item (Logical minimum)\n          Header\n            bSize: 1 byte (1)\n            bType: Global (1)\n            bTag: Logical minimum\n          Logical minimum: 0\n        Global item (Logical maximum)\n          Header\n            bSize: 2 bytes (2)\n            bType: Global (1)\n            bTag: Logical maximum (0x2)\n          Logical maximum: 255\n        Global item (Report size)\n          Header\n            bSize: 1 byte (1)\n            bType: Global (1)\n            bTag: Report size (0x7)\n          Report size: 8\n        Local item (Usage)\n          Header\n            bSize: 1 byte (1)\n            bType: Local (2)\n            bTag: Usage (0x0)\n          Usage: [Vendor-defined] (0xff01)\n        Main item (Collection)\n          Header\n            bSize: 1 byte (1)\n            bType: Main (0)\n            bTag: Collection (0xa)\n          Collection type: Application (0x01)\n          Global item (Report ID)\n            Header\n              bSize: 1 byte (1)\n              bType: Global (1)\n              bTag: Report ID (0x8)\n            Report ID: 0x01\n          Local item (Usage)\n            Header\n              bSize: 1 byte (1)\n              bType: Local (2)\n              bTag: Usage (0x0)\n            Usage: [Vendor-defined] (0xff01)\n          Global item (Report count)\n            Header\n              bSize: 1 byte (1)\n              bType: Global (1)\n              bTag: Report count (0x9)\n            Report count: 62\n          Main item (Input)\n            Header\n              bSize: 2 bytes (2)\n              bType: Main (0)\n              bTag: Input (0x8)\n              Data/constant: Data\n              Data type: Variable\n              Coordinates: Absolute\n              Min/max wraparound: No Wrap\n              Physical relationship to data: Linear\n              Preferred state: Preferred State\n              Has null position: No Null position\n              [Reserved]: False\n              Bits or bytes: Buffered Bytes\n          Local item (Usage)\n            Header\n              bSize: 1 byte (1)\n              bType: Local (2)\n              bTag: Usage (0x0)\n            Usage: [Vendor-defined] (0xff01)\n          Global item (Report count)\n            Header\n              bSize: 1 byte (1)\n              bType: Global (1)\n              bTag: Report count (0x9)\n            Report count: 62\n          Main item (output)\n            Header\n              bSize: 2 bytes (2)\n              bType: Main (0)\n              bTag: Output (0x9)\n              Data/constant: Data\n              Data type: Variable\n              Coordinates: Absolute\n              Min/max wraparound: No Wrap\n              Physical relationship to data: Linear\n              Preferred state: Preferred State\n              Has null position: No Null position\n              (Non)-volatile: Non Volatile\n              Bits or bytes: Buffered Bytes\n          Main item (End collection)\n            Header\n              bSize: 0 bytes (0)\n              bType: Main (0)\n              bTag: End collection (0xc)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesno%2Fhelix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesno%2Fhelix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesno%2Fhelix/lists"}