FFMPEG: 2D zu 3D in Echtzeit

Teil 2 der Linux am Dienstag Mini-Serie zum Thema „2D in 3D umwandeln“ befasst sich mit FFMPEG und den verschiedenen Möglichkeiten, die sich daraus ergeben, und da gibt es einiges 😀

FFMPEG: 2D zu 3D in Echtzeit

Wer den ersten Beitrag noch nicht gelesen hat, sollte sich den vorher durchlesen, da diverse Rahmenbedingungen wie Framerate und Algorithmus auch für FFMPEG gelten, die ich aber nicht nochmal erklären werde 😉

Bino: der 3D Videoplayer

Die grundlegende Filtertechnik

Wer mit FFMPEG arbeitet weiß um die Myriaden von Dateiargumenten in der der Konsole, daher mache ich es Euch einfach: -vf stereo3d=al:arcc 

Das ist der Stereo3D-Filter den wir allen FFMPEG Tools mitgeben können, damit wir rot-cyanblaue 3D Bilder bekommen. Das Format stereo3d=in:out könnt Ihr auch ändern, je nachdem was Ihr so machen wollt. Es gibt im Netz diverse Webseiten, die da helfen können:

https://trac.ffmpeg.org/wiki/Stereoscopic
http://underpop.online.fr/f/ffmpeg/help/stereo3d.htm.gz

Der erste Link sollte eigentlich reichen um das Prinzip zu erklären. Da wir die Angaben in allen FFMPEG-Werkzeugen benutzen können, muß man den Teil also nur einmal austüfteln.

Wenn man sich einen Film in 3D ansehen möchte, kann man dafür FFPLAY benutzen:

ffplay -vf stereo3d=al:arcc film.mp4

Da hier die soweit alles auf Anhieb funktioniert, eignet es sich hervorragend für einen NEMO/Nautilus Actionmenüeintrag, also zum Abspielen auf Klick im Dateimanager 😉

Im Bild: Nemo

Um so einen Menüeintrag zu bekommen, braucht Ihr zwei Dateien:

/home/<username>.local/share/nemo/actions/play3d.nemo_action

[Nemo Action]
Name=Play 3D Video
Comment=Spiele Videos in 3D ab.

Exec=<play3d.sh %F>

Icon-Name=soundconverter

Selection=Any
Separator=;

Extensions=m4a;mp4;avi;webm;ogg;ogv;oga;wav;mkv

und /home/<username>.local/share/nemo/actions/play3d.sh

#!/bin/bash

IN=$*

IFS=";" read -ra FILES <<< "$IN"
for i in "${FILES[@]}"; do
    ffplay -vf stereo3d=al:arcc "$i" > /dev/null
done

Aber das ist natürlich nur der Anfang 😉 Kommen wir zur Abteilung „zu kalt für den Gefrierschrank“:

Zum Coolsein gehört v4l2loopback

Wer das auf seinem Rechner noch nicht drauf hat, sollte sich das v4l2loopback-Device nachinstallieren und dann kurz rebooten, damit der Kernel das korrekt verarbeiten kann. Für Fedora geht das so: dnf -y install v4l2loopback;reboot .

Wenn der PC wieder da ist, laden wir das Modul als normaler Benutzer: modprobe v4l2loopback

Ggf. dürft Ihr das auf Eurer Installation nicht, dann benutzt sudo dafür. Der Teil der jetzt kommt ist stark individuell von Eurer WebCam abhängig und wie Euer Kernel Lust hatte, mit dem V4L2 Videokram umzugehen.

Wenn meine Versionen der Befehle bei Euch nicht direkt funktionieren, dann gibt es diverse Gründe:

die Kamera kann die Auflösung nicht => eine andere Auflösung benutzen
die Kamera kann das Bildformat ( „pixfmt“ ) nicht => einfach mal „rawvideo“ angeben, das sollten alle können.
ffmpeg kann das Videogerät nicht lesen (/dev/video0: Kein passendes Gerät gefunden) => video1 benutzen

Am besten die Fehlermeldungen sorgsam lesen, ist meistens recht einfach.

… und es werde ein 3D-Bild !

