es geht um scrcpy

Heute solls um ein kleines Projekt namens „scrcpy“ gehen. Das ist jetzt kein L33t-Speak ;), sondern stand wohl mal für „screen copy“, denn genau darum geht es: Eine Bildübertragung vom Handy zum PC – Live.

„scrcpy“

Das Projekt gibt es bei GitHUB im Genymobile Repo und man muß es selbst zusammen häkeln. Das stellt natürlich eine gewisse Hürde dar, daher hier eine kleine Hilfe, was man machen muß :

Schritt 1: Buildtools installieren

Dazu bitte als Root ausführen:

Wer noch kein RPMFusion für Fedora aktiviert hat, könnte es machen:

# enable RPM fusion free
dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Ansonsten braucht Ihr nur das hier:

dnf install SDL2-devel ffms2-devel meson gcc make java

Schritt 2 – Sourcen laden

Zunächst machen wir uns mal ein neues Arbeitsverzeichnis:

[marius@eve Programme]$ mkdir scrcpy
[marius@eve Programme]$ cd scrcpy/

Dann laden wir die Sourcen von dem Programm via git herunter:

[marius@eve scrcpy]$ git clone https://github.com/Genymobile/scrcpy
Klone nach ’scrcpy‘ …
remote: Counting objects: 2441, done.
remote: Total 2441 (delta 0), reused 0 (delta 0), pack-reused 2441
Empfange Objekte: 100% (2441/2441), 539.98 KiB | 1.27 MiB/s, Fertig.
Löse Unterschiede auf: 100% (1417/1417), Fertig.

Nun brauchen wir noch den Server ( den kaputten Buildprozess für den Server überspringen wir hier, da es einen PreBuild-Server gibt, aber wir brauchen trotzdem einige Files aus dem Buildprozess):

[marius@eve scrcpy]$ wget https://github.com/Genymobile/scrcpy/releases/download/v1.3/scrcpy-server-v1.3.jar

Schritt 3 – Umgebung bauen:

[marius@eve scrcpy]$ cd scrcpy
[marius@eve scrcpy]$ meson x –buildtype release –strip -Db_lto=true
The Meson build system
Version: 0.47.1
Source dir: /home/marius/Programme/scrcpy/scrcpy
Build dir: /home/marius/Programme/scrcpy/scrcpy/x
Build type: native build
Project name: scrcpy
Project version: undefined
Native C compiler: cc (gcc 7.3.1 „cc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)“)
Build machine cpu family: x86_64
Build machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.3.12)
Native dependency libavformat found: YES 57.71.100
Native dependency libavcodec found: YES 57.89.100
Native dependency libavutil found: YES 55.58.100
Native dependency sdl2 found: YES 2.0.7
Configuring config.h using configuration
Program ./scripts/build-wrapper.sh found: YES (/home/marius/Programme/scrcpy/scrcpy/server/./scripts/build-wrapper.sh)
DEPRECATION: build_always is deprecated. Combine build_by_default and build_always_stale instead.
Build targets in project: 6
Found ninja-1.8.2 at /usr/bin/ninja
[marius@eve scrcpy]$ cd x
[marius@eve x]$ ninja
[30/31] Linking target app/scrcpy.

Wenn Ihr das hier lest:

[31/31] Generating scrcpy-server with a custom command.
FAILED: server/scrcpy-server.jar
/home/marius/Programme/scrcpy/scrcpy/server/./scripts/build-wrapper.sh ../server/. server/scrcpy-server.jar release
Downloading https://services.gradle.org/distributions/gradle-4.4-all.zip

und dann jede Menge Gradle-Schrottdownload-Meldungen erscheinen, hats mit dem eigenen Server nicht geklappt und es kommt der nächste Schritt:

Den Scheiss wieder löschen 😉

Das Ihr hier andere Pfade habt, muß ich glaube ich, nicht extra erwähnen, oder ? 😉

