|
|
@@ -2,11 +2,46 @@
|
|
|
|
|
|
/* generated by fbt from .png files in images folder */
|
|
|
#include <weebo_icons.h>
|
|
|
+#include <amiibo.h>
|
|
|
+
|
|
|
+#include "m.h"
|
|
|
+#include "key_retail.h"
|
|
|
+
|
|
|
+#define TAG "weebo"
|
|
|
+
|
|
|
+#define NTAG215_SIZE 540
|
|
|
+#define NFC3D_UID_OFFSET 0x1D4
|
|
|
+#define PAGE_SIZE 4
|
|
|
+
|
|
|
+nfc3d_amiibo_keys amiiboKeys;
|
|
|
+uint8_t original[NTAG215_SIZE];
|
|
|
+uint8_t plain_base[NFC3D_AMIIBO_SIZE];
|
|
|
+uint8_t modified[NTAG215_SIZE];
|
|
|
+
|
|
|
+void calculate_pwd(uint8_t* uid, uint8_t* pwd) {
|
|
|
+ pwd[0] = uid[1] ^ uid[3] ^ 0xAA;
|
|
|
+ pwd[1] = uid[2] ^ uid[4] ^ 0x55;
|
|
|
+ pwd[2] = uid[3] ^ uid[5] ^ 0xAA;
|
|
|
+ pwd[3] = uid[4] ^ uid[6] ^ 0x55;
|
|
|
+}
|
|
|
|
|
|
int32_t weebo_app(void* p) {
|
|
|
UNUSED(p);
|
|
|
- FURI_LOG_I("TEST", "Hello world");
|
|
|
- FURI_LOG_I("TEST", "I'm weebo!");
|
|
|
+ FURI_LOG_I(TAG, "Hello world");
|
|
|
+ FURI_LOG_I(TAG, "I'm weebo!");
|
|
|
+
|
|
|
+ // key_retail.bin
|
|
|
+ memcpy(&amiiboKeys, key_retail_bin, sizeof(key_retail_bin));
|
|
|
+
|
|
|
+ memcpy(original, m_bin, m_bin_len);
|
|
|
+ memset(plain_base, 0, sizeof(plain_base));
|
|
|
+ memset(modified, 0, sizeof(modified));
|
|
|
+
|
|
|
+ if(!nfc3d_amiibo_unpack(&amiiboKeys, original, plain_base)) {
|
|
|
+ FURI_LOG_E(TAG, "Failed to unpack amiibo keys");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ FURI_LOG_I(TAG, "Unpacked amiibo keys");
|
|
|
|
|
|
return 0;
|
|
|
}
|