ffmpeg -f video4linux2 -input_format mjpeg -video_size 1920×1080 -r 30 -i /dev/video1 -vf stereo3d=al:arcc -framerate 30 -video_size 1920×1080 -pixel_format yuvj422p -c:v:0 rawvideo -s 1920×1080 -r 30 -f v4l2 /dev/video0

ja, richtig geraten, die WebCam liefert jetzt ein 3D Bild aus, aber nur wenn Ihr Euch auch bewegt 😀 Das Bild kann von Firefox oder Chromium ( nehmt den dafür, FF zickt noch rum ) z.b. im Rahmen einer Videokonferenz oder bei Matrixcalls verwendet werden. Ihr könnt es Euch natürlich auch per WebCam-Tool wie Camorama ansehen und mit lustigen Effekten versehen, es per OBS Streamen, was auch immer Ihr wollt \o/

Ein paar Erklärungen

-f video4linux2 -input_format mjpeg -video_size 1920×1080 -r 30 -i /dev/video1

Einlesen von einer WebCam mit dem Videocodec „mjpeg“ aka MotionJPEG mit 30 FPS und in FULLHD Auflösung. Wenn man hier kein mjpeg nimmt, bekommt man i.d.R. nur Ruckelvideo mit 5 FPS, egal was man anfordert. Falls Eure Cam das nicht kann, was wie aber wohl können wird, nehmt „rawvideo“ als Codec, das geht immer. Hinweis: 5 FPS reichen für 3D nicht!

-vf stereo3d=al:arcc

Den Teil kennt Ihr ja schon von oben.

-framerate 30 -video_size 1920×1080 -pixel_format yuvj422p -c:v:0 rawvideo -s 1920×1080 -r 30 -f v4l2 /dev/video0

Mit 30 FPS (-r) in FullHD(-video_size) als Rawvideo skaliert (-s) auf FullHD als Video4Linux2 (-f) WebCam an /dev/video0 schreiben. Ja, zweimal die Auflösung drin, einfach machen, es gibt unterschiedliche FFMPEG Versionen, so klappts am Ehesten und einer ist eh die Streaminfo für den, der die Kamera benutzen will 😉

Wie, das reicht Euch noch nicht?

Hmm… na gut, es will ja nicht jeder sein Bild in die Konferenz streamen 😀

Die FFMPEG Argumente habe ich oben in 3 Teile aufgeteilt, Teil 2 ist immer gleich, aber die Teile 1 und 3 könnt Ihr austauschen, z.B. mit …

-c:v libx264 -preset fast -pix_fmt yuv420p -s 1920×1080 -strict experimental -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -f mpegts „udp://127.0.0.1:10000?pkt_size=1316“

Ja ja, wieso OBS nutzen zum Streamen, FFMPEG kann das auch solo 😀

Um da einen TON zu bekommen, muß im ersten Teil „-f pulse -i default“ eingefügt werden, nach dem Videoteil, aber vor Teil 2. Das greift das PulseAudio Default Sink ab und kodiert es in die Tonspur ein.

Ganzen Desktop streamen…

ffmpeg -f x11grab -framerate 30 -video_size 1920×1080 -i :1.0 -f v4l2 /dev/video2 <- variabel

Als MP4 Film speichern …

-c:v libx264 -preset superfast -pix_fmt yuv420p -s 1920×1080 -strict experimental -acodec aac -ab 128000 -ar 48000 -ac 2 -f mp4 filmname.mp4

Da geht einiges, aber das coolste ist wohl die 3D Videokonferenz und jetzt Viel Spaß \o/

Hacker sein leicht gemacht – Logitech Webcam

Dieser Beitrag dreht sich um Webcams von Logitech und wie man damit filmmäßig einen auf bösen Überhacker machen kann. Hacken müssen wir dabei allerdings nichts 😉

Hacker sein leicht gemacht – Logitech Webcam

Man kennt den Spruch: „Wir haben Dich beim Porno gucken gefilmt und mailen das an alle Deine Freunde, wenn Du nicht zahlst!“  Wenn der Spruch mit der üblichen Bitcoin Forderung per Mail kommt, ist er meisten nur das Übliche: eine Scammail.