[marius@eve x]$ cd ..;rm -rf x
[marius@eve scrcpy]$ meson x –buildtype release –strip -Db_lto=true -Dprebuilt_server=/home/marius/Programme/scrcpy/scrcpy-server-v1.3.jar
The Meson build system
Version: 0.47.1
Source dir: /home/marius/Programme/scrcpy/scrcpy
Build dir: /home/marius/Programme/scrcpy/scrcpy/x
Build type: native build
Project name: scrcpy
Project version: undefined
Native C compiler: cc (gcc 7.3.1 „cc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)“)
Build machine cpu family: x86_64
Build machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.3.12)
Native dependency libavformat found: YES 57.71.100
Native dependency libavcodec found: YES 57.89.100
Native dependency libavutil found: YES 55.58.100
Native dependency sdl2 found: YES 2.0.7
Configuring config.h using configuration
Build targets in project: 6
Found ninja-1.8.2 at /usr/bin/ninja
[marius@eve scrcpy]$ cd x
[marius@eve x]$ ninja
[31/31] Linking target app/scrcpy.

Schritt 5 – Installieren

[marius@eve x]$ sudo ninja install
[sudo] Passwort für marius:
[0/1] Installing files.
Installing app/scrcpy to /usr/local/bin
Stripping target ‚app/scrcpy‘
Installing server/scrcpy-server.jar to /usr/local/share/scrcpy

Schritt 6 – Starten

Trommelwirbel und …

und wie man an dem Bild schon sehen, daß Ganze funktioniert nur, wenn man in den Entwicklereinstellungen des Handies das USB-Debugging erlaubt.

man sieht die Android Oberfläche mit Icons

Nun kann man, wenn man kann, mit der Maus das Handy auf dem PC fernsteuern, Eingaben machen, Programme starten, Surfen, Spielen, Videos schauen und mit SimpleScreenRecorder auch Tutorials vom Handy aufnehmen.

Wenn das böse Wenn nicht wär.

Die Sache mit dem Wenn man kann ist fies. Die Verbindung zu meinem Handy lebt nur wenige Sekunden, aber andere Handies bekommen das auch dauerhaft hin, wie Malte aus unserer LUG neulich demonstriert hat.

Es kommt also auf das Android ROM an, das auf dem Handy läuft. Wer eine Alternative sucht, kann Teamviewer für Android nutzen, das bekommt das deutlich stabiler auch auf einem Stock-ROM hin. Aber wer weiß dann schon, wer da mitliest.

Am Ende dann nicht vergessen den Gradle Kram wieder zu entfernen: rm -rf ~/.gradle

Androids K9 Mail nutzt noch TLS 1.0

Au man, man darf echt nicht nachsehen, was seine Programme so tun 🙁

K9-Mail

Das auf Android beliebte K9-Mail setzt auch gebrochene Krypto und nur als Beispiel erdachte Cipher!

2018-05-07 08:52:17 1fFa0M-0004M4-PW <= AAAAAAAAAAAAAAA H=********.dip0.t-ipconnect.de (XXXXX) [XXXXX] P=esmtpsa X=TLSv1:AES128-SHA:128 CV=no … id=1baxr95b3gdd6225t9ggj1yy.1525675936562@email.android.com

Das 146 MB große Paket enthält allen Anscheins nach nicht mal eine aktuelle SSL Implementierung. Schlimmer wäre es nur noch, wenn Sie das an Android outsourcen würden, aber wofür dann die 146 MB ? Im Programm ist nur eine „größere“ Grafik enthalten , der Rest ist pillepalle und ansonsten auch recht trivial von der Funktion her.

Für ein „Advanced Email for Android“ Programm echt enttäuschend 🙁

Mal sehen ob Sie antworten 😀

Webseite: https://k9mail.github.io/

Android – Jitsi Probleme mit der Fritz!Box beheben

Im Chaos um die VOIP Probleme der einzelnen Linuxclienten, kommt hier nun der Fix für das Passwort-vergessen-Problem von Jitsi für Android.

Das Problem

