Forum: Mikrocontroller und Digitale Elektronik ESP8266 "telefoniert nach Hause"


von Jo (Gast)



Lesenswert?

Im Oktober/November letzten Jahres habe ich mir auf Basis des ESP8266 in 
Kombination mit einenm BH1750 einen Helligkeitssensor gebaut, der die 
Beleuchtung rund ums Haus steuert. Das funktioniert soweit auch 
tadellos. Das WLAN-Netz, in das der ESP8266 funkt, ist rein intern. 
Externe Verbindungen hat und braucht die ganze Anlage nicht.

Nun habe ich einen neuen Router bekommen und mich darüber gewundert, 
dass der ESP8266 im Minutenrythmus eine Verbindung zur IP-Adresse 
128.85.255.63 aufbaut (es versucht) und systematisch Ports im oberen 
Bereich scannt. Der abgescannte Bereich liegt so zwischen Port 30.000 
und 62.000. Vor zwei Wochen noch hat der ESP8266 eine andere IP-Adresse 
angepollt (112.82.255.65).

Verbindungen nach Außen ins Internet waren bis zur Entdeckung dieses 
Verhaltens nicht möglich. Ich kann ausschließen, dass der ESP8266 auf 
eine Anfrage aus dem Internet reagiert. Inzwischen habe ich dem ESP8266 
Zugriff nach außen gewährt, meinen Traffic-Scanner eingeschaltet und 
plotte die Pakete nun mit.

Der ESP8266 fungiert als Web-Server auf Port 80 und wird von einem 
kleinen Linux-Rechner regelmäßig gepollt. Dann gibt er den 
Helligkeitswert als Text aus. Hierfür habe ich als Grundlage den 
Webserver aus dem Arduino-IDE (1.6.4) „ESP8266AdvancedWebserver“ 
verwendet. Die ESP8266 Libraries habe ich über den Board-Manager des 
Arduino IDEs installiert.

Meinen eigenen Code und die als Quelltext vorliegenden LIBs habe ich 
durchgesucht und konnte keine Routine finden, die das Verhalten erklären 
könnte. Es steht also zu vermuten, dass Espressif in seinen LIBs eine 
solche „Nach-Hause-Telefonier-Funktion“ implementiert hat.

Folgende Libraries verwende ich in meinem Code:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <Wire.h>
#include <math.h>

Da ich die Situation nicht noch einmal nachstellen kann, wollte ich hier 
im Forum fragen, ob ihr alle mal auf Eure Router schaut. Vielleicht 
telefoniert Euer ESP8266 ja auch nach Hause.

Ich habe mal einen Screenshot vom Routing-Table angehängt und eine 
PCAP-Datei, die Ihr Euch mit Wireshark anschauen könnt. Die 192.168.1.71 
ist der Helligkeitssensor.

Es würde mich freuen, wenn Ihr hier Positiv-/Negativ-Berichte postet.

Viele Grüße
Jo

von Peter II (Gast)


Lesenswert?

das sieht merkwürdig aus.

Wenn die SRC und DEST getauscht wären, würde das alles einen Sinn 
ergeben. Denn der Absender Port zählt automatisch hoch. Und als Ziel 
macht auch der Port 80 sinn. Absender Port 80 ist merkwürdig, dann das 
sollte ja schon der Webserver sein LISTEN drauf haben, außerdem darf nur 
ROOT ports < 1024 öffnen.

von Draco (Gast)


Angehängte Dateien:

Lesenswert?

Also die Lookups auf die IPs machen kein Sinn. Ich denke nicht das er 
irgendwie nach Hause telefoniert. Ich denke eher vielmehr das das ein 
Fehler der Software ist.

von K. J. (Gast)


Lesenswert?

Als vermutung würde ich mal drauf tippen das es vielleicht der OTA 
Bootloder ist, vielleicht ist da was voreingestellt, ansonsten werde ich 
bei mir mal schauen.

von Opidus (Gast)


Lesenswert?

Das sieht eher danach aus, dass eine Funktion aktiviert wird, die 
versucht einen Wetterdatensatz anzufordern. Du solltest versuchen in den 
Quelltexten nach den IP-Adressen zu forschen.

von Jo (Gast)


Lesenswert?

@opidus:

Ich denke, Du hast den Artikel nicht richtig gelesen und/oder 
verstanden. Ein Linux-System (mit einer internen, privaten IP) fordert 
Daten an.

In diesem Fall handelt der ESP8266 von sich aus und pollt eine externe 
IP. Das habe ich aber nicht programmiert.

>Du solltest versuchen in den Quelltexten nach den IP-Adressen zu forschen.

Danke für den Tipp. Bevor ich das hier gepostet habe, habe ich schon 3 
Wochen Investigation hinter mir. Die Adressen konnte ich in den als 
Source-Code vorhandenen Bibliotheken nicht finden. Das steht übrigens 
auch schon oben im initialen Post.

Greetz
Jo

von c-hater (Gast)


Lesenswert?

Peter II schrieb:

