nid69ita:
Solo una precisazione, non esiste un "Arduino language".
In uno sketch Arduino si scrive in C o C++ in quanto il tutto viene compilato dal avr-gcc (compilatore gnu c per gli avr).
Arduino ha dietro un framework chiamato Wire, un insieme di librerie e un main che "nasconde" la solita struttura main() di un qualsiasi programma C e che richiama una volta la setup() e in un ciclo infinito la loop().
I sorgenti di questi codici sono nelle cartelle dell'IDE (....\arduino-IDE\hardware\arduino\cores\arduino). Ci troverai anche un bel main.c
#include <Arduino.h>
int main(void)
{ init();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;
{
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
mmm, sono un po' confusa.
Dalla pagina di arduino, ho letto questo
Can I program the Arduino board in C?
In fact, you already are; the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs supported by avr-g++ should work in Arduino. For more details, see the page on the Arduino build process.
Mentre qui c'è una serie di funzioni, strutture e variabili: Arduino - Home
Inoltre quando ho voluto usere printf e scanf ho dovuto configurare l'uart e aprire stdout e stdin.
nid69ita:
Hai partecipato a questa discussione (vedo un Darkcoffee)?
atmega - Exploiting stack buffer overflows on an Arduino - Electrical Engineering Stack Exchange
Sembra l'unica cosa che si trovi in internet sull'argomento
E poi mi sembra che il grande @Gammon del forum ti ha trovato la soluzione :
Handle memory - #39 by nickgammon - Programming Questions - Arduino Forum
Però quel che non mi è chiaro è la motivazione su un Atmel. Il codice che viene iniettato è comunque nel tuo sketch.
Di solito un attacco del genere su PC viene fatto da un codice sul codice di un altro programma.
Al limite mi viene in mente un attacco del genere ad un Arduino su cui gira un server (Ethernet library) e attraverso http gli passi richieste anomale.
Si, la discussione su electronics.stackexchange l'ho aperta io. Le risposte sono stati interessanti, il paper che mi ha proposto Warren Young l'avevo già letto. Il problema è che ho bisogno di trovare la strada giusta, perchè non riesco, in modo pratico, ad andare avanti.
E' vero, Gammon mi sta aiutando, è molto bravo e spiega bene.
Spero che con questo forum, molto preparato, riesco ad uscire da questo problema.
Inizialmente sto creando io la vulnerabilità, dopo che questo primo esperimento è stato fatto, dovrei cercarlo di applicarlo ad un programma che mi hanno dato loro. Ed infatti, proprio in questo programma c'è l'invio di messaggi tramite tcp. Quindi l'idea è quella di mandare un pacchetto con una grandezza giusta e con il giusto payload.