Jitsi für Android, was ja nur eine jahrealte Alphaversion ist, hat offensichtlich Probleme die Verbindung zur Fritz!Box zu halten. Normalerweise gibt es dafür den KEEP ALIVE oder die REGISTER Funktion, aber hier macht Jitsi wohl soviel falsch, daß es der Fritz!box auf den Keks geht und es Jitsi rauswirft. Da sich Jitsi jetzt nicht mehr anmelden kann, kommt es zu einer Rückfrage bei der Jitsi das eingegebene Passwort, das zu allem Überfluss auch nicht gespeichert war, vergißt. Als Folge ist man laufend auf der Fritz!Box gesperrt, und muß dauernd das Passwort eingeben.

Da mich das an die Probleme mit SIPGate errinnert hat, habe ich da den gleichen Fix versucht: die Connection auf TCP umstellen. Nur dazu braucht man einen Proxyserver :)Also fragen wir bei AVM nach, was dort eingetragen werden muß und ob das überhaupt klappen wird.

Der AVM Support

Hier die erste Anfrage :

Detaillierte Beschreibung:
Guten Tag,die Frage ist allgemeiner Natur, da die Jitsi Androidversion immer wieder die Anbindung zum Server verliert und nach dem Passwort fragt.Da ich ähnliche Probleme mit Sipgate hatte und dort der Wechsel auf TCP via Proxyservereinstellung die Probleme behoben hat, wollte ich gern wissen, ob das mit einer FritzBox ähnlich gehen würde. Auch wenn das in einem lokalen Netz eher komisch klingt 😀mit freundlichen Grüßen,
….

Die von AVM kommende Antwort war schon etwas merkwürdig, aber fairerweise muß man ihm zugestehen, daß nicht jeder Jitsi kennen muß, nur weil er bei AVM arbeitet:

….
vielen Dank für Ihre Anfrage an den AVM Support.Leider muss ich gestehen, dass ich Ihr Anliegen anhand Ihrer Informationen noch nicht vollumfänglich verstanden habe. Für die weitere Analyse benötigen wir umfangreichere Informationen.Bitte beantworten Sie mir folgende Fragen:
An was für einem Internetanschluss von welchem Anbieter setzen Sie die FRITZ!Box ein (z.B. Telekom DSL 16 Mbit/s)?

  • Welche Geräte (z.B. Computer, NAS-System, Hub/Switch) verwenden Sie? Geben Sie Hersteller und Modellnamen an.
  • Wie ist das Android-Gerät mit der FRITZ!Box verbunden?
  • Was für ein „Server“ wird verwendet?
  • Welche Protokolle werden verwendet?
  • Was soll das „lokale Netz“ leisten?
  • Wie sieht Ihr Wunschszenario aus?
  • Wie äußert sich das Fehlerbild in Ihrer bisherigen Konfiguration?

    Senden Sie mir bitte anschließend die Fehlerbeschreibung und das ZIP-Archiv mit den Support-Daten zu.

Wir werden die Support-Daten nach Erhalt detailliert analysieren und Ihnen anschließend eine Rückantwort zukommen lassen.

Bitte beachten Sie, dass dieser Prozess eine gewisse Dauer in Anspruch nimmt.
Ich wünsche Ihnen schon jetzt einen guten Start ins Wochenende.

Freundliche Grüße aus Berlin
….

Ich mußte dem Mitarbeiter Recht geben, er hatte es nicht verstanden, also beschrieb ich es etwas sehr eindeutig :

Fritzbox -> wlan -> android handy -> Software: jitsi android per SIP > fritzbox

Ich möchte eigentlich nur wissen, ob es für die SIP Anbindung zur Fritzbox eine TCP Option auf der Box gibt und wenn ja, was man(wenn überhaupt) als Proxyserver eingeben muß.

Sehr Ihr da irgendwo die Erwähnung der FritzPhone-App ? Der Mitarbeiter wohl schon :

vielen Dank für Ihre Geduld.
Die Anmeldung der App an der FRITZ!Box ist technisch möglich. Hierzu muss eine IP-Nebenstelle innerhalb der FRITZ!Box angelegt werden.
Die Eintragung eines Proxys ist möglich, aber nicht erforderlich.

Wenn der Support ratlos ist

