Captchas für Signal Messenger abfangen und verarbeiten

Begonnen von Adimarantis, 29 August 2021, 23:00:27

Vorheriges Thema - Nächstes Thema

Adimarantis

Hallo,

Ich erweitere gerade SignalBot darum, dass man die ganze Device Registrierung aus FHEM heraus machen kann, was das Installationscript auf reine Installation beschränken würde und damit bessere Vorraussetzungen schaffen würde es als offizelles Modul zu verteilen. Seit signal-cli 0.8.5 wird das nach meiner Diskussion mit dem Autor mehr oder weniger unterstützt (einen kleinen Pull Request brauche ich wohl noch - habe aber noch nicht alles implementiert, vielleicht brauche ich noch was)

Jetzt schützt Signal die Registrierung einer Telefonnummer mit einem Captcha (irgendwie verständlich - man könnte sonst automatisiert Telefonterror betreiben - besonders mit der Voice Registrierung).
Für die Registrierung außerhalb von der App ist das aber extrem lästig und super umständlich (siehe Beschreibung im SignalBot Wiki).
Kennt sich irgend jemand mit so Web/Browser Geschichten besser aus und hat eine Idee wie man das verbessern kann.
Mir würde ja schon reichen, wenn der Captcha String irgendwo angezeigt würde und man ihn bequem per Copy&Paste holen kann - die Kür wäre natürlich wenn man das direkt nach FHEM zurückführen könnte.

Letztendlich wird diese Seite aufgerufen (hab ich jetzt einfach mal mit GetFileFromURL("https://signalcaptchas.org/registration/generate.html"); geholt):
<html>
<head>
<script>var clicky_site_ids = clicky_site_ids || []; clicky_site_ids.push(101195272);</script>
<script async src="//static.getclicky.com/js"></script>
</head>
<body>

<script src="https://www.google.com/recaptcha/api.js"></script>

<div class="g-recaptcha"
     data-sitekey="6LedYI0UAAAAAMt8HLj4s-_2M_nYOhWMMFRGYHgY"
     data-callback="onToken"
     data-size="invisible">
</div>

<script>

function onToken(token) {
  window.location = "signalcaptcha://" + token;
}

window.onload = function(e) {
  grecaptcha.execute();
}
</script>
</body>
</html>


Das Problem dürfte sein, dass hier Javascript aufgerufen wird.
grecaptcha.execute();
überprüft dann irgendwas und ruft wohl
die "onToken" Methode auf.

Wenn die Signal App das macht, hat sie wohl eine Art handler für "signalcaptcha://" installiert, und bekommt damit das token geliefert.
Wie installiert man so einen handler? Geht das aus einem Program wie FHEMWeb heraus oder muss der Anwender da eine Software im jeweiligen Browser installieren?

Mein Traum wäre sowas wie:
Ich zeige in FHEMWeb den link zum Draufklicken an (oder mache gleich ein redirect), also
https://signalcaptchas.org/registration/generate.html
Der Anwender landet kurz auf der Captcha Seite (und muss da normalerweise gar nix machen oder eben ggf. ein Captcha lösen).
Wenn dann das Token über "signalcaptcha://" zurückkommt, dann fängt das FHEMWeb irgendwie ab und speist es in mein Modul und ich rufe einfach die entsprechende Dbus API auf um die Registrierung mit Captcha abzuschliessen.

Das Token irgendwie anzuzeigen (zusammen mit einer Anleitung wo das copy&paste hin muss) wäre aber wohl auch ok

Ist irgendwas davon realisierbar?

Danke & Gruß,
Jörg

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Ich habe inzwischen über das Forum von signal-cli eine recht praktikable Lösung für Anwender gefunden die FHEM von Windows aus bedienen (FHEM läuft natürlich unter Linux da ich aktuell im Prinzip nur Debian basierte System unterstütze):

Wenn man folgendes in die Registry einträgt:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\signalcaptcha]
@="URL:signalcaptcha"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\signalcaptcha\shell]

[HKEY_CLASSES_ROOT\signalcaptcha\shell\open]

[HKEY_CLASSES_ROOT\signalcaptcha\shell\open\command]
@="powershell.exe Start-Process -FilePath powershell.exe Start-Process -FilePath http://x.x.x.x:8083/fhem?cmd=set%%20SignalBot%%20captcha%%20%1"

landet das Captcha automatisch in FHEM (nach kurzem OK zum starten der Powershell).

Da kann ich mir jetzt vorstellen die .reg Datei dynamisch zu generieren (IP, Devicename) und als Download direkt in FHEMWEB anzubieten.

Weiss jemand ob es so einen Mechanismus auch unter Linux gibt?

Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)