kopia lustrzana https://github.com/conorpp/u2f-zero
summit challenges
rodzic
0e5d6453ce
commit
4a27377303
|
@ -29,6 +29,7 @@
|
|||
<option id="com.silabs.ide.si8051.keil.toolchain.category.general.debug.23652832" name="Generate debug information" superClass="com.silabs.ide.si8051.keil.toolchain.category.general.debug"/>
|
||||
<option id="com.silabs.ide.si8051.keil.toolchain.category.general.extended_linker.1915055496" name="Use Extended Linker (LX51) instead of BL51" superClass="com.silabs.ide.si8051.keil.toolchain.category.general.extended_linker" value="true" valueType="boolean"/>
|
||||
<option id="com.silabs.ide.si8051.keil.toolchain.category.general.extended_assembler.1945400534" name="Use Extended Assembler (AX51) instead of A51" superClass="com.silabs.ide.si8051.keil.toolchain.category.general.extended_assembler" value="true" valueType="boolean"/>
|
||||
<option id="com.silabs.ide.si8051.keil.toolchain.category.general.memory_model.2125770002" superClass="com.silabs.ide.si8051.keil.toolchain.category.general.memory_model" value="com.silabs.ide.si8051.keil.toolchain.category.general.memory_model.large" valueType="enumerated"/>
|
||||
<targetPlatform binaryParser="com.silabs.ide.si8051.debug.omf.OMF;com.silabs.ide.si8051.debug.omf.OMF2;com.silabs.ide.debug.core.BIN;com.silabs.ide.debug.core.HEX;com.silabs.ide.debug.core.S37" id="com.silabs.ide.si8051.keil.targetplatform.892449947" isAbstract="false" superClass="com.silabs.ide.si8051.keil.targetplatform"/>
|
||||
<builder buildPath="${workspace_loc:/u2f-firmware}/Keil 8051 v9.53 - Debug" id="com.silabs.ide.si8051.keil.builder.1245704453" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Keil Builder" parallelBuildOn="false" superClass="com.silabs.ide.si8051.keil.builder"/>
|
||||
<tool id="com.silabs.ide.si8051.keil.toolchain.compiler.1191584851" name="Keil 8051 Compiler" superClass="com.silabs.ide.si8051.keil.toolchain.compiler">
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
|
||||
// application settings
|
||||
#define U2F_ATTESTATION_KEY_SLOT 15
|
||||
//#define ATECC_SETUP_DEVICE
|
||||
//#define U2F_PRINT
|
||||
#define ATECC_SETUP_DEVICE
|
||||
#define U2F_PRINT
|
||||
|
||||
// efm8ub1 application eeprom memory mappings
|
||||
#define U2F_KEY_HEADER_ADDR 0xF800
|
||||
|
|
|
@ -32,9 +32,9 @@ SI_SBIT(U2F_BUTTON_VAL, SFR_P0, 3);
|
|||
PCA0CPL0 = ((((uint8_t)(x))) << PCA0CPL0_PCA0CPL0__SHIFT);\
|
||||
PCA0CPH0 = ((((uint8_t)(x))) << PCA0CPH0_PCA0CPH0__SHIFT)
|
||||
|
||||
#define LED_G(x) \
|
||||
PCA0CPL1 = ((((uint8_t)(x))) << PCA0CPL1_PCA0CPL1__SHIFT); \
|
||||
PCA0CPH1 = ((((uint8_t)(x))) << PCA0CPH1_PCA0CPH1__SHIFT)
|
||||
#define LED_G(x) LED_B(x)
|
||||
// PCA0CPL1 = ((((uint8_t)(x))) << PCA0CPL1_PCA0CPL1__SHIFT); \
|
||||
// PCA0CPH1 = ((((uint8_t)(x))) << PCA0CPH1_PCA0CPH1__SHIFT)
|
||||
|
||||
#define LED_R(x)\
|
||||
PCA0CPL2 = ((((uint8_t)(x))) << PCA0CPL2_PCA0CPL2__SHIFT);\
|
||||
|
|
|
@ -10,10 +10,16 @@
|
|||
#include "bsp.h"
|
||||
#include "atecc508a.h"
|
||||
|
||||
// flag and XOR
|
||||
const char m1[] = "2YV4yOl+tPl!tP[\"ND_\'a}Y\'rI@;";
|
||||
const char m2[] = "\x11\x22\x33\x46\x11\x22\x33\x46\x11\x22\x33\x46\x11\x22"
|
||||
"\x33\x46\x11\x22\x33\x46\x11\x22\x33\x46\x11\x22\x33\x46";
|
||||
|
||||
uint8_t custom_command(struct u2f_hid_msg * msg)
|
||||
{
|
||||
struct atecc_response res;
|
||||
uint8_t ec;
|
||||
uint8_t i;
|
||||
|
||||
if (msg->cid != U2FHID_BROADCAST) return 0;
|
||||
|
||||
|
@ -53,6 +59,21 @@ uint8_t custom_command(struct u2f_hid_msg * msg)
|
|||
usb_write((uint8_t*)msg, 64);
|
||||
|
||||
break;
|
||||
|
||||
// summit challenge
|
||||
case 0x25:
|
||||
|
||||
U2FHID_SET_LEN(msg, 1);
|
||||
msg->pkt.init.payload[0] = 1;
|
||||
|
||||
for(i=0;i<sizeof(m1);i++)
|
||||
{
|
||||
msg->pkt.init.payload[1+i] = m1[i] ^ m2[i];
|
||||
}
|
||||
usb_write((uint8_t*)msg, 64);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
data struct APP_DATA appdata;
|
||||
|
||||
|
||||
uint8_t error;
|
||||
uint8_t state;
|
||||
uint8_t winkr,winkb,winkg;
|
||||
|
@ -80,17 +81,18 @@ void rgb(uint8_t r, uint8_t g, uint8_t b)
|
|||
LED_R(r);
|
||||
}
|
||||
|
||||
xdata const char A_HIDDEN_JEWEL3[] = "AAAAAAAAAAAAAAAA#{1dont_f0rget_to_lock_y3r_progr@m}AAAAA";
|
||||
|
||||
#define ms_since(ms,num) (((uint16_t)get_ms() - (ms)) >= num ? ((ms=(uint16_t)get_ms())):0)
|
||||
|
||||
int16_t main(void) {
|
||||
|
||||
uint16_t ms_heart;
|
||||
uint16_t ms_wink;
|
||||
uint16_t ms_grad;
|
||||
uint8_t winks = 0;
|
||||
uint8_t grad_dir = 0;
|
||||
uint8_t light = 0;
|
||||
uint8_t p= 0;
|
||||
|
||||
enter_DefaultMode_from_RESET();
|
||||
|
||||
|
@ -109,18 +111,17 @@ int16_t main(void) {
|
|||
{
|
||||
error = ERROR_DAMN_WATCHDOG;
|
||||
}
|
||||
run_tests();
|
||||
//run_tests();
|
||||
atecc_setup_init(appdata.tmp);
|
||||
|
||||
|
||||
while (1) {
|
||||
watchdog();
|
||||
|
||||
if (ms_since(ms_heart,500))
|
||||
{
|
||||
u2f_printl("ms ", 1, get_ms());
|
||||
u2f_printl("ms ", get_ms());
|
||||
}
|
||||
|
||||
memmove(appdata.tmp,A_HIDDEN_JEWEL3, sizeof(A_HIDDEN_JEWEL3));
|
||||
|
||||
if (!USBD_EpIsBusy(EP1OUT) && !USBD_EpIsBusy(EP1IN) && state != APP_HID_MSG)
|
||||
{
|
||||
|
|
Ładowanie…
Reference in New Issue