Wir halten fest: Problem nicht verstanden und Anfrage nicht richtig gelesen und damit bei der Antwort Thema verfehlt. Spätestens bei dem Stichwort SIP hätte es klingeln müssen.

In dem Fall hilft also nur ausprobieren und genau das tat ich 🙂

Lösung

Jitsi starten, dann ins Menü und die ACCOUNT SETTINGS aufmachen. Dann den Fritzboxeintrag auswählen und dessen Settings öffnen. Und kommt nach einigen Scrollen ein Schiebeschalter unter, der bei der automatischen Proxykonfiguration steht. Den abschalten und dann das „Proxy“ aka. die Fritzbox selbst angeben:

Da es die heimische Fritz!box ist, können wir hier natürlich die IP der Box eingeben und den Port 5060 benutzen. Als bevorzugten Transport dann wieder TCP auswählen und das Problem ist scheinbar erledigt. Denn, wenn Ihr diesen Beitrag lest, gab es eine Woche lang keine Probleme mehr und damit auch keinen Grund, den Beitrag zu löschen 😉 Telefonieren geht mit den Einstellungen auch noch, also scheint das so zu laufen.

Android: FireFox und das WiFi-Tickling

Und auch heute wieder ein Beitrag aus der Kategorie „Niemals genauer hinschauen“ :

Wie im Beitrag gestern über Tastatureingaben, die an Suchmaschinen geschickt werden, habe ich auch heute wieder was aus meinem neuesten Projekt für Euch. Euer lieber Firefox bombardiert das Gateway mit scheinbar unsinnigen Paketen:

16:05:52.958119 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:52.973897 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:52.990415 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.018183 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.023820 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.040692 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.058932 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.075325 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.091926 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.108330 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.124708 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0
16:05:53.141359 IP 192.168.20.3.59077 > 1.0.0.0.4886: UDP, length 0

In einem Bugreport an Firefox wird das genauer geschildert:

FireFox Android 5.1

FireFox Android 5.1

If you’re on wifi and an IPv4 DHCP network we will send 0 length UDP packets at port 4886 of your gateway at the default rate of 60hz for 400ms from the start of the transaction in an attempt to improve RTT during the critical early phases. I call this „tickle time“.

Nur so ganz stimmt das nicht, denn 1.0.0.0 gehört nicht meinem Router, sondern ist den Arpa-Laps zugeordnet und auch an sich eher nicht routbar, genau wie 10.0.0.1/8 und ähnliche private Netzwerke.

RTT steht dann für RoundTripTime und der Sinn des Ganzen ist, daß das Antwortverhalten vom WLAN Router verbessert wird, weil er sieht, daß da „massiv“ Pakete kommen und er die echten Pakete dann schneller routet, weil die ja wichtig sind.

Hier zu merken ist: Das macht nur Firefox so, ergo: sieht man son Traffic, weiß man, es ist ein Android Phone mit FireFox, der grade aktiv genutzt wird. Das wir das noch brauchen werden, werdet Ihr bald sehen 🙂

mehr dazu:  https://bugzilla.mozilla.org/show_bug.cgi?id=888268

Android: Firefox übermittelt jede Tasteneingabe

Mein neuestes Projekt, die mobile Sicherheit von Handies ergründen, hat schon seinen ersten Treffer geliefert.

Zu meinem Erstaunen übertrug Firefox jede Tastatureingabe bei der Eingabe einer URL an einen dubiosen Server ohne Namen. Wie sich rausstellte, werden dadurch die Suchvorschläge erzeugt, auch wenn man URLs eintippt.

Das ist natürlich grade bei privaten Domains oder Urls mit Parametern ein Problem, weil irgendein Server das natürlich zusammensetzen kann. Ein eigenes Suchfeld, wie beim Desktopbrowser wäre die Lösung, aber da brauchen wir nicht drauf hoffen. Mir ist natürlich auch klar, daß der Platz auf einem Handy Display begrenzt ist, aber schön wärs, wenn der Datenschutz zuerst käme, man es also einschalten müßte.

Wer das nicht will, kann das in den Einstellungen zu Suchmaschinen abschalten.