Seite 1 von 1
Subprocess und GPG
Verfasst: Mittwoch 31. Juli 2013, 17:23
von JohnDoe
Hi, weiß jemand wie ich bei Subprocess ein Passwort an das Programm gpg übergeben kann?
Code ist folgender:
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import subprocess
def main():
fin = 'test.txt'
fout = 'test.enc'
pw = 'test'
args = ['gpg', '--symmetric', '--cipher-algo', cipher_algo, '--output', fout, fin])
p = subprocess.Popen(args)
if __name__ == '__main__':
main()
Führe ich das Skript so wie es dasteht aus, so fragt mich der gpg-agent nach dem Passwort zum Verschlüsseln. Dieses will ich allerdings als Parameter übergeben.
Mein erster Gedanke war innerhalb von Popen() die Variable shell auf True zu setzen, dann funktioniert aber nichts mehr so, wie ich es erwarte:
Code: Alles auswählen
$ gpg: Auf geht's - Botschaft eintippen ...
gpg: [stdin]: read error: Eingabe-/Ausgabefehler
gpg: processing message failed: Unbekannter Systemfehler
^C
$
Ich blick da im Moment überhaupt nicht durch, vielleicht kann mir jemand auf die Sprünge helfen. Oder mir einen Weg mittels gpgme oder python-gnupg zeigen (Wobei python-gnupg nicht so einfach funktionieren wird, hab das in einem anderen Thread angesprochen, leider funktioniert der darin von mir verlinkte Patch nicht [man sollte solche Patches immer erst testen bevor man freudig in die Luft springt])
mfg
EDIT: Betriebssystem ist ein up-to-date Archlinux. Sollte aber generell mit jeder Linux-Distribution gehen.
Re: Subprocess und GPG
Verfasst: Mittwoch 31. Juli 2013, 17:41
von lunar
@JohnDoe Mit "subprocess" geht das wahrscheinlich gar nicht, da "gpg" das Passwort unter Umgehung der Standardeingabe einfach direkt vom Terminal liest (u.a. um die Zeichen dabei auszublenden). Du wirst "pexpect" nutzen müssen.
Re: Subprocess und GPG
Verfasst: Mittwoch 31. Juli 2013, 17:50
von EyDu
Naja, es geht wohl schon, wenn man sich mal die Ausgabe von ``man gpg`` anschaut. Dort gibt es zumindest eine passphrase-Option im Abschnitt "Doing things one usually doesn't want to do."
Re: Subprocess und GPG
Verfasst: Donnerstag 1. August 2013, 14:43
von JohnDoe
lunar hat geschrieben:@JohnDoe Mit "subprocess" geht das wahrscheinlich gar nicht, da "gpg" das Passwort unter Umgehung der Standardeingabe einfach direkt vom Terminal liest (u.a. um die Zeichen dabei auszublenden). Du wirst "pexpect" nutzen müssen.
Nicht direkt, python-gnupg macht das auch über subprocess. Aber frag mich nicht wie. Hätte ich den Code verstanden würde ich hier ja nicht um Hilfe bitten
EyDu hat geschrieben:Naja, es geht wohl schon, wenn man sich mal die Ausgabe von ``man gpg`` anschaut. Dort gibt es zumindest eine passphrase-Option im Abschnitt "Doing things one usually doesn't want to do."
Mist, ich hätte doch ganz bis nach unten scrollen sollen. Danke.
Mal sehen obs klappt.
mfg
Re: Subprocess und GPG
Verfasst: Donnerstag 1. August 2013, 15:45
von cofi
Nun, wenn es dich nicht stoert, dass dann jeder der zb `ps aux` aufruft, das Passwort ablesen kann - das ist auch der Grund (oder mit ein Grund) warum das in dem Abschnitt steht. Haetten man pages <blink> Tags: Das wuerde blinken.
Re: Subprocess und GPG
Verfasst: Donnerstag 1. August 2013, 21:53
von lunar
EyDu hat geschrieben:Naja, es geht wohl schon, wenn man sich mal die Ausgabe von ``man gpg`` anschaut. Dort gibt es zumindest eine passphrase-Option im Abschnitt "Doing things one usually doesn't want to do."
Nun, es gibt einen Grund, warum ich diese Möglichkeit
nicht erwähnt habe…
Re: Subprocess und GPG
Verfasst: Donnerstag 1. August 2013, 22:56
von EyDu
lunar hat geschrieben:Nun, es gibt einen Grund, warum ich diese Möglichkeit nicht erwähnt habe…
Davon bin ich ausgegangen, deshalb habe ich den Namen des Abschnitts dazu genannt und nicht einfach die Option in den Raum geworfen. Immerhin darf jeder selbst entscheiden, ob er sich in den Fuß schießen will oder nicht.
Re: Subprocess und GPG
Verfasst: Freitag 2. August 2013, 12:54
von JohnDoe
cofi hat geschrieben:Nun, wenn es dich nicht stoert, dass dann jeder der zb `ps aux` aufruft, das Passwort ablesen kann - das ist auch der Grund (oder mit ein Grund) warum das in dem Abschnitt steht. Haetten man pages <blink> Tags: Das wuerde blinken.
Haha, das ist gut. Blink-Tags wären vielleicht wirklich oftmals sinnvoll.
Zur allgemeinen Belustigung: Natürlich stört es mich, wenn man das Passwort über ps oder top oder sonstwas anzeigen kann - ich persönlich würde ja python-gnupg verwenden, wenn es denn so funktionieren würde wie ich es gerne hätte. Noch besser wäre natürlich pygpgme, das ist soweit ich weiß die offiziell vorgeschlagene Methode wenn man GPG von Python aus verwenden will - leider gibts dazu nicht wirklich eine Doku. Falls doch: Her damit!
Ich hab auch versucht python-gnupg so zu erweitern, dass man damit direkt Dateien symmetrisch ver- und entschlüsseln kann - hat nur leider nicht funktioniert.
Letztlich bin ich für jeden Hinweis dankbar, wie ich Dateien ganz einfach symmetrisch ver- und entschlüsseln kann mittels GPG.
mfg
Re: Subprocess und GPG
Verfasst: Freitag 2. August 2013, 13:38
von EyDu
Zu python-gnupg gibt es
hier ein wenig Dokumentation. Auf den ersten Blick sind dort auch Ver- und Entschlüsselung mittels Passphrase beschrieben.
Re: Subprocess und GPG
Verfasst: Samstag 3. August 2013, 01:36
von Leonidas
EyDu hat geschrieben:Zu python-gnupg gibt es
hier ein wenig Dokumentation.
Sowie einen verbesserten Fork, von jemandem der sich mehr um Sicherheit kümmert.
Re: Subprocess und GPG
Verfasst: Samstag 3. August 2013, 12:38
von JohnDoe
EyDu hat geschrieben:Zu python-gnupg gibt es
hier ein wenig Dokumentation. Auf den ersten Blick sind dort auch Ver- und Entschlüsselung mittels Passphrase beschrieben.
Die Doku habe ich gefunden, leider bietet python-gnupg keine Möglichkeit für symmetrische Verschlüsselung an.
Leonidas hat geschrieben:EyDu hat geschrieben:Zu python-gnupg gibt es
hier ein wenig Dokumentation.
Sowie einen verbesserten Fork, von jemandem der sich mehr um Sicherheit kümmert.
Yeah, das sieht verdammt gut aus, Danke.
mfg