> Absender Port 80 ist merkwürdig

Merkwürdig ist das natürlich, aber keinesfalls unmöglich.

> dann das
> sollte ja schon der Webserver sein LISTEN drauf haben

Es ist natürlich trotzdem recht problemlos möglich, Pakete zu versenden 
mit Port 80 als Absender. Mir fallen da auf Anhieb mindestens drei 
verschiedene Methoden zu ein.

> außerdem darf nur
> ROOT ports < 1024 öffnen.

Immer diese unzulässigen Verallgemeinerungen. Merke: Es gibt OS', da 
gibt es gar keine differenzierten Benutzerrechte. Mehr noch: ES gibt 
OS', da gibt es nichtmal das Konzept eines "Benutzers". Und nicht 
zuletzt: es gibt OS', die eigentlich nichtmal wirklich OS sind, gerade 
im Bereich der µC...

Soviel zu deiner Analyse...


Allerdings, eine bessere Analyse kann ich auch erstmal nicht anbieten.

Das pcap-File ist nämlich sehr wahrscheinlich viel zu stark gefiltert, 
um wirklich sagen zu können, wer hier den aktiven Part spielt, ob also 
der ESP tatsächlich "nach Hause telefoniert". Der OP sollte mal ein 
ungefiltertes Capture des fraglichen Zeitraumes posten, dann könnte man 
sehr wahrscheinlich schon viel mehr sehen.

Kurzfassung: Ich glaube eher nicht an die Heimtelefonier-Theorie des OP, 
halte sie allerdings auch nicht für völlig ausgeschlossen.

von Opidus (Gast)


Lesenswert?

Jo schrieb:
> @opidus:
>
> Ich denke, Du hast den Artikel nicht richtig gelesen und/oder
> verstanden. Ein Linux-System (mit einer internen, privaten IP) fordert
> Daten an.

Das ist auch unwidersprochen. Trotzdem wird im ESP eine Routine 
aktiviert, die einen externen Server kontaktiert.

> In diesem Fall handelt der ESP8266 von sich aus und pollt eine externe
> IP. Das habe ich aber nicht programmiert.
>
>>Du solltest versuchen in den Quelltexten nach den IP-Adressen zu forschen.
>
> Danke für den Tipp. Bevor ich das hier gepostet habe, habe ich schon 3
> Wochen Investigation hinter mir. Die Adressen konnte ich in den als
> Source-Code vorhandenen Bibliotheken nicht finden. Das steht übrigens
> auch schon oben im initialen Post.

Das steht aber nicht ausdrücklich, dass du nach den Adressen gesucht 
hast.

Klinke mich jetzt aus, da ich so oder so nicht helfen kann.

von Peter II (Gast)


Lesenswert?

c-hater schrieb:
> Soviel zu deiner Analyse...

ja, aber alles in allen - warum sollte man es so machen um Daten zu 
übertragen? Warum sollte man irgendwelche Ports testen müssen? Wenn man 
Daten zu seinen eigenem Server überträgt, wird man in den meisten Fällen 
den Port wissen und Maximalen zur Redundanz verschieden IPs versuchen.

Zeige uns doch mal das SYN packet, dann sieht man in welcher Richtung 
die Verbindung aufgebaut wird.

von noreply@noreply.com (Gast)


Lesenswert?

Vielleicht hilft das weiter.

http://www.utrace.de/?query="IP-Adresse";

von noreply@noreply.com (Gast)


Lesenswert?

Und vielleicht hat sich der ESP8266 nur im WLAN vertan und wollte über 
den Nachbarn raus. :-) :-) :-) :-) :-) :-) :-)

von Jo (Gast)


Lesenswert?

@Peter II

>ja, aber alles in allen - warum sollte man es so machen um Daten zu
>übertragen? Warum sollte man irgendwelche Ports testen müssen?

Das habe ich mich auch gefragt. Das ganze ist sehr nebulös. Da ich den 
Source-Code habe, nichts dergleichen programmiert habe und das Teil bis 
vor kurzem nicht mal Internet-Zugang hatte, ist das sehr merkwürdig.

Bevor ich Erklärungen finden möchte, wäre es interessant zu sehen, ob 
ich der Einzige bin, bei dem das Phänomen auftritt. Da lohnt es nicht 
wirklich, der Sache nachzugehen.

Deshalb nochmal mein Appell an alle ESP8266-Besitzer. Wenn Ihr auch 
einen Web-Server laufen habt, vielleicht sogar obige Libraries verwendet 
und wisst, wo bei Eurem Router die Routing-Tabelle ist, schaut doch mal 
nach ob Ihr bei Euch auch merkwürdige Einträge findet und postet es 
hier.

von Horst (Gast)


Lesenswert?

112.82.255.65 ist in Shanghai

von Pete K. (pete77)


Lesenswert?

Wenn die IP-Adresse gewechselt hat, liegt es vielleicht daran, dass per 
DNS angefragt wird.

Installiere mal einen Wireshark und poste das Ergebnis.

