Конвертировать MAC-адрес Wiimote в PIN-код из C ++ в Python или Javascript - PullRequest
0 голосов
/ 16 сентября 2018

В нашли здесь следующий фрагмент: http://wiibrew.org/wiki/Wiimote#Bluetooth_Pairing

Здесь также есть другой фрагмент кода для преобразования адреса в пин-код: https://www.richlynch.com/2009/11/18/permanently-pair-wiimotewii-balance-board/

То, что он пытается сделать, - это преобразовать mac-адрес nintendo wiimote в пин-код, который запрашивается во время сопряжения Bluetooth.

Я предполагаю, что это C или C ++, но ничего не знаю о C / C ++, но я знаю javascript и python.

Я хотел бы преобразовать этот код в javascript или python, чтобы я мог сгенерировать действительный номер STRING , который можно вводить при запросе во время сопряжения Bluetooth, или даже сделать это вручную, как только я пойму, что именно это код делает.

Это оригинальный фрагмент:

Lets assume the Wiimote has the bluetooth address "00:1E:35:3B:7E:6D". If you want the PIN for bluetooth pairing in a simple string, do the following:

char pin[6];
pin[0] = 0x6D;
pin[1] = 0x7E;
pin[2] = 0x3B;
pin[3] = 0x35;
pin[4] = 0x1E;
pin[5] = 0x00;

Now "pin" contains your bluetooth pin that should be used for pairing your devices.

Еще один фрагмент с использованием функции:

_TCHAR * FormatBTAddress(BLUETOOTH_ADDRESS address)
{
   static _TCHAR ret[20];
   _stprintf(ret, _T("%02x:%02x:%02x:%02x:%02x:%02x"),
      address.rgBytes[5],
      address.rgBytes[4],
      address.rgBytes[3],
      address.rgBytes[2],
      address.rgBytes[1],
      address.rgBytes[0]
      );
   return ret;
}

Теперь, хотя я ничего не знаю о C ++, я знаю, что он использует какой-то (обращенный) 6-байтовый массив, и когда я запускаю этот код, используя MAC-адрес в примере на repl.it, он действительно производит то, что кажется быть удобочитаемой 4-символьной строкой, которую можно ввести как пин-код bluetooth:

m~;5

Однако, когда я заменяю оригинальный mac-адрес своим фактическим mac-адресом, он генерирует нечитаемые символы, и мне кажется, что этот код на самом деле не может работать и что-то должно быть опущено оригинальным постером на wiibrew.org.

Это мой фактический MAC-адрес:

  char xpin[6];
  xpin[0] = 0x03;
  xpin[1] = 0xF4;
  xpin[2] = 0xB9;
  xpin[3] = 0x6E;
  xpin[4] = 0xAE;
  xpin[5] = 0xB8;
  printf(xpin);

И это результат, который включает непечатаемые символы, которые определенно не могут быть введены при запросе в качестве действительного PIN-кода Bluetooth:

��n�� @ 

Может ли кто-нибудь пролить свет на это, поскольку я не могу понять, каким образом предоставленный код может создать читаемую человеком строку, которую можно использовать в качестве номера контакта bluetooth ??

В конечном итоге я хотел бы закодировать это в Javascript или Python, но даже возможность сделать это вручную и генерировать допустимые строки из mac-адресов была бы полезной.

...