weebo.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <furi.h>
  2. /* generated by fbt from .png files in images folder */
  3. #include <weebo_icons.h>
  4. #include <amiibo.h>
  5. #include "m.h"
  6. #include "key_retail.h"
  7. #define TAG "weebo"
  8. #define NTAG215_SIZE 540
  9. #define NFC3D_UID_OFFSET 0x1D4
  10. #define PAGE_SIZE 4
  11. nfc3d_amiibo_keys amiiboKeys;
  12. uint8_t original[NTAG215_SIZE];
  13. uint8_t plain_base[NFC3D_AMIIBO_SIZE];
  14. uint8_t modified[NTAG215_SIZE];
  15. void calculate_pwd(uint8_t* uid, uint8_t* pwd) {
  16. pwd[0] = uid[1] ^ uid[3] ^ 0xAA;
  17. pwd[1] = uid[2] ^ uid[4] ^ 0x55;
  18. pwd[2] = uid[3] ^ uid[5] ^ 0xAA;
  19. pwd[3] = uid[4] ^ uid[6] ^ 0x55;
  20. }
  21. int32_t weebo_app(void* p) {
  22. UNUSED(p);
  23. FURI_LOG_I(TAG, "Hello world");
  24. FURI_LOG_I(TAG, "I'm weebo!");
  25. // key_retail.bin
  26. memcpy(&amiiboKeys, key_retail_bin, sizeof(key_retail_bin));
  27. memcpy(original, m_bin, m_bin_len);
  28. memset(plain_base, 0, sizeof(plain_base));
  29. memset(modified, 0, sizeof(modified));
  30. if(!nfc3d_amiibo_unpack(&amiiboKeys, original, plain_base)) {
  31. FURI_LOG_E(TAG, "Failed to unpack amiibo keys");
  32. return -1;
  33. }
  34. FURI_LOG_I(TAG, "Unpacked amiibo keys");
  35. return 0;
  36. }