von Pete K. (pete77)


Lesenswert?

Kannst ja mal ins http://www.esp8266.com/ Forum posten.

von Chr. M. (snowfly)


Lesenswert?

wie oft treten diese 'Kommunikationsversuche' denn auf?
Damit man vorbereitet ist ob man 10min oder 2Wochen tracen muss.

von c-hater (Gast)


Lesenswert?

Peter II schrieb:

> ja, aber alles in allen - warum sollte man es so machen um Daten zu
> übertragen?

Um eben diese Datenübertragung im allgemeinen Traffic möglichst gut zu 
verstecken, was denn sonst? Wenn's jedem auch nur halbgebildeten 
Frickler sofort auffallen würde, hätte es nicht lange Bestand, und würde 
nicht nur den Mechanismus "verbrennen", sondern obendrein auch noch die 
Quelle des Codes kompromittieren. Aber wer weiss, vielleicht ist gerade 
letzteres ja sogar das Ziel des hypothetischen Angreifers...

Ein "Spiel" (im theoretischen Sinn des Begriffs) ist unendlich komplex 
und man muss darin auch mit solchen Zügen rechnen, wie der "false 
flag"-Attacke. Dass also jemand einen eigentlich vertrauenswürdigen 
Partner als Feind diskreditiert, indem er ihm Aktionen unterschiebt, die 
er nie ausgeführt oder zumindest nie beabsichtigt hat.

> Warum sollte man irgendwelche Ports testen müssen?

Wo siehst du einen Port-Test? Ich sehe in allen Fällen Daten über eine 
offensichtlich etablierte TCP-Verbindung laufen. Nix Test. Alle diese 
Daten müssen eine Vorgeschichte haben. Und Auskunft dazu kann halt nur 
ein ungefiltertes Log geben. Genau deswegen habe ich das auch 
reklamiert.

> Zeige uns doch mal das SYN packet, dann sieht man in welcher Richtung
> die Verbindung aufgebaut wird.

Genau. Das ist einer der Punkte. Aber immer noch nicht ultimativ. Auch 
SYN-Pakete lassen sich schließlich recht problemlos fälschen. Zumal hier 
NAT (masquerading) von vornherein ganz legal im Spiel sein muss...

von Marc H. (marchorby)


Lesenswert?

Ich kann mich dunkel an einen Artikel erinnern bei dem die Chinesen 
sogar in den Bügeleisen WIFI-Module installiert haben und die buchen 
sich in alle offenen WLAN-Netze ein und fungieren als Bot...

Ich finde nur den Link nicht mehr!

Nachtrag/Vorschlag:

Leite den Traffic mal um und lass ihn an einen PC weiterleiten. 
Akzeptiere den Connectionversuch und schau was über die Leitung läuft 
mit WireShark

: Bearbeitet durch User
von Horst (Gast)


Lesenswert?

Ich hatte auf meinem Modul auch mal den Google-Bot und auch den von 
Baidu. :) Muss nicht immer böswillig sein.

von Jo (Gast)


Lesenswert?

Marc H. schrieb:
> Leite den Traffic mal um und lass ihn an einen PC weiterleiten.
> Akzeptiere den Connectionversuch und schau was über die Leitung läuft
> mit WireShark

Ich habe das etwas anders gelöst. Der Router hat einen Paket Sniffer, 
der die Pakete an einen Server weitergeleitet werden und dort wird dann 
alles protokolliert. Der Intercept findet bei mir bereits auf dem Router 
statt. Ich filtere derzeit alles heraus, was als Absende-/Zustelladresse 
die 191.168.1.71 hat (also die IP die der Lichtsensor hat). Der 
Connectionversuch würde akzeptiert. Der ESP8266 scannt aber wie bekloppt 
alle Ports der IP-Adresse durch, ohne das zu einem Connect kommt. Das 
ist das Problem. Sonst könnte ich den Handshake und die Payload hier 
posten. Hab' ich aber nicht.

Deswegen interessiert es mich, ob auch ESP8266 anderer Nutzer dasselbe 
Verhalten zeigen. Dann könnte man vielleicht mal gemeinsam der Sache auf 
den Grund gehen.

----

@c-hater

An einem ungefilterten Log arbeite ich. Derzeit logge ich alles, was als 
Absende-/Zustelladresse die 191.168.1.71 hat. Das poste ich dann 
vermutlich morgen Vormittag.

von Dieter F. (Gast)


Lesenswert?

Jo, hier hat einer schon Freitag :-)

von Jo (Gast)


Lesenswert?

@ snowfly

Bei mir tritt der Versuch ca. 1x pro Minute auf. Manchmal dauert es auch 
bis zu 90 sek., jeweils 2 Ports zur gleichen Zeit.

von Dieter F. (Gast)


Lesenswert?

Jo schrieb:
> Bei mir tritt der Versuch ca. 1x pro Minute auf. Manchmal dauert es auch
> bis zu 90 sek., jeweils 2 Ports zur gleichen Zeit.

