summit challenges

vtcsec_summit
Conor 2016-04-02 02:44:42 -04:00
rodzic 0e5d6453ce
commit 4a27377303
5 zmienionych plików z 33 dodań i 10 usunięć

Wyświetl plik

@ -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">

Wyświetl plik

@ -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

Wyświetl plik

@ -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);\

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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)
{