Ich mache gerade meine ersten Versuche mit dem ESP32-IDF. Nach ein paar Klimmzügen habe ich es unter Eclipse zum Laufen gebracht und das erste Testprogramm kompiliert. Obwohl es sich um einen Vierzeiler handelt, der periodische eine Zählvariable per printf ausgibt und dann jeweils eine Sekunde schläft, ist das Kompilat über 174 kByte groß.
Was wird da alles eingebunden? printf und sleep können es ja kaum sein?
1
#include<stdio.h>
2
#include<stdbool.h>
3
#include<unistd.h>
4
5
voidapp_main(void)
6
{
7
unsignedintc=0;
8
while(true){
9
printf("Count: %d, count^2: %d\n",c,c*c);
10
c++;
11
sleep(1);
12
}
13
}
Total sizes:
Used static DRAM: 10600 bytes ( 170136 remain, 5.9% used)
1
.data size: 8432 bytes
2
3
.bss size: 2168 bytes
Used static IRAM: 49146 bytes ( 81926 remain, 37.5% used)
1
.text size: 48119 bytes
.vectors size: 1027 bytes
Used Flash size : 117131 bytes
1
.text: 79795 bytes
2
3
.rodata: 37080 bytes
Total image size: 174709 bytes (.bin may be padded larger)
Doch, printf ist auf den Boliden recht teuer. Bei 8-Bittern wird default der float-Support erstmal weggelassen.
Wo aber die 60kB RAM hin verschwinden, ist mir auch ein Rätsel.
Ist nicht per default der ganze WiFi- und Netzwerkstack aktiviert? Der braucht natürlich einiges an Speicher. FreeRTOS ist auch immer dabei. Außerdem eine ganze Menge an Treibern für diverse Peripherie, Hilfsfunktionen wie Logging usw. Allein dafür ist das printf() sowieso immer mit dabei.
Aber was soll's? Die ESP32 haben bis zu 32 MiB Flash. Das Library-Zeug ist ja auch nur ein mal im Flash. Den ganzen Rest kannst du dann voll machen mit Massen an Anwendungscode...
Reine Spekulation. Wenn ich eine Backdoor in so einem System unterbringen wollen würde, würde ich sie in den ROM packen. Dort ist sie schwerer zu finden und zu entfernen. Dementsprechend glaube ich nicht, dass der große Flash-Verbrauch durch eine Backdoor verursacht wird.
Zumindest meine Tasmotas auf 8266 und 8285 machen genau gar keinen Traffic ausgehend, sagt mir mein Mikrotikrouter.
Außer: Tasmota hat den Hang andauernd nach Holländischen NTP-Servern zu kucken, obwohl lokaler NTP angegeben und auch erreichbar ist.
Das ist aber auch das einzige, es sei denn man versucht Updates zu fahren.
Meine Tasmotas sind alle offline, als smarte Zeitschaltuhren, d.h. auch ohne MQTT usw.
Doch, printf ist auf den Boliden recht teuer. Bei 8-Bittern wird default
der float-Support erstmal weggelassen.
Wo aber die 60kB RAM hin verschwinden, ist mir auch ein Rätsel.
Ich habe die Zeile mit printf mal auskommentiert, das spart nur etwa 50 Bytes.
Anscheinend wird da ein komplettes Framework mit allen Treibern, RTOS, etc. eingebunden.
Ob das Teil nach Hause telefoniert werde ich mir bei Gelegenheit mal anschauen, im Moment läuft das WiFi noch nicht. Ich glaube aber kaum, dass es da interessante Informationen zu übermitteln gibt. Die ESP stecken doch vor allem in steuerbaren Steckdosen und anderen Smart-Home-Gimmicks, was gibt es da zu spionieren? Handys und PCs sind da ein lohnenderes Ziel.
Den WLAN-Schlüssel, andere Geräte und evtl. deren Sicherheitslücken.
So ein Backdoor-ESP könnte ja als "Remote Relay" dienen, um z.B. deinen PC, dein NAS oder eben auch deine Mobilgeräte leerzuräumen...
Den WLAN-Schlüssel, andere Geräte und evtl. deren Sicherheitslücken.
Dehalb sind dauernd Chinesen vor meiner Haustür, die wollen mein WLAN benutzen... Ansonsten schon verblüffend, was da an Spionagecode im Rom/Flash sein soll, da müssen Superprogrammierer am Werk sein.
So ein Backdoor-ESP könnte ja als "Remote Relay" dienen, um z.B. deinen
PC, dein NAS oder eben auch deine Mobilgeräte leerzuräumen...
Naja, bei den erreichbaren Transferraten auf diesem Weg wird wohl da in ein paar Monaten erst die Dateiliste von NAS/PC usw. in China angekommen sein.