Jump to content

Lua-Script bei Telegram CLI: Gesendeten Text an Script übergeben

Empfohlene Beiträge

Hallo,

ich versuche gerade Telegram CLI auf meinem Pi aufzusetzen. Man hat da die Möglichkeit über den Android-Clienten Nachrichten an sich selbst zu senden und darüber dann auf dem Pi bestimmte Aktionen auszulösen. Dafür wird Lua genutzt, wovon ich aber wenig Ahnung habe. Das hier läuft erstmal problemlos:

function on_msg_receive (msg)
        if msg.out then
                return
        end
        if (string.find(msg.text, 'text')) then
                        os.execute('/home/pi/test')
        end
end

Wenn eine Nachricht den Text 'text' enthält wird ein Script gestartet. Ich möchte nun die gesendeten Text an das Script anhängen und an das Script übergeben. Mit folgender Zeile kann ich mir einfach nochmal den gleichen Text den ich gesendet hab zusenden lassen:

send_msg (msg.from.print_name, msg.text , ok_cb, false)

Der entscheidende Teil ist hier 'msg.text'. Wenn ich aber einfach 'msg.text' hinten an das Script anhänge, verweigert Telegram CLI den Start mit dem Lua-Script.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nennt sich auch "string concatenation", also das Zusammenfügen von Strings (siehe z.B. https://www.lua.org/pil/3.4.html ).

Was Du allerdings vermutlich noch unbedingt überprüfen solltest:

  • Wurde os.execute überlagert? (es ist je nach LUA-Integration möglich, bestimmte Funktionen und anderes zu überschreiben, um damit z.B. kritische Aktionen zu verhindern)
  • Ist es möglich mit os.execute mehrere Befehle nacheinander auszuführen (wie auf der normalen Shell)? Damit kann dann unter Umständen, ähnlich zu einer fortgeschrittenen SQL-Injection, schädlicher Code ausgeführt werden (siehe z.B. https://www.owasp.org/index.php/Command_Injection )
  • Kann man auch die Verzeichnisstruktur verlassen und zum Beispiel Dateien in anderen Ordnern ausführen oder läuft das Ganze bereits in einer Sandbox ab?
  • Welcher Benutzer wird für die Ausführung verwendet? (wegen Rechten und Zugriff auf sensible Dateien)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich bin derzeit noch dabei das ganze überhaupt zum laufen zu bringen. Wenn das geschafft ist, geh ich ans Feintuning.

Ist es möglich auch Platzhalter als String anzugeben? Bei

if (string.find(msg.text, 'text')) then

wird das Skript ja ausgeführt, wenn 'text' enthalten ist. Könnte man das so abändern, dass es ausgeführt wird wenn 'text' am Ende steht, also so wie '*text'? Also irgendetwas davor kommen kann (aber nicht muss), aber nichts danach kommen darf? Hab das mal mit Regex versucht

if msg.text=='[0-9]text') then

und als Text '1text' gesendet. Wurde NICHT gefunden.

bearbeitet von occi23

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Scheinbar geht es so:
os.execute("/home/pi/test " .. msg.text)

 

Bitte prüf noch ob os.execute 0 zurück gibt, solange dein pi/test auch irgendwelche Statuscodes zurück gibt. Dann weisst du ob was fehlerhaftes passiert ist

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung