Forum: Mikrocontroller und Digitale Elektronik Zugriff auf drahtloses Wifi Microscope (Ohrwachsentferner)


von Tim  . (cpldcpu)


Angehängte Dateien:

Lesenswert?

Aktuell gibt es, als "Ohrwachsentferner" getarnt, sehr günstige und 
einigermassen brauchbare Mikroskope, die das Bild per Wifi auf eine 
Handapp übertragen. Dieses sind auch erstaunlich gut zur Inspektion von 
PCBs geeignet.

(Beispiel: https://www.ebay.de/itm/234987342646 uvm - kein afilliate 
link!)

Öffnen lässt sich das Device nicht so leicht, aber interessanterweise 
habe ich ein FCC tear down gefunden (Anhang). Neben einem Camera/Wifi 
SOC und Charger gibt es auch noch einen 3-Achsen Beschleunigungssensor, 
mit dem Das Bild automatisch ausgerichtet wird.

So nun, zu meiner Frage:

Ich würde das Bild gerne auf meinen PC übertragen. Das Device stellt 
einen lokalen Wifi AP zur verfügung, über den sich das Smartphone 
verbindet. Mit diesem kann auch mich auch mit meinem PC verbinden.

Es wird eine TCP-Addresse vergeben, allerdings kann ich keinerlei offene 
Ports finden.

Hat jemand eine Idee, wie man hier weiter vorgehen könnte? Ich finde im 
Netzt leider kaum Beispiele, solche devices zu "hacken". Direct-Wifi 
cameras gibt es ja eigentlich zuhauf...

: Bearbeitet durch User
von Kilo S. (kilo_s)


Lesenswert?

Tim  . schrieb:
> Hat jemand eine Idee, wie man hier weiter vorgehen könnte?

Mit wireshark analysieren.

Ich gehe davon aus das die App das Gerät "aufweckt" und von dort aus 
einen Videostream bekommt.
Also kann es auch nötig sein einen MITM zu installieren und die Anfrage 
der App an die Kamera mit zu schneiden.

von Peter N. (alv)


Lesenswert?

Mal probieren, ob der VLC-Player da rankommt...

von Kilo S. (kilo_s)


Lesenswert?

Peter N. schrieb:
> Mal probieren, ob der VLC-Player da rankommt...

Das ist der Plan. ;-)
Allerdings vermute ich, es fehlt noch eine Initialisierung.

Wenn nicht, wäre es um so einfacher.
Mit Wireshark beobachten, Adresse abschreiben und VLC damit füttern.

von Tim  . (cpldcpu)


Lesenswert?

hm...

Die app greift per UDP auf port 8800 zu. Leider Antwortet die Kamera 
nicht, während der Datenlogger aktiv ist. Die Datenpakete sind alle 
gleich und werden von Wireshark nicht als existierendes Protokoll 
erkannt.

0000   45 00 00 20 cf 68 40 00 40 11 49 e2 0a d7 ad 01
0010   c0 a8 a9 01 bf fe 22 60 00 0c 08 f4 ef 00 04 00

Per RTP oder RTSP mit VLC auf Port 8800 zuzugreifen funktioniert leider 
auch nicht.

: Bearbeitet durch User
von Tim  . (cpldcpu)


Angehängte Dateien:

Lesenswert?

Hier übrigens ein Beispielbild. Die Handyapp scheint nur 640x360 zu 
speichern, der Sensor wird aber vermutlich VGA können.

von Jack V. (jackv)


Lesenswert?

Tim  . schrieb:
> Dieses sind auch erstaunlich gut zur Inspektion von
> PCBs geeignet.

Tim  . schrieb:
> Hier übrigens ein Beispielbild.

Naja gut – da macht ’n durchschnittliches Telephon mindestens 
gleichwertige, wenn nicht bessere Bilder ;)

von Tim  . (cpldcpu)


Lesenswert?

Jack V. schrieb:
> Naja gut – da macht ’n durchschnittliches Telephon mindestens
> gleichwertige, wenn nicht bessere Bilder ;)

Das kostet aber mehr als 8 EUR und deutlich ungeegneiter in der 
Handhabung.

von Stefan F. (Gast)


Lesenswert?

So etwas gibt es doch schon lange mit USB Anschluss:

https://www.amazon.de/USB-Endoskop-OTG-Telefon-Boreskop-wasserdichte-Inspektion-Snake-Kamera/dp/B09TP7SC5Z 
(12,48€)

https://www.aliexpress.com/item/1005005904994274.html (4,70€)

Ich habe so eins, damit komme ich sehr gut zurecht (zum SMD Platinen 
kontrollieren):
https://de.aliexpress.com/item/4000965179949.html

von Jack V. (jackv)