Dann hast Du die falschen Protokolle gepostet ...

Troll woanders

von Thomas (Gast)


Lesenswert?

Warum tragen die Pakete in dem pcap File eigentlich sowohl in der Quell- 
als auch in der Ziel-MAC den Wert 00:00:00:00:00:00?

Wenn hier jemand mit dem Internet kommunizieren möchte, sollte hier 
wenigstens die MAC des nächsten Router stehen.

von Dieter F. (Gast)


Lesenswert?

Thomas schrieb:
> Warum tragen die Pakete in dem pcap File eigentlich sowohl in der Quell-
> als auch in der Ziel-MAC den Wert 00:00:00:00:00:00?

Na ich vermute mal ganz dreist, weil das alles hier nur ein FAKE ist ...

von Thomas (Gast)


Lesenswert?

Dieter F. schrieb:
> Na ich vermute mal ganz dreist, weil das alles hier nur ein FAKE ist ...

Diese Vermutung liegt recht nahe. Oder es ist ein Dekodierfehler im 
Wireshark bzw. wurden die Pakete falsch mitgeschnitten

von Dieter F. (Gast)


Lesenswert?

Thomas schrieb:
> Diese Vermutung liegt recht nahe.

Bingo!

von Jo (Gast)


Angehängte Dateien:

Lesenswert?

@ Jim Dieter Quakenbusch

>Dann hast Du die falschen Protokolle gepostet ...
>Troll woanders

Muss ich das verstehen? Was ist daran falsch? Hab' ich da etwas 
übersehen, außer einem "ist schon Freitag", "das ist ein Fake" und 
"Troll woanders". Dann bitte ich Entschuldigung.

Ich meine es recht ernst mit diesem Thema. Es ist nicht witzig, wenn 
Dein Rechner (auch wenn es nur ein µC ist), Sachen macht, die er nicht 
machen sollte. Er vielleicht Daten verschickt (WLAN-Zugangsdaten??) die 
wohl besser geheim bleiben.

Wenn Du Dir obige Grafik anschaust ("Lichtsensor_Router2.png") so siehst 
Du dort die Timeout-Zeit der Verbindungen, die offensichtlich anfangs 
24h beträgt (warum ist mir übrigens NICHT klar). Wenn Du jetzt mal durch 
die Spalte guckst wirst Du feststellen, dass der Time-Out bei einigen 
Ports eine Reihe bildet: 19:01:19 - 19:02:19 -19:03:19 - 19:04:18.

Mit anderen Worten: der ESP8266 öffnet ungefähr jede Minute einen Port 
bei der Zieladresse. Was man -zugegeben- nicht sieht: in einem anderen 
Portbereich wird fast zeitgleich parallel ein weiterer Port geöffnet. 
Ich habe nochmal eine Grafik angehängt, wo zeitgleich wohl 3 gleich 
Ports geöffnet wurden.

Das mit dem Dekodierfehler halte ich für Quatsch, da dann die 
Routingtabelle des Routers (auch) ein Problem haben müsste. Der 
funktionier aber einwandfrei.

Kannst Du also bitte Deinen "Troll-Vorwurf" etwas konkretisieren. Wenn 
Du Wissen über derartige Themen hast, teile es uns doch bitte mit, 
Dieter.

Wenn Du möchtest lade ich Dich auch gerne ein und Du kannst Dir die 
Sache hier persönlich ansehen.

von Dieter F. (Gast)


Lesenswert?

Jo schrieb:
> Wenn Du Dir obige Grafik anschaust ("Lichtsensor_Router2.png")

Veralbere doch bitte jemand anders - die ursprünglich "veröffentlichen" 
Router1.png und Router2.png sehen anders aus.

Die jetzt - NEU - hinzugefakte Router3.png weist kleinere Abstände aus - 
Word oder Notepad oder ... sei Dank.

TROLL - und das war es jetzt für mich - veralbere wer sich veralbern 
lassen mag :-)

von Du (Gast)


Lesenswert?

Jo, bist du bereit dein Modul zu verschicken? Wie kann man dich 
kontaktieren?

von oszi40 (Gast)


Lesenswert?

Jo schrieb:
> Folgende Libraries verwende ich in meinem Code:
>
> #include <ESP8266WiFi.h>
> #include <WiFiClient.h>
> #include <ESP8266WebServer.h>
> #include <ESP8266mDNS.h>
> #include <Wire.h>
> #include <math.h>

Wenn Du diese rein zufällig selbst compiliert haben solltest aus den 
Quellen, kannst Du ja selbst mal nachsehen? Irgendwo sollte ja eine IP 
zu finden sein? grep?

von Peter II (Gast)


Lesenswert?

oszi40 schrieb:
> Wenn Du diese rein zufällig selbst compiliert haben solltest aus den
> Quellen, kannst Du ja selbst mal nachsehen? Irgendwo sollte ja eine IP
> zu finden sein? grep?

DNS wurde aber auch schon erfunden.

von Dauergast (Gast)


Lesenswert?

