{"id":300969,"date":"2020-03-30T15:00:26","date_gmt":"2020-03-30T15:00:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=300969"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=300969","title":{"rendered":"\u0420\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0435\u043d\u0438\u0440\u0438\u043d\u0433 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e USB \u0418\u041a \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/494800\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sg\/j9\/ah\/sgj9ahqc4l8hihq4jzjz_uap1ia.png\"><br \/>  \u041f\u043e\u043f\u0430\u043b\u0441\u044f \u043c\u043d\u0435 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 MicroUSB \u0418\u041a \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440, \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043a \u043a\u043e\u043c\u043f\u0443 \u0441 Windows. \u0422\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0441\u044c\u043c\u0430 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0434\u0435\u0432\u0430\u0439\u0441 \u0441 \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u043c Micro USB. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u00ab\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439\u00bb \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c \u2014 \u0447\u0435\u0440\u0435\u0437 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c ZaZaRemote.<\/p>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a \u043a\u043e\u043c\u043f\u0443 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0434\u0435\u0432\u0430\u0439\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u043a\u0430\u043a HID-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e USB\\VID_10C4&amp;PID_8468. \u0413\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 ID \u043d\u0435 \u0434\u0430\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0435\u0432\u0435\u0440\u0441\u0438\u043d\u0433\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 HID<\/h2>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0441\u044f \u043a\u0430\u043a USB\\Class_03&amp;SubClass_FF&amp;Prot_FF. Class_03 \u2014 HID \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, SubClass_FF \u2014 vendor specific. \u0421\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u044b\u043b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u0440\u0430\u0439\u0432\u0435\u0440 hidusb.sys. \u0421 \u044d\u0442\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/drivers\/ddi\/hidsdi\/\" rel=\"nofollow\">HID API<\/a>.<\/p>\n<p>  \u041d\u0430\u0431\u0440\u043e\u0441\u0430\u0432 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443, \u044f \u0441\u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u0443 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443:<\/p>\n<pre><code class=\"plaintext\">HidD_GetManufacturerString: &quot;Tiqiaa&quot; HidD_GetProductString: &quot;Tview&quot;  HidP_GetCaps:   Usage 1   UsagePage ff00   InputReportByteLength 61   OutputReportByteLength 61   FeatureReportByteLength 0   NumberLinkCollectionNodes 1   NumberInputButtonCaps 0   NumberInputValueCaps 2   NumberInputDataIndices 2   NumberOutputButtonCaps 0   NumberOutputValueCaps 2   NumberOutputDataIndices 2   NumberFeatureButtonCaps 0   NumberFeatureValueCaps 0   NumberFeatureDataIndices 0 <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u043e\u0431\u043c\u0435\u043d \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043f\u043e 61 \u0431\u0430\u0439\u0442\u0443 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c, \u0438\u043c\u0435\u0435\u0442\u0441\u044f 2 InputValue \u0438 2 OutputValue \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u043d\u0438\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f HidP_GetValueCaps:<\/p>\n<pre><code class=\"plaintext\">HidP_GetValueCaps(HidP_Input):     UsagePage ff00     ReportID fe     LinkUsage 1     LinkUsagePage ff00     BitSize 8     ReportCount 8      UsagePage ff00     ReportID 1     LinkUsage 1     LinkUsagePage ff00     BitSize 8     ReportCount 60  HidP_GetValueCaps(HidP_Output):     UsagePage ff00     ReportID fd     LinkUsage 1     LinkUsagePage ff00     BitSize 8     ReportCount 8      UsagePage ff00     ReportID 2     LinkUsage 1     LinkUsagePage ff00     BitSize 8     ReportCount 60 <\/code><\/pre>\n<p>  \u0418\u0437 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f ReportID \u2014 ID report-\u0430 (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u0430\u043a\u0435\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445) \u0438 ReportCount \u2014 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440. \u0414\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 HidD_SetOutputReport \u0438 HidD_GetInputReport \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 ReportID \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430. \u041f\u043e\u0441\u043d\u0438\u0444\u0430\u0432 \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u043e USB \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/desowin.org\/usbpcap\/&quot;\" rel=\"nofollow\">USBPcap<\/a>, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 HID.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cw\/ac\/pq\/cwacpqavoj65lspzo1ukb2omu0m.png\"><br \/>  <i>SET_REPORT Request \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430<\/i><\/p>\n<h2>\u0420\u0435\u0432\u0435\u0440\u0441\u0438\u043d\u0433 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f ZaZaRemote<\/h2>\n<p>  \u0412 APK \u0444\u0430\u0439\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 libtiqiaa_dev_usb.so. \u041e\u043d\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">Java_com_icontrol_dev_TiqiaaUsbController_usbOpen Java_com_icontrol_dev_TiqiaaUsbController_usbClose Java_com_icontrol_dev_TiqiaaUsbController_usbSendCmd Java_com_icontrol_dev_TiqiaaUsbController_usbSendIR Java_com_icontrol_dev_TiqiaaUsbController_d<\/code><\/pre>\n<p>  \u0421\u0443\u0434\u044f \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e, \u043e\u043d\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043e\u0431\u043c\u0435\u043d \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c. \u0412 \u0438\u0445 \u043a\u043e\u0434\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<pre><code class=\"cpp\">LDR     R3, [R0] LDR     R3, [R3,#0x18] BLX     R3<\/code><\/pre>\n<p>  \u0420\u0435\u0433\u0438\u0441\u0442\u0440 R0 \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 Java \u043a\u043e\u0434\u0430 classes.dex. \u0414\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0445 \u0442\u0438\u043f:<\/p>\n<pre><code class=\"java\">private native boolean usbOpen(Context context); private native void usbClose(); private native boolean usbSendCmd(UsbDeviceConnection usbdeviceconnection, UsbEndpoint usbendpoint, int j, int k); private native boolean usbSendIR(Context context, UsbDeviceConnection usbdeviceconnection, UsbEndpoint usbendpoint, int j, byte abyte0[], int k); private native IControlIRData d(byte abyte0[]);<\/code><\/pre>\n<p>  Java \u043a\u043e\u0434 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432\u0441\u0435 \u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u043c\u0435\u043d\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c Java \u043a\u043e\u0434\u0435 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u044b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435.<\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0438\u0432 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Java \u043a\u043e\u0434, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code class=\"java\">com.tiqiaa.icontrol.e.i.a(&quot;DeviceHolder&quot;, (new StringBuilder(&quot;send......cmdType=&quot;)).append(i1).append(&quot;,cmdId=&quot;).append(j1).toString()); boolean flag1 = a.b(i1, j1);  com.tiqiaa.icontrol.e.i.d(&quot;DeviceHolder&quot;, (new StringBuilder(&quot;send....................freq=&quot;)).append(i1).append(&quot;,cmdId=&quot;).append(j1).append(&quot;,buffer.length=&quot;).append(abyte0.length).append(&quot; , device = &quot;).append(a).toString()); boolean flag1 = a.a(i1, abyte0, j1);<\/code><\/pre>\n<p>  \u0414\u0435\u0431\u0430\u0433 \u043b\u043e\u0433\u0438 \u2014 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0434\u0440\u0443\u0433 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438\u0437 Java \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_Native_Interface\" rel=\"nofollow\">Java Native Interface<\/a>. \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432\u0438\u0434:<\/p>\n<pre><code class=\"cpp\">extern &quot;C&quot; JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj, &lt;java arguments&gt;)<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u0438\u043f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 IDA:<\/p>\n<pre><code class=\"cpp\">bool __cdecl Java_com_icontrol_dev_TiqiaaUsbController_usbOpen(JNIEnv *env, jobject obj, struct Context *context); void __cdecl Java_com_icontrol_dev_TiqiaaUsbController_usbClose(JNIEnv *env, jobject obj); bool __cdecl Java_com_icontrol_dev_TiqiaaUsbController_usbSendCmd(JNIEnv *env, jobject obj, struct UsbDeviceConnection *usbdeviceconnection, struct UsbEndpoint *usbendpoint, int cmdType, int cmdId); bool __cdecl Java_com_icontrol_dev_TiqiaaUsbController_usbSendIR(JNIEnv *env, jobject obj, struct Context *context, struct UsbDeviceConnection *usbdeviceconnection, struct UsbEndpoint *usbendpoint, int freq, jbyte buffer, int cmdId); struct IControlIRData *__cdecl Java_com_icontrol_dev_TiqiaaUsbController_d(JNIEnv *env, jobject obj, jbyteArray buffer);<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 HexRays \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432\u044b JNI \u0438 \u043a\u043e\u0434 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0432\u044b\u0437\u043e\u0432 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">v5 = ((int (*)(void))(*env)-&gt;FindClass)();<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 usbSendCmd<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">bool __cdecl Java_com_icontrol_dev_TiqiaaUsbController_usbSendCmd(JNIEnv *env, jobject obj, struct UsbDeviceConnection *usbdeviceconnection, struct UsbEndpoint *usbendpoint, int cmdType, int cmdId) {   char v6; \/\/ r5@5   bool result; \/\/ r0@12   char data[24]; \/\/ [sp+8h] [bp-18h]@12    dword_B57C = 0;   if ( UsbEndpoint_bulkTransfer )   {     if ( usbdeviceconnection )     {       if ( usbendpoint )       {         switch ( cmdType )         {           case 0:             v6 = 'L';             goto LABEL_12;           case 2:             v6 = 'R';             goto LABEL_12;           case 3:             v6 = 'H';             goto LABEL_12;           case 4:             v6 = 'O';             goto LABEL_12;           case 6:             v6 = 'C';             goto LABEL_12;           case 7:             v6 = 'V';             goto LABEL_12;           case 1:             v6 = 'S'; LABEL_12:             data[0] = 'S';             data[1] = 'T';             data[3] = v6;             data[2] = cmdId;             data[4] = 'E';             data[5] = 'N';             result = sub_3528(env, usbdeviceconnection, usbendpoint, data, 6);             break;           default:             result = 0;             break;         }       }       else       {         result = 0;       }     }     else     {       result = 0;     }   }   else   {     result = UsbEndpoint_bulkTransfer;   }   return result; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u043e\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0439, \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d: \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u00abST\u00bb, \u0434\u0430\u043b\u0435\u0435 \u0438\u0434\u0435\u0442 \u0431\u0430\u0439\u0442 \u0442\u0438\u043f\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 {&#8216;L&#8217;, &#8216;R&#8217;, &#8216;H&#8217;, &#8216;O&#8217;, &#8216;C&#8217;, &#8216;V&#8217;, &#8216;S&#8217;}, \u0434\u0430\u043b\u0435\u0435 \u0431\u0430\u0439\u0442 cmdId (\u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u0435) \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u00abEN\u00bb. \u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 sub_3528.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 sub_3528<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">int __cdecl sub_3528(JNIEnv *env, struct UsbDeviceConnection *usbdeviceconnection, struct UsbEndpoint *usbendpoint, void *data, int size) {   JNIEnv v5; \/\/ r1@1   JNIEnv *v6; \/\/ r4@1   int result; \/\/ r0@2   int v8; \/\/ r2@3   int tsize; \/\/ r7@5   size_t fragmSize; \/\/ r5@9   int v11; \/\/ r0@11   JNIEnv v12; \/\/ r3@11   int v13; \/\/ r6@11   int rdOffs; \/\/ [sp+10h] [bp-80h]@7   int v15; \/\/ [sp+14h] [bp-7Ch]@15   int jbyteArray; \/\/ [sp+18h] [bp-78h]@1   int fragmCnt; \/\/ [sp+1Ch] [bp-74h]@7   char *_data; \/\/ [sp+28h] [bp-68h]@1   char buf[64]; \/\/ [sp+34h] [bp-5Ch]@7   int _stack_chk_guard; \/\/ [sp+74h] [bp-1Ch]@1    _data = (char *)data;   v5 = *env;   v6 = env;   _stack_chk_guard = ::_stack_chk_guard;   jbyteArray = ((int (*)(void))v5-&gt;NewByteArray)();   if ( jbyteArray )   {     v8 = UsbPackCounter + 1;     if ( UsbPackCounter + 1 &gt; 15 )       v8 = 1;     tsize = size;     UsbPackCounter = v8;     if ( size &gt; 1024 )       tsize = 1024;     j_j_memset(buf, 0, 0x40u);     buf[0] = 2;     buf[3] = (tsize \/ 56 &amp; 0x7F)            + ((((tsize + -56 * (tsize \/ 56 &amp; 0x7F)) &gt;&gt; 31) - (tsize + -56 * (tsize \/ 56 &amp; 0x7Fu))) &gt;&gt; 31);     rdOffs = 0;     fragmCnt = 0;     buf[2] = UsbPackCounter;     while ( 1 )     {       if ( rdOffs &gt;= tsize )         goto LABEL_25;       fragmCnt = (fragmCnt + 1) &amp; 0xFF;       fragmSize = tsize - rdOffs;       if ( tsize - rdOffs &gt; 56 )         fragmSize = 56;       buf[1] = fragmSize + 3;       buf[4] = fragmCnt;       j_j_memcpy(&amp;buf[5], &amp;_data[rdOffs], fragmSize);       ((void (__fastcall *)(JNIEnv *, int, _DWORD, signed int))(*v6)-&gt;SetByteArrayRegion)(v6, jbyteArray, 0, 61);       v11 = ((int (__fastcall *)(JNIEnv *))(*v6)-&gt;ExceptionCheck)(v6);       v12 = *v6;       v13 = v11;       if ( v11 )       {         ((void (__fastcall *)(JNIEnv *))v12-&gt;ExceptionClear)(v6);         v13 = 0;         goto return_r6_del;       }       if ( !dword_B2A4 )       { LABEL_25:         v13 = 1;         goto return_r6_del;       }       v15 = ((int (__fastcall *)(JNIEnv *))v12-&gt;CallIntMethod)(v6);       if ( ((int (__fastcall *)(JNIEnv *))(*v6)-&gt;ExceptionCheck)(v6) )       {         ((void (__fastcall *)(JNIEnv *))(*v6)-&gt;ExceptionClear)(v6);         goto return_r6_del;       }       if ( v15 &lt; 0 )         break;       rdOffs += fragmSize;     }     v13 = 0; return_r6_del:     ((void (__fastcall *)(JNIEnv *, int))(*v6)-&gt;DeleteLocalRef)(v6, jbyteArray);     result = v13;   }   else   {     ((void (__fastcall *)(JNIEnv *))(*v6)-&gt;ExceptionClear)(v6);     result = 0;   }   if ( _stack_chk_guard != ::_stack_chk_guard )     j_j___stack_chk_fail(result);   return result; }<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f 1024 \u0431\u0430\u0439\u0442\u0430\u043c\u0438. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 5 \u0431\u0430\u0439\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 56 \u0431\u0430\u0439\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0432 \u0441\u0443\u043c\u043c\u0435 61 \u0431\u0430\u0439\u0442. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430:<\/p>\n<ul>\n<li>buf[0] = 2 \u2014 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 ReportID 2? \u041f\u043e\u0445\u043e\u0436\u0435 \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u043d\u043e \u0438 \u0435\u0441\u0442\u044c. \u0410 ReportCount 60 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0442\u043e\u0436\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442.<\/li>\n<li>buf[1] = fragmSize + 3 \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 + 3, \u0442.\u0435. \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0431\u0430\u0439\u0442\u0430, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/li>\n<li>buf[2] = UsbPackCounter \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a, 1..15.<\/li>\n<li>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 buf[3], \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u043e\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a:\n<pre><code class=\"cpp\">buf[3] = tsize \/ 56; if (tsize % 56) buf[3]++;<\/code><\/pre>\n<\/li>\n<li>buf[4] = fragmCnt \u2014 \u043d\u043e\u043c\u0435\u0440 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430, 1..buf[3].<\/li>\n<\/ul>\n<p>  \u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 CallIntMethod. \u041e\u043d \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0438\u043f:<\/p>\n<pre><code class=\"cpp\">jint (JNICALL *CallIntMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);<\/code><\/pre>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e HexRays \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u2014 \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0442\u043e\u043b\u044c\u043a\u043e v6 = JNIEnv *env. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u0441\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435:<\/p>\n<pre><code class=\"cpp\">LDR     R2, [R2,#(dword_B2A4 - 0xB284)] ; jmethodID methodID<\/code><\/pre>\n<p>  methodID \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 dword_B2A4. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d \u0432\u0437\u044f\u043b\u0441\u044f:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dk\/gp\/wb\/dkgpwbmctilwd0m-woibazyihku.png\"><\/p>\n<p>  \u0417\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 usbOpen \u0438 usbClose. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 usbOpen. <\/p>\n<p>  \u041d\u0443\u0436\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442:<\/p>\n<pre><code class=\"cpp\">v27 = ((int (__fastcall *)(JNIEnv *, int, const char *, const char *))(*v4)-&gt;GetMethodID)(         v4,         v26,         &quot;bulkTransfer&quot;,         &quot;(Landroid\/hardware\/usb\/UsbEndpoint;[BII)I&quot;); dword_B2A4 = v27;<\/code><\/pre>\n<p>  \u0418\u0442\u0430\u043a, \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 UsbEndpoint::bulkTransfer. \u0418 \u043d\u0438\u0447\u0435\u0433\u043e \u2014 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441 HID!<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0418\u041a \u043a\u043e\u0434\u044b \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f usbSendIR.<\/p>\n<p>  \u041e\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0443\u0447\u0430\u0441\u0442\u043e\u043a, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u0435\u043d.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 usbSendIR<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">  buf[0] = 'S';   buf[1] = 'T';   buf[2] = cmdId;   buf[3] = 'D';   if ( freq &gt; 255 )   {     LOBYTE(v36) = 0;     v37 = -1;     v38 = 0;     while ( 1 )     {       v39 = (freq - IrFreqTable[v38] + ((freq - IrFreqTable[v38]) &gt;&gt; 31)) ^ ((freq - IrFreqTable[v38]) &gt;&gt; 31);       if ( v37 != -1 &amp;&amp; v39 &gt;= v37 )       {         v39 = v37;       }       else       {         LOBYTE(v36) = v38;         if ( !v39 )           break;       }       if ( ++v38 == 30 )         break;       v37 = v39;     }   }   else   {     v36 = (unsigned int)(freq - 1) &lt;= 0x1C ? freq : 0;   }   buf[4] = v36;   v40 = &amp;buf[v22];   v40[5] = 'E';   v40[6] = 'N';<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0441 \u00abST\u00bb, \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0442 cmdId \u0438 \u043a\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b &#8216;D&#8217;, \u0434\u0430\u043b\u0435\u0435 \u0431\u0430\u0439\u0442, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u2014 \u0435\u0441\u043b\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 freq &gt; 255 \u2014 \u043e\u043d \u0438\u0449\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0430\u0441\u0442\u043e\u0442 IrFreqTable, \u0438\u043d\u0430\u0447\u0435 \u2014 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0430 \u00abEN\u00bb.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u00abd\u00bb \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h2>\u0421\u043c\u0435\u043d\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 bulkTransfer<\/h2>\n<p>  \u0418\u0437\u0443\u0447\u0438\u0432 HID API \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u043e\u043d\u043e \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c bulkTransfer \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/winusb\/\" rel=\"nofollow\">WinUsb<\/a>.<br \/>  \u041d\u0430\u043f\u0438\u0441\u0430\u0432 inf \u0444\u0430\u0439\u043b, \u044f \u0441\u043c\u0435\u043d\u0438\u043b \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430 WinUsb \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0412\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0438 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043e\u0442 \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u2014 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 (\u0447\u0435\u0440\u0435\u0437 WinUsb_WritePipe) \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u0432\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430.<\/p>\n<h2>\u0414\u0430\u043c\u043f \u043e\u0431\u043c\u0435\u043d\u0430 \u0441 ZaZaRemote<\/h2>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0443\u0441\u043f\u0435\u0445\u0438, \u044f \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u2014 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u0432\u0430\u0439\u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0418\u041a \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0430\u043c\u043f\u0438\u0442\u044c USB \u0442\u0440\u0430\u0444\u0438\u043a. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f? \u0412\u0445\u043e\u0434 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 Android-x86 \u043d\u0430 VirtualBox-e. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e x86 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 ARM, \u043e\u043d \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 ARM \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c NativeBridge. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u041f\u041e \u044f \u0441\u043c\u043e\u0433 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 VirtualBox.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u0434\u043e\u0432\u0435\u0440\u0438\u0435 \u043a \u044d\u0442\u043e\u0439 \u0441\u043e\u0444\u0442\u0438\u043d\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ak\/1x\/wu\/ak1xwuiqoi9angwmxu7mgj5zy7k.png\">  <\/div>\n<\/div>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u043f\u0440\u043e\u0431\u0440\u043e\u0441 USB \u044f \u0441\u043c\u043e\u0433 \u0437\u0430\u0441\u043d\u0438\u0444\u0430\u0442\u044c USB \u0442\u0440\u0430\u0444\u0438\u043a. \u0422\u0430\u043a \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0435\u043c\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0418\u041a \u043a\u043e\u043c\u0430\u043d\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u0446\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0418\u041a \u043f\u043e\u0441\u044b\u043b\u043e\u043a.<\/p>\n<p>  \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u0434\u0435\u0432\u0430\u0439\u0441 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u043e \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0418\u041a \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0442\u0430\u043a \u0441\u0435\u0431\u0435 \u2014 \u0441 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f 10 \u0441\u043c, \u0438 \u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><code>- \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430:<\/p>\n<p>  OUT:<br \/>  0040 02 09 01 01 01 53 54 12 56 45 4e .....ST.VEN<\/p>\n<p>  IN:<br \/>  0040 01 30 07 01 01 53 54 12 56 30 01 30 30 30 30 30 .0...ST.V0.00000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  OUT:<br \/>  0040 02 09 02 01 01 53 54 13 53 45 4e .....ST.SEN<\/p>\n<p>  IN:<br \/>  0040 01 0a 08 01 01 53 54 13 53 09 45 4e 30 30 30 30 .....ST.S.EN0000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  OUT:<br \/>  0040 02 3b 03 02 01 53 54 14 44 00 ff ff ff ff b7 7f .;...ST.D.......<br \/>  0050 7f 1b a3 23 a3 23 a3 69 a3 23 a3 23 a3 23 a3 23 ...#.#.i.#.#.#.#<br \/>  0060 a3 23 a3 69 a3 69 a3 23 a3 69 a3 69 a3 69 a3 69 .#.i.i.#.i.i.i.i<br \/>  0070 a3 69 a3 69 a3 23 a3 23 a3 23 a3 69 a3 .i.i.#.#.#.i.<\/p>\n<p>  OUT:<br \/>  0040 02 2f 03 02 02 23 a3 23 a3 23 a3 23 a3 69 a3 69 .\/...#.#.#.#.i.i<br \/>  0050 a3 69 a3 23 a3 69 a3 69 a3 69 a3 7f 7f 7f 7f 7f .i.#.i.i.i......<br \/>  0060 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 57 45 ..............WE<br \/>  0070 4e N<\/p>\n<p>  IN:<br \/>  0040 01 0a 09 01 01 53 54 14 4f 09 45 4e 30 30 30 30 .....ST.O.EN0000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  - \u041f\u0440\u0438\u0435\u043c:<\/p>\n<p>  OUT:<br \/>  0040 02 09 01 01 01 53 54 17 56 45 4e .....ST.VEN<\/p>\n<p>  IN:<br \/>  0040 01 30 0c 01 01 53 54 17 56 30 01 30 30 30 30 30 .0...ST.V0.00000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  OUT:<br \/>  0040 02 09 02 01 01 53 54 18 53 45 4e .....ST.SEN<\/p>\n<p>  0040 01 0a 0d 01 01 53 54 18 53 09 45 4e 30 30 30 30 .....ST.S.EN0000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  OUT:<br \/>  0040 02 09 03 01 01 53 54 19 52 45 4e .....ST.REN<\/p>\n<p>  0040 01 0a 0e 01 01 53 54 19 52 13 45 4e 30 30 30 30 .....ST.R.EN0000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  OUT:<br \/>  0040 02 09 04 01 01 53 54 1a 43 45 4e .....ST.CEN<\/p>\n<p>  IN:<br \/>  0040 01 0a 0f 01 01 53 54 1a 43 13 45 4e 30 30 30 30 .....ST.C.EN0000<br \/>  0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00<br \/>  0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.<br \/>  0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.............<\/p>\n<p>  OUT:<br \/>  0040 02 09 05 01 01 53 54 1b 4f 45 4e .....ST.OEN<\/p>\n<p>  IN:<br \/>  0040 01 3b 01 0e 01 53 54 00 44 ff ff ff ff ba 7f 7f .;...ST.D.......<br \/>  0050 19 a4 21 a4 21 a4 68 a4 22 a4 21 a4 22 a4 22 a4 ..!.!.h.&quot;.!.&quot;.&quot;.<br \/>  0060 22 a4 68 a4 68 a4 21 a4 68 a4 68 a4 68 a4 68 a4 &quot;.h.h.!.h.h.h.h.<br \/>  0070 68 a4 68 a4 22 a4 22 a4 22 a4 68 a4 22 fb ff h.h.&quot;.&quot;.&quot;.h.&quot;..<br \/>  .....<br \/>  0040 01 2f 01 0e 0e 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f .\/..............<br \/>  0050 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f ................<br \/>  0060 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 3e 13 45 .............&gt;.E<br \/>  0070 4e 82 02 82 02 82 7f 7f 7f 7f 7f 7f 7f fb ff N..............<br \/>  <\/code><\/div>\n<\/div>\n<p>  \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443 \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u2014 \u043f\u043e\u043c\u0438\u043c\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u044b\u043f\u043b\u0435\u0442\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u043c\u0443\u0441\u043e\u0440 \u2014 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u043e\u0441\u044b\u043b\u043a\u0438.<\/p>\n<p>  \u0418\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043c\u043f\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<ul>\n<li>&#8216;V&#8217; \u2014 Version \u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0435\u0440\u0441\u0438\u0438 \u2014 \u043c\u043e\u0439 \u0434\u0435\u0432\u0430\u0439\u0441 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 GUID;<\/li>\n<li>&#8216;L&#8217; \u2014 IdleMode \u2014 \u0440\u0435\u0436\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u2014 \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u0435\u0432\u0430\u0439\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435;<\/li>\n<li>&#8216;S&#8217; \u2014 SendMode \u2014 \u0440\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0441\u044b\u043b\u043a\u0438 \u0418\u041a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432;<\/li>\n<li>&#8216;R&#8217; \u2014 RecvMode \u2014 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0435\u043c\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430 \u0418\u041a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432;<\/li>\n<li>&#8216;D&#8217; \u2014 Data \u2014 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0418\u041a \u043f\u043e\u0441\u044b\u043b\u043a\u0438;<\/li>\n<li>&#8216;O&#8217; \u2014 Output \u2014 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u2014 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0437\u0430\u0445\u0432\u0430\u0442\/\u0432\u044b\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445;<\/li>\n<li>&#8216;C&#8217; \u2014 Cancel \u2014 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u2014 \u043e\u0442\u043c\u0435\u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u0430, \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e &#8216;O&#8217;;<\/li>\n<li>&#8216;H&#8217; \u2014 Unknown \u2014 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0418\u041a \u043f\u043e\u0441\u044b\u043b\u043e\u043a<\/h2>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u0434\u0430\u043c\u043f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u0418\u041a \u043f\u043e\u0441\u044b\u043b\u043e\u043a \u044f \u0441\u043c\u043e\u0433 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u043c \u2014 \u043f\u0440\u0438\u0435\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0418\u041a \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0418\u041a \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u0418\u041a \u0444\u043e\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u043a \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u0443 \u0438 \u0441\u0442\u0430\u043b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u041f\u0443\u0442\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0438\u043b\u0438 \u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a, \u0430 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 7 \u0431\u0438\u0442 \u2014 \u0432\u0440\u0435\u043c\u044f. \u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0432\u043d\u0430 16 \u043c\u043a\u0441\u0435\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 8A \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043d\u0430 160 \u043c\u043a\u0441\u0435\u043a; 8A 05 FF 83 \u2014 160 \u043c\u043a\u0441\u0435\u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u043f\u0430\u0443\u0437\u0430 80 \u043c\u043a\u0441\u0435\u043a, 20.8 \u043c\u0441\u0435\u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043f\u0443\u043b\u044c\u0441\u0438\u0440\u0443\u0435\u0442 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 ~36.64 \u043a\u0413\u0446. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c freq \u043a\u043e\u043c\u0430\u043d\u0434\u044b usbSendIR, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0447\u0442\u043e \u0434\u0435\u0432\u0430\u0439\u0441 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u043c\u0435\u044e\u0449\u0430\u044f\u0441\u044f \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u0442\u043e\u0432\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u0430.<br \/>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u0435\u043c\u0430, \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c.<\/p>\n<h2>\u041a\u043b\u0430\u0441\u0441 TiqiaaUsbIr \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 IR Control<\/h2>\n<p>  \u042f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u043e\u043c \u0432 \u0432\u0438\u0434\u0435 C++ \u043a\u043b\u0430\u0441\u0441\u0430 TiqiaaUsbIr \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 CaptureIR \u043d\u0430 QT. \u041f\u043e\u043c\u0438\u043c\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0440\u0438\u0435\u043c\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0418\u041a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 NEC. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043f\u0443\u043b\u044c\u0442\u0430\u0445 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 LG. \u0422\u0430\u043a\u0436\u0435 \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0418\u041a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 LIRC. \u0411\u044b\u043b\u0430 \u0438\u0434\u0435\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f WinLirc, \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043a\u0440\u0438\u0432\u043e\u0432\u0430\u0442\u043e\u0435 \u0438 \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 API, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u0443 \u0438\u0434\u0435\u044e \u044f \u043f\u043e\u043a\u0430 \u043e\u0442\u043b\u043e\u0436\u0438\u043b.<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/gitlab.com\/XenRE\/tiqiaa-usb-ir\" rel=\"nofollow\">\u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0442\u0443\u0442<\/a>.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 TiqiaaUsbIr:<\/p>\n<pre><code class=\"cpp\">std::vector&lt;std::string&gt; IrDev; TiqiaaUsbIr::EnumDevices(IrDev); \/\/\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 TiqiaaUsbIr Ir; Ir.Open(IrDev[0].c_str()); \/\/\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Ir.SendNecSignal(0x0408); \/\/\u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0418\u041a \u043a\u043e\u0434 (LG POWER) Ir.Close();<\/code><\/pre>\n<p>  \u0417\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ld\/fa\/gt\/ldfagtymdt142tfc7fitphxzglw.png\"><\/p>\n<p>  \u041e\u043d \u0436\u0435, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jv\/nd\/-d\/jvnd-d2x8nt7dcxbrh0zeoqeddi.png\"><\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/av\/j3\/d4\/avj3d4axzb4yovsz4phw1qsnrto.png\"><\/p>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u044b\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d USB \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0418\u041a \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u0430 Tiqiaa Tview, \u043d\u0430\u043f\u0438\u0441\u0430\u043d inf \u0444\u0430\u0439\u043b \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0438 \u041f\u041e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0418\u041a \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440 \u2014 \u0432\u0435\u0441\u044c\u043c\u0430 \u0434\u0435\u0448\u0435\u0432\u044b\u0439, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 (5$ \u043d\u0430 \u0410\u043b\u0438, \u0433\u0430\u0431\u0430\u0440\u0438\u0442\u044b 15 x 10 x 5 \u043c\u043c) \u0434\u0435\u0432\u0430\u0439\u0441 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u044b\u0442\u043e\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u043e\u0439 \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0435 \u0418\u041a \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c, \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u0432\u044b\u0437\u0432\u0430\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u0435\u0440\u0435\u0434\u043b\u0438\u0432\u044b\u043c\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>  \u0420\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0435\u043c\u0430, \u0432 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043c\u0438\u0437\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0434\u0438\u0443\u0441\u0430 \u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0445\u0432\u0430\u0442\u0430, \u043d\u0435\u043f\u0440\u0438\u0433\u043e\u0434\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0418\u041a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u2014 \u0440\u0435\u043a\u043e\u0440\u0434 \u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0430 ~30 \u0441\u043c, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0443\u043b\u044c\u0442 \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u0442\u043e\u0447\u043d\u043e \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a, \u0438 \u0434\u0430\u0436\u0435 \u0432 \u0443\u043f\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043e\u043d \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0418\u041a \u043f\u0443\u043b\u044c\u0442\u043e\u0432.<\/p>\n<h2>\u0411\u043e\u043d\u0443\u0441<\/h2>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 IR \u043a\u043e\u0434\u044b \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 LG:<\/p>\n<p>  <code>POWER 0408<br \/>  POWERON 04C4<br \/>  POWEROFF 04C5<br \/>  IN_STOP 04FA<br \/>  IN_START 04FB<br \/>  POWERONLY 04FE<br \/>  EZ_ADJUST 04FF<\/code><\/p>\n<p>  P.S. \u0418\u0449\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u043e LG AccessUSB, <a href=\"http:\/\/webos-forums.ru\/topic5964.html\" rel=\"nofollow\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0442\u0443\u0442<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/494800\/\"> https:\/\/habr.com\/ru\/post\/494800\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/494800\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sg\/j9\/ah\/sgj9ahqc4l8hihq4jzjz_uap1ia.png\"><br \/>  \u041f\u043e\u043f\u0430\u043b\u0441\u044f \u043c\u043d\u0435 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 MicroUSB \u0418\u041a \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440, \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043a \u043a\u043e\u043c\u043f\u0443 \u0441 Windows. \u0422\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0441\u044c\u043c\u0430 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0434\u0435\u0432\u0430\u0439\u0441 \u0441 \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u043c Micro USB. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u00ab\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439\u00bb \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c \u2014 \u0447\u0435\u0440\u0435\u0437 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c ZaZaRemote.<\/p>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a \u043a\u043e\u043c\u043f\u0443 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0434\u0435\u0432\u0430\u0439\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u043a\u0430\u043a HID-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e USB\\VID_10C4&amp;PID_8468. \u0413\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 ID \u043d\u0435 \u0434\u0430\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0435\u0432\u0435\u0440\u0441\u0438\u043d\u0433\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-300969","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=300969"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300969\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=300969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=300969"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=300969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}