Lesenswert?

Tim  . schrieb:
> Das kostet aber mehr als 8 EUR und deutlich ungeegneiter in der
> Handhabung.

Die Kosten relativieren sich, da einerseits ja sowieso die meisten so 
ein Gerät haben, und andererseits, weil das von dir gezeigte Gerät 
ebenfalls ein Telephon oder Tablet benötigt.

Was die Handhabung angeht, hängt’s wohl von den Umständen ab. Wenn ich 
häufiger unzugängliche Ecken photographisch aufnehmen wollte, würde ich 
mir ein „richtiges“ Endoskop holen.

von Tim  . (cpldcpu)


Lesenswert?

Stefan F. schrieb:
> Ich habe so eins, damit komme ich sehr gut zurecht (zum SMD Platinen
> kontrollieren):
> https://de.aliexpress.com/item/4000965179949.html

Ja, so eins habe ich auch. Das Kabel stört aber schon und es ist 
deutlich größer.

Generell fände ich es interessant, außerhalb von den mitgelieferten Apps 
auf die Kamerastreams dieser Wifi-cams zugreifen zu können. Die sind mir 
schon an vielen Stellen begegnet: Drohnen,  CCTV, usw...

von Vanye R. (vanye_rijan)


Lesenswert?

Wie lange haelt denn da der Akku? Das Teil ist ja relativ
klein und ein kontinuierlicher Videostream ueber Wlan wird
schon einiges an Leistung brauchen.

Vanye

von Ich A. (alopecosa)


Lesenswert?

Tim  . schrieb:
> aber interessanterweise
> habe ich ein FCC tear down gefunden (Anhang).

Wär natürlich fein gewesen nicht einfach den FCC Report anzuhängen 
sondern einfach einen Link zur FCCID zu posten.

Aber gut...

von Chris S. (schris)


Lesenswert?

Man muss ffmpeg patchen damit es geht, da der. Stream nicht Normgerecht 
ist. Es lassen sich 4 Auflösungen einstellen, die mentionierte ist die 
kleinste und Default. Einfach nach dem Patch g00glen.

von Daniel G. (denial)


Lesenswert?

Mein Google-fu hat das hier zutage gefördert:
https://github.com/SeanPesce/Suear-Web-Viewer
Nix mit FFmpeg patchen.

Man beachte, dass die README ein zweites Projekt für Kameras eines 
anderen Herstellers nennt.

Die Kamera mit Kabel habe ich in der Variante mit 5,5mm Durchmesser. Für 
meinen Geschmack ist der Fokus dieser Kamera ungünstig gewählt. Am 
schärfsten ist sie auf 2cm Entfernung.

Beitrag #7484419 wurde vom Autor gelöscht.
von Stefan F. (Gast)


Lesenswert?

Daniel G. schrieb:
> Am schärfsten ist sie auf 2cm Entfernung.

Ist bei meiner auch so. Deswegen habe ich mit Tesafilm ein Streichholz 
als Abstandshalter dran geklebt. Es ragt ungefähr 2 Zentimeter nach 
vorne heraus.

Das Streichholz hilft mir, die Kamera im richtigen Abstand ruhig zu 
halten. Dennoch kann ich sie seitlich hin und her schwenken, um 
Lötstellen aus unterschiedlichen Blickwinkeln zu betrachten.

von Tim  . (cpldcpu)


Lesenswert?

Chris S. schrieb:
> Man muss ffmpeg patchen damit es geht, da der. Stream nicht Normgerecht
> ist. Es lassen sich 4 Auflösungen einstellen, die mentionierte ist die
> kleinste und Default. Einfach nach dem Patch g00glen.

Hast Du den link zufällig so einfach lässt sich das nicht finden.

Daniel G. schrieb:
> Mein Google-fu hat das hier zutage gefördert:
> https://github.com/SeanPesce/Suear-Web-Viewer
> Nix mit FFmpeg patchen.

Super, sehr interessant. Leider scheint es sich bei meiner Kamera um ein 
Modell zu handeln, welches dort nicht aufgelistet ist (sieht auch 
nächster post).

von Tim  . (cpldcpu)


Lesenswert?

Inzwischen ist es mir gelungen, die Kommunikation mit Hilfe von 
airodump-ng mitzuschneiden. (Hat ewig gedauert, da die Software auf 
einem RPI400 nicht funktioniert hat, dafür aber auf einem RPI3 mit dem 
gleichen USB WLAN-Adapter?!?)

Das Kommunikationsprotokoll ist ähnlich zu denen aus dem github repo 
oben, leider aber trotzdem nicht ganz kompatibel.