Thomas schrieb:
> Quell- als auch in der Ziel-MAC den Wert 00:00:00:00:00:00?

Ziel-IPs:
70 52 FF 3F
80 55 FF 3F

Solche Zufälle Gibbs eigentlich auch nicht. Da ist entweder was kaputt, 
oder schlecht gefaked :)

von Jo (Gast)


Angehängte Dateien:

Lesenswert?

Ok. Nochmal.

Die Tabelle "Lichtsensor_Router3.png" ist anders sortiert. Nach 
Time-Out.

Ich Vollpfosten meine die Sache ernst. Vielleicht habe ich nicht soviel 
Ahnung wie Ihr, aber deshalb poste ich hier ja.

Ich hatte gedacht, so ein Forum wie das Diese hier wäre dazu da, Hilfe 
zu bekommen und nicht beschimpft zu werden. Im OP hatte ich gefragt, ob 
es andere Nutzer eines ESP8266 gibt, die ein ähnliches Phänomen haben. 
An eine Analyse habe ich mich noch überhaupt nicht rangetraut.

Danke Jim Dieter. :-) Du bekommst den Orden für die größte Produktivität 
hier.

@ Thomas: das mit den fehlenden Mac-Adressen war mir auch schon 
aufgefallen.
Ich konnte es aber nicht interpretieren, da ich solche Traces 
normalerweise nicht lese. Ich kann es im Moment nicht ändern.

@c-hater
Aus dem ESP8266 kann ich direkt keinen Trace ziehen. Da ist erst der AP, 
dann der Switch und erst am Router kann ich etwas rausziehen. Das sah 
dann so aus, wie das, was ich hier gepostet habe.

Ich habe jetzt ein paar Einstellungen geändert und erhalte das hier 
(siehe Anlage). Das ist mehr als vorher.

Ich habe auch eine weitere Erkenntnis: da ich den Traffic vom Sensor 
nicht draufhaben wollte, habe ich den Cron-Job der diesen triggert 
auskommentiert. Dann gabs auch kein "nach Hause telefonieren" mehr. Ich 
habe jetzt zwei Requests von meienm PC aus gemacht und diese am Router 
gesniffert. (siehe Anlage)

Und ja, ich habe das Modul "selbst" im Arduino IDE compiliert. Ich habe 
die Quelldateien alle durchgeschaut, aber nichts auffälliges gefunden. 
Es werden aber noch am Ende noch einige Libs von Espressif (?) 
dazugelinkt. Da vermute ich die dubiose Routine drin, vielleicht auch 
nur ein Bug. Ich bin allerdings nicht in der Lage da ein 
Reverse-Engineering durchzuführen.

von Chr. M. (snowfly)


Lesenswert?

Ich habe meinen esp8266 gerade mal über 7 min. getraced

--> keine Verbindung die nicht programmiert ist.

getraced mit FritzBox
geöffnet in Wireshark
programmiert mit Arduino 1.6.5

Zeit um mal den Trace rauszurücken.

von Peter II (Gast)


Lesenswert?

Jo schrieb:
> Ich habe auch eine weitere Erkenntnis: da ich den Traffic vom Sensor
> nicht draufhaben wollte, habe ich den Cron-Job der diesen triggert
> auskommentiert. Dann gabs auch kein "nach Hause telefonieren" mehr.

na ist das nicht die Lösung? Du hast kein "nach Hause telefonieren" 
gefunden sondern dein eigenen Trafik nur falsch interpretiert?

von Jo (Gast)


Lesenswert?

Du schrieb:
> Jo, bist du bereit dein Modul zu verschicken? Wie kann man dich
> kontaktieren?

Schick' einfach eine Mail an johbru1977{at}eclipso.ch. Wir können auch 
skypen.

von K. J. (Gast)


Lesenswert?

Chr. M. schrieb:
> Ich habe meinen esp8266 gerade mal über 7 min. getraced
>
> --> keine Verbindung die nicht programmiert ist.
>
> getraced mit FritzBox
> geöffnet in Wireshark
> programmiert mit Arduino 1.6.5
>
> Zeit um mal den Trace rauszurücken.

Ja bei mir das selbe nix was nicht sein soll, allerdings ist auf dem 
getesteten Modulen ESPBasic drauf nutzt die gleichen libs, hab es bei 
allen Modulen getestet die hier in Betrieb sind nix was sich nicht 
erklären läst, die könnten auch wenn sie wollten nicht ins Internet.

von Jo (Gast)


Lesenswert?

@ Peter II

Aber woher kommt die öffentliche IP? Die ist bei mir definitiv nirgends 
drin.(und der Code hat nur 134 Zeilen (inkl. Kommentare))

Vielleicht schaut sich c-hater den Trace ja noch mal an.

Was mich wundert ist, dass es vor dem Paket an die externe Adresse kein 
SYN gibt, sondern nur ein ACK. Vielleicht ein Bug irgendwo.


@snowfly

Danke.

von Chr. M. (snowfly)


Lesenswert?