Wenn eine Webcam benutzt wird, geht i.d.R. eine kleine LED an, die anzeigt, daß die Kamera benutzt wird. Hört die Nutzung der Kamera auf, geht auch das Licht aus.

Was wäre, wenn man die LED einfach .. sagen wir mal.. „abschalten“ könnte?

Was wie die Handlung eines billigen Hackerfilms klingt, ist der Horror jedes WebCam-Besitzers: Der PC wird über den Besuch einer Webseite gehackt und die Angreifer können per WebCam alles sehen und hören ohne das der Belauschte es merkt. Mal davon abgesehen, daß man auch die aktivierte LED nicht unbedingt bemerkt, wenn man nicht direkt vor der Kamera sitzt, wäre das der SuperGAU für PC Besitzer.

Wie sieht das jetzt in der Realität aus, kann man da einfach einen PC hacken, die WebCam aktivieren, den Datenstrom abgreifen und das alles ohne das die LED angeht?

Nun, wenn man Besitzer einer Logitech WebCam C310 ist, dann geht das .. fast. Das man unsichere PCs über Browser oder untergejubelte Worddokumente, Bilder, etc. hacken kann, ist ja kein Geheimnis. Erst jüngst hat AppleMail für IPhone ja so ein geile Lücke offenbart, über die man per einfacher Email ein IPhone übernehmen konnte.

Aber auch Firefox und Chrome sind alles andere als sicher und nur weil es Open-Source ist, heißt es nicht, daß es sicherer ist. Beispiel Chromium: (CVE Nummern sind gemeldete Schwachstellen in einer internationalen Datenbank)

Name        : chromium
Version     : 81.0.4044.122

Chromium is an open-source web browser, powered by WebKit (Blink).

--------------------------------------------------------------------------------
Update Information:

Another day, another chromium update. This one fixes:  CVE-2020-6458
CVE-2020-6459 CVE-2020-6460  ----  Fix dependency issue introduced when
switching from a "shared" build to a "static" build.  ----  A new major version
of Chromium without any security bugs! Just kidding. Here's the CVE list:
CVE-2020-6454 CVE-2020-6423 CVE-2020-6455 CVE-2020-6430 CVE-2020-6456
CVE-2020-6431 CVE-2020-6433 CVE-2020-6434 CVE-2020-6435 CVE-2020-6436
CVE-2020-6437 CVE-2020-6438 CVE-2020-6439 CVE-2020-6440 CVE-2020-6441
CVE-2020-6442 CVE-2020-6443 CVE-2020-6444 CVE-2020-6445 CVE-2020-6446
CVE-2020-6447 CVE-2020-6448 CVE-2020-6432 CVE-2020-6457  Oh, and this build
switches over to a static build, so the chromium-libs and chromium-libs-media
subpackages are now obsolete, but it should be slightly better for performance.

Allen Browsern sollte man mit Addons wie NoScript oder UMatrix beibringen nur das nötigste, und das auch nur auf Anweisung des Besitzers, auszuführen.

„… fast“ meinte also, daß man auch aus der Ferne angreifbar sein muß, damit einem dies passieren kann.

Hinweis: Falls Sie dies als Nicht-Linuxer lesen sollten, das geht auch unter Windows, es wird nur ein anderes Programm benutzt.

Für unseren simulierten Hack nehmen wir mal an, daß genau so eine Lücke ausgenutzt wurde. Was kommt dann als nächstes?

Gegeben ist eine Logitech WebCam C310. Wir brauchen noch folgendes Programm auf dem PC: uvcdynctrl

sudo dnf install uvcdynctrl

Als welcher User wir das Programm ausführen, scheint nicht wichtig zu sein, so lange wir mit dem Gerät reden dürfen. Bekommen wir erst einmal heraus, ob diese Kamera überhaupt da ist:

$ lsusb

Bus 010 Device 003: ID 046d:081b Logitech, Inc. Webcam C310

Jede unterstützte Kamera erzeugt ein oder mehrere Video Devices unter /dev/ :