Der Stream wird durch ein UDP-Paket mit dem Inhalt 0xef000400 an den 
Port 8800 initiert.
1
echo -n -e \\xef\\x00\\x04\\x00 >/dev/udp/192.168.169.1/8800

Danach sendet die Kamera einige Frames. Das Format ist noch nicht ganz 
offensichtlich.

Hier der Anfang der Payload des ersten Packets:
1
0000  00 00 00 00 01 00 00 00  09 00 00 00 73 23 00 00   ········ ····s#··
2
0010  80 02 68 01 19 00 02 00  00 00 00 00 33 40 0b 40   ··h····· ····3@·@
3
0020  0a 05 17 01 40 a4 31 c2  81 85 21 05 31 8b 48 02   ····@·1· ··!·1·H·
4
0030  80 0a 00 4a 00 28 10 50  30 a0 41 40 09 40 c2 80   ···J·(·P 0·A@·@··
5
0040  12 80 10 d0 02 50 02 1a  04 44 e3 83 4d 12 ca ed   ·····P·· ·D··M···
6
0050  d6 b5 44 34 25 31 12 46  d8 6a 68 19 a7 6b 2e 70   ··D4%1·F ·jh··k.p
7
0060  2a d1 26 94 6d 91 53 24  04 95 03 0a 00 28 00 a0   *·&·m·S$ ·····(··
8
0070  02 80 0a 00 28 00 a0 02  80 0a 00 28 00 a0 02 80   ····(··· ···(····
9
0080  0a 00 28 00 a0 02 80 0a  00 28 00 a0 02 80 0a 00   ··(····· ·(······
10
0090  28 00 a0 02 80 0a 00 28  00 a0 02 80 0a 00 28 00   (······( ······(·
11
00A0  a0 02 80 0a 00 28 00 a0  02 80 0a 00 28 11 97 74   ·····(·· ····(··t
12
00B0  31 3b 55 c8 68 ae e3 22  a0 b2 a4 83 0d 4d 10 c8   1;U·h··" ·····M··
13
00C0  cd 02 12 98 05 00 28 a4  04 8b 48 b4 3c 0a 92 85   ······(· ··H·<···

Ich werde mal schauen, ob sich die Python-Scripte aus dem Github oben 
anpassen lassen.

: Bearbeitet durch User
von Daniel G. (denial)


Lesenswert?

Hm, die Strings in der libbl_vii_jni.so der Android App lassen mich 
vermuten, dass die NE3 Kamera headerlose JPEGs schickt. JPEG in RTP 
spart sich auch die Quantisierungstabellen zu übertragen, wenn ein 
Quantisierer von 1 bis 99 ausgewählt wird.

Es gibt in der Datei 6 dynamische Symbole der Form 
jpeg_header_640x360_Q<Zahl> mit <Zahl> = 5, 10, 25, 50, 75 und 100. Und 
ja, bei jedem dieser Symbole liegen die ersten 605 Bytes eines 640x360 
JPEG Bilds.

von Tim  . (cpldcpu)


Lesenswert?

Daniel G. schrieb:
> Hm, die Strings in der libbl_vii_jni.so der Android App lassen mich
> vermuten, dass die NE3 Kamera headerlose JPEGs schickt. JPEG in RTP
> spart sich auch die Quantisierungstabellen zu übertragen, wenn ein
> Quantisierer von 1 bis 99 ausgewählt wird.

Das ist allerdings sehr interessant. Ich hatte die App schon 
decompiliert und war ziemlich verwundert, keinerlei Referenzen zu Port 
8800 zu finden. In der App gibt es auch noch Hinweise auf mehrere 
Streaming-Bibiliotheken, die mich ziemlich verwirrt haben.

Die von Dir gefundete library scheint aber genaue die richtige zu sein. 
Es gibt auch einen String mit "8800" - der Portnummer... Time for 
Ghidra...

: Bearbeitet durch User
von Tim  . (cpldcpu)


Angehängte Dateien:

Lesenswert?

Ich bin ein wenig weiter gekommen. Es scheint sich tatsächlich um einen 
MJPEG RTP Stream zu handeln, leider in einem etwas anderen Format als 
die "Suaer" devices oben. Ein paar Felder lassen sich in den Headern 
indentifizieren (siehe Bild).

Die von Daniel gefundenen JPG-Header passen in das Gesamtbild. Leider 
ist noch nicht klar, welches Feld in den Headers die Qualität auswählt. 
Ich werde mal versuchen, ein komplettes JPEG Bild zusammen zu setzen.

Ghidra decompiliert auch die Bereiche mit den Headern. Eine Funktion, 
die die JPEG-Bilder wieder assembliert habe ich noch nicht 
identifizieren können. Leider sind nicht sehr viele Symbole in der 
Library (libbl_vii_jni.so) vorhanden.

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.