Ich habe gerade dein .pcap entdeckt(hatte ich vorher nicht gesehen)

In deinem Netzwerk ist was faul.
Die ganzen Fehler die Wireshark anzeigt sind nicht normal.

Ich habe auf dem Gebiet auch nur begrenzt Ahnung aber normal ist das 
nicht.
Vielleicht zerwürfelt ja dein Tracegerät schon die Logdatei.

von Peter II (Gast)


Lesenswert?

Jo schrieb:
> Aber woher kommt die öffentliche IP? Die ist bei mir definitiv nirgends
> drin.(und der Code hat nur 134 Zeilen (inkl. Kommentare))

da den Router auch den MAC entfernt kann man nicht sagen was er noch dem 
Paket manipuliert.

von Petr (Gast)


Lesenswert?

Ja, eindeutig telefoniert der ESP8266 nach Hause. Scheit mir völlig 
klar.

Das ist auch der Grund dafür, warum ich nie so ein Scheiß (mit 
geschlossenem TCP/IP stack usw.) für meine Projekte nehmen würde.

von Jo (Gast)


Lesenswert?

Danke an Alle für heute.

Ich werde morgen den AP mit dem ESP8266 mal isolieren, das Port 
Mirroring am Switch aktivieren, mein Notebook anklemmen und mit 
Wireshark sniffern. Das hab' ich noch nie gemacht.

Das Resultat poste ich hier dann auch.

Nochmal. Ich hab' das hier nicht gefaked sondern mir war/ist angst und 
bange, dass der kleine Chinese Daten nach Hause funkt. Da es anderen 
Anwendern nicht so geht, bin ich nun etwas beruhigter.

Was den Router angeht: es ist halt das, was er anzeigt. Ich habe bisher 
keinen Grund den Daten zu misstrauen. Sonst hätte ich das hier nicht 
gepostet.

von JojoS (Gast)


Lesenswert?

In den Ziel IPs ist ff 3f drin, das ist eine dez 1000. Wenn du in deinem 
Programm die Zieladresse als Variable angelegt hast könnte die durch 
einen Programmfehler überschrieben worden sein. Gibt es irgendwo ein 
Array wo ein Wert = 1000 gesetzt wird?

von Peter II (Gast)


Lesenswert?

Petr schrieb:
> Das ist auch der Grund dafür, warum ich nie so ein Scheiß (mit
> geschlossenem TCP/IP stack usw.) für meine Projekte nehmen würde.

ich dachte der Quellcode ist opensource?

von JojoS (Gast)


Lesenswert?

JojoS schrieb:
> In den Ziel IPs ist ff 3f drin, das ist eine dez 1000.

Aaaaargh, 16383 natürlich. Ist ja schon spät.  Das hier noch keiner 
geschrien hat...

von Julian .. (juliank)


Lesenswert?

Ich hab mir die ESP8266.pcap auch mal angeschaut.

129.0.0.10 Schick die gleiche HTTP Anfrage wie die 1.254 und 2.149 an 
1.71
Das geht nicht da
- Der Verbindungsaufbau von 129.0.0.10 fehlt
- Dein NAT im Router das unterbunden hätte
- Das ganz innerhalb von ms passiert (129.0.0.0/17 sitzt in Cameroon)

129.0.0.20 Schick die gleiche HTTP Antwort wie die 1.71 an 1.254 und 
2.149
Das geht nicht da
- Der Verbindungsaufbau von 129.0.0.20 fehlt
- Dein NAT im Router das unterbunden hätte
- Das ganz innerhalb von ms passiert (129.0.0.0/17 sitzt in Cameroon)

Wenn die 2.149 dein PC ist, was ist dann die 1.254? Die schick die 
gleiche Anfrage immer Syncron zum PC.
Entweder dein Router Zeichnet das Paket 2x auf (dann ist die Absender 
Addr Falsch oder er macht NAT ohne den Absender Port zu ändern, beides 
unwahrscheinlich) oder das Paket wird vom ESP Gespiegelt.

Das würde auch den restlichen müll erkären.
Der ESP Sendet jedes Paket 3x:
1. Richtig
2. Flasche Absender Addr
3. Komplett vermurkst (129.0.0.0/17) & Co.

Sieht für mich aus als wenn da viele Flöhe im TCP/IP Stack sind.
Und definitiv nicht nach "nach-Hause-Telefonieren" aus.

Poste doch mal einen Aufbau von deinem Netzwerk mit IP-Adressen
und einen längeren .pcap per Monitor Port.
Dein Router Filtert nämlich ein reihe Wichtiger Informationen (MAC) aus.

von Thomas (Gast)


Lesenswert?

Jo,

in Deinem letzten pcap (22:50Uhr) fällt mir auf, dass immer wenn so ein 
"nach-hause-telefonier-Paket" kommt, unittelbar davor ein kaputtes Paket 
ist.

In diesem pcap sind das die Pakete mit den Nummern:

27/28
49/50