$ ls -la /dev/video*
crw-rw—-+ 1 root video 81, 1 3. Mai 14:09 /dev/video1
crw-rw—-+ 1 root video 81, 2 3. Mai 13:47 /dev/video2
crw-rw—-+ 1 root video 81, 3 3. Mai 14:09 /dev/video3

Welches davon zu einer Logitech Kamera gehört und folglich nutzbar ist, können wir auf zwei Wegen feststellen:

$ sudo udevadm info –query=all –name=/dev/video1
P: /devices/pci0000:00/0000:00:07.0/0000:04:00.0/usb10/10-2/10-2:1.0/video4linux/video1
N: video1
L: 0
S: v4l/by-id/usb-046d_081b_5940E5D0-video-index0
S: v4l/by-path/pci-0000:04:00.0-usb-0:2:1.0-video-index0
E: DEVPATH=/devices/pci0000:00/0000:00:07.0/0000:04:00.0/usb10/10-2/10-2:1.0/video4linux/video1
E: DEVNAME=/dev/video1
E: MAJOR=81
E: MINOR=1
E: SUBSYSTEM=video4linux
E: USEC_INITIALIZED=8845895177
E: ID_V4L_VERSION=2
E: ID_V4L_PRODUCT=UVC Camera (046d:081b)
E: ID_V4L_CAPABILITIES=:capture:
E: ID_VENDOR=046d
E: ID_VENDOR_ENC=046d
E: ID_VENDOR_ID=046d
E: ID_MODEL=081b
E: ID_MODEL_ENC=081b
E: ID_MODEL_ID=081b
E: ID_REVISION=0010
E: ID_SERIAL=046d_081b_5940E5D0
E: ID_SERIAL_SHORT=5940E5D0
E: ID_TYPE=video
E: ID_BUS=usb
E: ID_USB_INTERFACES=:0e0100:0e0200:010100:010200:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=uvcvideo
E: ID_PATH=pci-0000:04:00.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_04_00_0-usb-0_2_1_0
E: ID_FOR_SEAT=video4linux-pci-0000_04_00_0-usb-0_2_1_0
E: COLORD_DEVICE=1
E: COLORD_KIND=camera
E: DEVLINKS=/dev/v4l/by-id/usb-046d_081b_5940E5D0-video-index0 /dev/v4l/by-path/pci-0000:04:00.0-usb-0:2:1.0-video-index0
E: TAGS=:seat:uaccess:

Eine UVCVideo Kamera, so wie die Logitech C310 eine ist, ist ein starkes Indiz. Das es auch genau unsere gesuchte Kamera ist, das zeigt ein Vergleich der USB ID …

Bus 010 Device 003: ID 046d:081b Logitech, Inc. Webcam C310

… welche sich oben wiederfindet: Gotcha!

Methode 2 wäre dann unser kleines Tool einzusetzen, um sich alle WebCams auflisten zu lassen und dann vergleichen wir wieder die USB ID:

$ uvcdynctrl -l
[libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x00980001, name = ‚User Controls‘, type = 6

video1 UVC Camera (046d:081b)
Media controller device /dev/media1 doesn’t exist
ERROR: Unable to list device entities: Invalid device or device cannot be opened. (Code: 5)

Kamera gefunden, was kann die?

Wir haben jetzt also die richtige Kamera identifiziert, fragen wir mal was die Kamera so „anbietet“:

$ uvcdynctrl -d /dev/video1 -vc

Listing available controls for device /dev/video1:
Brightness
ID : 0x00000001,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 255, step size: 1 ],
Default : 128
Contrast
ID : 0x00000002,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 255, step size: 1 ],
Default : 32
Saturation
ID : 0x00000004,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 255, step size: 1 ],
Default : 32
White Balance Temperature, Auto
ID : 0x00000009,
Type : Boolean,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 1, step size: 1 ],
Default : 1
Gain
ID : 0x00000003,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 255, step size: 1 ],
Default : 0
Power Line Frequency
ID : 0x0000000d,
Type : Choice,
Flags : { CAN_READ, CAN_WRITE },
Values : { ‚Disabled'[0], ’50 Hz'[1], ’60 Hz'[2] },
Default : 2
White Balance Temperature
ID : 0x00000008,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 10000, step size: 10 ],
Default : 4000
Sharpness
ID : 0x00000007,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 255, step size: 1 ],
Default : 24
Backlight Compensation
ID : 0x0000000c,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 1, step size: 1 ],
Default : 1
Exposure, Auto
ID : 0x0000000f,
Type : Choice,
Flags : { CAN_READ, CAN_WRITE },
Values : { ‚Manual Mode'[1], ‚Aperture Priority Mode'[3] },
Default : 3
Exposure (Absolute)
ID : 0x00000011,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 1 .. 10000, step size: 1 ],
Default : 166
Exposure, Auto Priority
ID : 0x00000010,
Type : Boolean,
Flags : { CAN_READ, CAN_WRITE },
Values : [ 0 .. 1, step size: 1 ],
Default : 0
LED1 Mode
ID : 0x046d0003,
Type : Choice,
Flags : { CAN_READ, CAN_WRITE, IS_CUSTOM },
Values : { ‚Off'[0], ‚On'[1], ‚Blink'[2], ‚Auto'[3] },
Default : 3
LED1 Frequency
ID : 0x046d0004,
Type : Dword,
Flags : { CAN_READ, CAN_WRITE, IS_CUSTOM },
Values : [ 0 .. 131, step size: 1 ],
Default : 0

Kurz zur Erklärung der Auflistung, folgendes sind Optionen die wir in der Kamera ändern können, solange diese Option den FLAG „CAN_WRITE“ hat aka. Schreibrecht :

„Brightness“, „Contrast“, „Saturation“, „White Balance Temperature“, „Auto,Gain“ ,“Power Line Frequency“, „White Balance Temperature“, „Sharpness“, „Backlight Compensation“, „Exposure, Auto“, „Exposure (Absolute)“ , „Exposure, Auto Priority“,  „LED1 Mode“, „LED1 Frequency“

Schau wir uns den „LED1 Mode“ an:

LED1 Mode
ID : 0x046d0003,
Type : Choice,
Flags : { CAN_READ, CAN_WRITE, IS_CUSTOM },
Values : { ‚Off‚[0], ‚On‚[1], ‚Blink‚[2], ‚Auto‚[3] },
Default : 3

Im Normalfall steht also die LED Anzeige auf Automatik, meint, das Licht geht automatisch an und aus.

Jetzt nutzen wir diese Kontrollen

Fragen wir die Cam doch mal, welchen Zustand sie derzeit hat:

$ uvcdynctrl -d /dev/video1 -g „LED1 Mode“ 2>/dev/null
3

„3“ ist der Automatikmodus.

Einschalten der LED geht so:

$ uvcdynctrl -d /dev/video1 -s „LED1 Mode“ 1 2>/dev/null

Ausschalten geht so:

$ uvcdynctrl -d /dev/video1 -s „LED1 Mode“ 0 2>/dev/null

Wer das ausprobiert, wird feststellen, daß beim permanenten Einschalten die LED erstmal nur für einen Moment angeht. Es handelt sich bei der „Kontrolle“ um den Zustand der LED im Betriebsfall, da die WebCam aus ist, geht das Licht gleich wieder aus. Probiert das mal aus, wenn Ihr Camorama oder eine Videokonferenz laufen habt.

Das bedeutet, daß wenn Ihr die LED vor dem Aktivieren der Webcam abschaltet, bleibt die aus, auch wenn die Kamera aktiviert wird und das ist genau der Zustand den ungebetene Gäste auf Eurem PC ausnutzen möchten. Jetzt kann ein Angreifer seine Software zur Ansteuerung der Kamera natürlich gleich so schreiben, daß die LED aus bleibt, wenn er die Kamera aktiviert. Es muß dafür nicht das „uvcdynctrl“ installieren oder vorfinden. I.d.R. kann der Angreifer die Bordprogramme nicht direkt benutzen um den Inhalt der WebCam nach außen zutransportieren, da diese Programme ein Fenster öffnen um das Bild dem PC-Nutzer anzuzeigen.

Es ist aber natürlich auch möglich, sowas wie FFMPEG zu benutzen um das Bild abzugreifen und gleich zu komprimieren und an einen Server zu senden. Je weniger Software der Angreifer selbst installieren muß, desto besser für ihn, da er weniger Spuren hinterläßt.

Beweise

Jetzt kann der Typ von dem Blog ja viel behaupten, es ist an der Zeit das zu beweisen:

LED an

und abschalten:

LED aus

Das es sich hier um einen Browser handelt dürfte leicht erkennbar sein. Das Bild ist meine 1-Mann Videokonferenz auf unserer Jitsi Meet Instanz, in der man mein Handy bei der Aufnahme der LED sehen kann.

Mit „ucview“ kann man sich diese Kontrollfunktion auch live ansehen und ändern, ohne die Konsole bemühen zu müssen:

ucview Kontrollen der C310

 

Merkwürdigkeiten bei der Logitech WebCam C310

Merkwürdig ist der Fakt, daß die Kontrollen für die LED nicht beim ersten Starten der WebCam angeboten werden. Dazu muß die WebCam scheinbar ein zweites mal initialisiert werden, den Treiber neu starten hilft dabei:

sudo rmmod uvcvideo
sudo modprobe -v uvcvideo

Auf dem von mir heimtücksich infiltrierten Test-PC meiner Eltern war dies z.B. nötig 😉

Ob es sich dabei um einen Bug in der Kamera handelt oder im UCVideo Treiber von Linux, mag ich nicht beurteilen wollen. Möglich wäre jede Version oder auch gleich beides zusammen.

Meinung

Die Funktion der Kamera zum Abschalten der LED mag vielleicht in den Augen der Entwickler witzig oder sogar nützlich gewesen sein, aber aus Sicht der Privatsphäre ist das natürlich ein NO-GO. Anwendungen die die Kamera nach belieben einschalten können, ohne das der User überhaupt die Chance hat, dies zu bemerken, sind ein ernstzunehmendes Risiko. Daher sollte diese WebCam immer abgeklebt, oder besser komplett abgestöpselt sein, wenn Sie nicht benutzt werden.

Wenn der ganze Coronawahnsinn durch ist, lege ich mir definitiv eine neue Webcam ohne diese Funktion zu. Vermutlich was im 8-12 MP Bereich 😀

Coronachroniken: Wolle WebCam kaufen?? nur 799 € + Steuern

Die Braunschweiger LinuxUserGroup versucht ja Mittwochs die  sozialen Kontakte weiter zu pflegen ohne sich anzustecken. Dazu können wir den Videokonferenzserver der Firma nutzen, wenn alle könnten.

Wolle WebCam? Ganz billig, nur 799 € kalt!

Für Homeoffice braucht man Laptops, Webcams, Mäuse, Headsets und ggf. größere Monitore und Dockingstations. Da unsere LUG Freunde nun auch das eine oder andere Ausrüstungsstück benötigen, habe ich mal in örtlichen Großhandel angefragt und bekam folgendes zu hören „Hahahaha! … mur hahaha! …. omg! Ist das komisch!“ . Alles ist weg! Alles was irgendwie beweglich war, ist verkauft worden, bis auf ein Webcamkit mit dem sagenhaften Preis von 799 € netto.

Für das billigste Webcam Model „Logitech C270“ mit < 1 MPixel  liegen über 600Bestellungen vor, nur für den Bereich Braunschweig und das Model ist einfach schlecht. Meine 5 MPixel Logitech Cam mit der gleichen Auflösung hat schon ein grausames Bild, aber die mit 1 MegaPixel ist vermutlich MineCraft für WebCams.. ist ok fürn Datenschutz, weil nichts zu erkennen ist, aber vielleicht hört man noch was 🙂

Im Endeffekt bedeutet daß für unsere Meetings, das Sie auf spukhafter Fernwirkung beruhen werden 🙂  Nein, natürlich nicht 😀  „MEET JITSI“ fürs Handy kann man benutzen, da gab es auch das passende Headset mit und eine Kamera ist auch eingebaut in jedes moderne Handy! Wie war das Motto im Krieg doch gleich „Das wird schon gehen!“.