Ich vermute, beide Pakete sind (z.B. in Folge von Kollisionen) zerstört 
und Wireshark dekodiert diese Fragmente nun als einzelne Pakete. Der 
Inhalt ist damit natürlich sinnfrei.

Es sind auch noch mehr Pakete defekt, was den Verdacht der Kollisionen 
m.E. bestärkt.

Weiterhin gibt es einige Connection-Resets (RST-Bit gesetzt) in dem 
Trace. Dies sind Sessions, die z.B. infolge zu vieler Kollisionen 
abbrechen und neu aufgebaut werden müssen.

Die IP-Adressen 129.0.0.x sind auch fragwürdig,können jedoch auch aus 
den Kollisionsfragmenten entstehen.

Wenn meine Vermutung zutrifft, solltest Du Deine Netzwerkverkabelung 
prüfen und jede Verbindung auf dem Weg der Datenpakete auf möglichen 
Duplex-Mismatch überprüfen. Denn dann hast Du ein Problem in Deinem 
Netzwerk.

von Thomas (Gast)


Lesenswert?

Thomas schrieb:
> Ich vermute, beide Pakete sind (z.B. in Folge von Kollisionen) zerstört
> und Wireshark dekodiert diese Fragmente nun als einzelne Pakete. Der
> Inhalt ist damit natürlich sinnfrei.

Gleich nochwas dazu:

Im Paket 52 (SRC 129.0.0.10, DST 192.168.1.254) findet man in der 
Hex-Darstellung die Hex-Zeichen c0 a8 01 fe (= IP 192.168.1.254) und c0 
a8 01 47 (= IP 192.168.1.71) . Allerdings an den falschen Stellen.

Ich denke, dieses "Paket" entstand aus dem Rest eines 
Kollisionsfragmentes und dem Anfang eines regulären Paketes von 
192.168.1.254 an 192.168.1.71. In dieser Kombination würde die Anordnung 
der Bytes auch Sinn machen.

von Dieter F. (Gast)


Lesenswert?

Jo schrieb:
> Danke Jim Dieter. :-) Du bekommst den Orden für die größte Produktivität
> hier.

Herzlichen Dank :-)

https://www.youtube.com/watch?v=U-2DFOyUDAc

von Marcus (Gast)


Lesenswert?

Hast Du mehrere Module? Tritt der Effekt bei allen auf?

von Juergen O. (juergen_o)


Lesenswert?

> Ziel-IPs:
> 70 52 FF 3F
> 80 55 FF 3F
>
> Solche Zufälle Gibbs eigentlich auch nicht. Da ist entweder was kaputt,
> oder schlecht gefaked :)

Könnte auch ein nicht dereferenzierter Pointer sein (0x3FFFxxxx ist der 
RAM-Bereich im 8266).

Die Angabe der Header-Dateien helfen da nicht weiter, da das Problem in 
deinem nicht geposteten Code liegt könnte.

von Stefan F. (Gast)


Lesenswert?

Es könnte auch sein, dass dein Programmcode irgendwo fehlerhaft ist und 
das RAM falsch beschreibt oder einen Speicherüberlauf auslöst.

Da der IP Stack IMHO nicht in einem separaten geschützten Bereich läuft 
(wie man es vom PC längst gewohnt ist) können Fehlfunktionen deines 
Programms somit Folgefehler im IP Stack auslösen.

von Jo (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe (etwas später als angekündigt) nochmal einen Trace über den 
Switch gezogen. Da sind jetzt auch die MAC-Adressen drin. Geändert hat 
sich nichts.

Ich habe mich zwischenzeitlich nochmal mit dem Hinweis von Peter II 
beschäftigt. Was auffällt ist, dass der ESP8266 an die 128.85.255.63 
überhaupt keine SYN-Pakete schickt und auch kein SYN-ACK zurückerhält. 
Die 192.168.1.71 schickt nur das ACK-Paket.

@Marcus: ich habe nur ein Modul produktiv. Allerdings werde ich jetzt 
noch einen ESP8266 nachordern und den Quelltext mit Arduino 1.6.7 
nochmal kompilieren. Die 1.6.4 habe ich ohnehin nicht mehr installiert. 
Dem Hinweis von stefanus werde ich mal nachgehen. Vielleicht ist das 
Paket tatsächlich sowas wie ein Speicherüberlauf.

von Peter II (Gast)


Lesenswert?

Jo schrieb:
> Ich habe (etwas später als angekündigt) nochmal einen Trace über den
> Switch gezogen.

der sieht auch merkwürdig aus. Die Pakete an 128.85.255.63 sind defekt. 
Uns sie kommen mit dem gleichen Port von dem Paket davor.

Das ist keine sinnvolle Übertragung, entweder ist das Modul defekt oder 
dein Netzwerk läuft nicht stabil.

von Thomas (Gast)


Lesenswert?

Peter II schrieb:
> der sieht auch merkwürdig aus. Die Pakete an 128.85.255.63 sind defekt.

Meine Rede.
Wir jagen einem Phantom hinterher, welches es gar nicht gibt.

von Jo (Gast)


Lesenswert?

Ok. Danke an Alle. Ich schlage vor, wir beenden diesen Thread hier 
vorerst.

Ich habe den ESP8266 nochmal bestellt. Lieferung dauert ein paar Tage. 
Einen BH1750 habe ich noch hier. Ich werde das ganze nochmal auf dem 
Breadboard aufbauen und sehen was das nächste Modul mit meinem Code 
unter Arduino 1.6.7 macht.

Das Ergebnis werde ich hier dann posten.

von Stefan F. (Gast)


Lesenswert?

Vor Allem solltest du mal mit einem bewährten Programm testen, statt mit 
deinem eigenen.

Oder du reduzierst dein programm auf eine sehr simple Hello-World 
Variante, wo Speicherüberläufe und falsch genutzte Pointer ganz sicher 
ausgeschlossen sind.

Bevor man die Schuld in fremden Code vermutet, sollte amn immer erst den 
eigenen Code untersuchen. Denn dort steckt der Fehler (egal welcher) 
fast immer.

von Marcus (Gast)


Lesenswert?

Jo schrieb:
> Ok. Danke an Alle. Ich schlage vor, wir beenden diesen Thread hier
> vorerst.

Nicht beenden! Nur ruhen lassen. Ich möchte doch noch gerne wissen, was 
die Ursache für dieses Phänomen ist.

Marcus

von Stefan F. (Gast)


Lesenswert?

> Ich möchte doch noch gerne wissen, was
> die Ursache für dieses Phänomen ist.

Ich auch.

von Klaus (Gast)


Lesenswert?

Ich habe mal meine Glaskugel angeworfen. Das Ergebniss ist mit etwas 
Vorsicht zu genießen, das Problem ist weit von hier entfernt und 
Kugellinsen fokussieren schlecht auf große Entfernung;)

Jo schrieb:
> Der ESP8266 fungiert als Web-Server auf Port 80 und wird von einem
> kleinen Linux-Rechner regelmäßig gepollt. Dann gibt er den
> Helligkeitswert als Text aus

Jo schrieb:
> Ich habe auch eine weitere Erkenntnis: da ich den Traffic vom Sensor
> nicht draufhaben wollte, habe ich den Cron-Job der diesen triggert
> auskommentiert. Dann gabs auch kein "nach Hause telefonieren" mehr.

Peter II schrieb:
> der sieht auch merkwürdig aus. Die Pakete an 128.85.255.63 sind defekt.
> Uns sie kommen mit dem gleichen Port von dem Paket davor.

Meine Glaskugel sagt also: das Programm auf dem ESP hat einen Bug, 
möglicherweise ein Memmory-Leak oder einen anderen 
Speicherüberschreiber. Der Web-Server antwortet zwar richtig, stürzt 
dann aber ab. Dabei sondert er noch ein (oder einige) defekte Pakete ab. 
Der eingebaute Watchdog bringt ihn dann wieder zum Laufen. Da sich der 
ESP eine Menge über das Wlan im Flash merkt, ist er schnell wieder 
online. Verifizieren könnte man das, wenn man ein Terminal an die 
serielle hängt. Das könnte auch grundsätzlich beim Debuggen helfen.

Take it with a grain of Salt

MfG Klaus

von Stefan F. (Gast)


Lesenswert?

Was ist denn nun aus dem Thema geworden? Heiße Luft?

von Fl (Gast)


Lesenswert?

Hallo,

ich habe mal gelesen, dass man auf dem ESP8266 eine Funktion aktivieren 
kann, damit er automatisch auf dem Herstellerserver nach der aktuellen 
Firmware Sicht und diese ggf. auch installiert. Das würde zumindest die 
IP aus China erklären, da das Modul in China entwickelt wird.

von Jan B. (do9jhb)


Lesenswert?

Fl schrieb:
> Hallo,
>
> ich habe mal gelesen, dass man auf dem ESP8266 eine Funktion aktivieren
> kann, damit er automatisch auf dem Herstellerserver nach der aktuellen
> Firmware Sicht und diese ggf. auch installiert. Das würde zumindest die
> IP aus China erklären, da das Modul in China entwickelt wird.

Soweit ich weiß bezieht sich diese Auto-Update Funktion nur auf die 
originale AT-Firmware.
Die Arduino Firmware hat sowas meines Wissen nach nicht, weswegen ich 
mich meinen Vorpostern anschließe und einfach denke dass irgendwo ein 
Fehler im Code ist, wodurch diese Pakete auftreten...

von U. C. (Gast)


Lesenswert?

AT+CIUPDATE

von Fl (Gast)


Lesenswert?

Soweit ich mich noch erinnern kann, gibt es diese Auto-Update Funktion 
auch bei der Arduino Firmware.

von U. C. (Gast)


Lesenswert?

Nicht in dieser Form...

Aber in anderen Varianten:
https://github.com/esp8266/Arduino/blob/master/doc/ota_updates/ota_updates.md

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.