passwort an Programm übergeben?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

passwort an Programm übergeben?

Beitrag von latenite » 18.07.2009 21:59:43

Hallo Leute

wenn ich ein shellscript habe in dem ein Programm aufgerufen wird das ein passwort erfordert, das ich zuvor in eine Variable gelesen habe.
Wie übergebe ich das Passwort an das Programm?

z.B.

Code: Alles auswählen

passwd=$1
gpg -d ~/thefile.gpg
dann läuft gpg und der promt fragt nach dem passwort das in $1 liegt...wie automatiser ich das jetzt das Passwort auch übergeben wird und die in diesem Fall gpg zuende ausgeführt wird.

P.S. diesen fall gibt' s ja für viele programme die eine Eingabe erfordern...ob Password oder Pfade zu Datein...wie übergibt man die?

Danke

Benutzeravatar
me
Beiträge: 868
Registriert: 30.10.2005 00:14:23
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Paderborn
Kontaktdaten:

Re: passwort an Programm übergeben?

Beitrag von me » 18.07.2009 23:54:26

Du könntest echo "${PASS}"| programm versuchen. Die Pipe sendet das ganze an stdin, auf der normalerweise Programme das PW dann erwarten.
Anytime if we think we were right,
we were maybe wrong.

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: passwort an Programm übergeben?

Beitrag von GoKi » 19.07.2009 12:19:06

Oder mal expect anschauen, z.B. englischer Wikipedia Artikel http://en.wikipedia.org/wiki/Expect
MfG GoKi
:wq


latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: passwort an Programm übergeben?

Beitrag von latenite » 19.07.2009 14:16:42

danke leute das hat geholfen...ich werde zuert mal diese zeilen verwenden:

Code: Alles auswählen

file=`echo 'thepassword | gpg --passphrase-fd 0 -d thefile.gpg`
file $file
FILETYPE=`file $file | cut -d " " -f 2`
echo "$FILETYPE"
wobei ich mich noch ein frage: Wie kann ich den Inhalt einer Datei in eine Shellvariable packen? Geht das überhaupt?
In dem Bsp. oben scheint das nicht ganz hin zu hauen, denn das Programm file gibt für die Variable $file nichts sinnvolles aus. Dabei solltze doch aber so was wie "UTF-8 Unicode text" da stehen?!

danke

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Re: passwort an Programm übergeben?

Beitrag von 123456 » 19.07.2009 14:48:49

was gibt denn:

Code: Alles auswählen

echo 'thepassword' | gpg --passphrase-fd 0 -d thefile.gpg
aus?
;)

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: passwort an Programm übergeben?

Beitrag von latenite » 19.07.2009 14:58:10

die entschlüsselte datei :)

also so:

Code: Alles auswählen

0:503:kai@desktop ~ [0]$ echo 'nuss' | gpg --passphrase-fd 0 -d /home/kai/Desktop/nusscreme.gpg 
Reading passphrase from file descriptor 0    
gpg: CAST5 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
Man nehme

- Nüsse
- anrösten in einer Pfanne (ohne! Fett) bis sie aromatisch duften
- Nüsse in einen Mixer füllen und gasgeben. (mache es mit einem Pürierstab und einem hohen Mixbecher. Den Pürierstab zur richtigen Becher Abdeckung mit einem Handtuch o.ä. umwickeln.)
- etwas Öl (cool sind Nussöle) unter mixen hinzugeben. Menge ist von der gewünschten Konsistenz abhängig ->mehr Öl= cremiger.
- eine Prise Salz!
- Süßstoff nach Geschmack
gpg: WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)
0:503:kai@desktop ~ [0]$ 

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: passwort an Programm übergeben?

Beitrag von latenite » 19.07.2009 15:01:30

wie speichere ich denn nun eine Datei (deren inhalt) in einer shell variable?

danke

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Re: passwort an Programm übergeben?

Beitrag von armin » 19.07.2009 15:10:47

Code: Alles auswählen

CONTENT=`cat ${FILENAME}`
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Re: passwort an Programm übergeben?

Beitrag von 123456 » 19.07.2009 15:20:10

wie wärs damit? - wenn ich dich richtig verstanden habe.

Code: Alles auswählen

echo 'thepassword' | gpg --passphrase-fd 0 -d thefile.gpg > ~/file
FILETYPE=`file ~/file | cut -d " " -f 2`
echo "$FILETYPE"
Zuletzt geändert von 123456 am 19.07.2009 15:21:31, insgesamt 1-mal geändert.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: passwort an Programm übergeben?

Beitrag von latenite » 19.07.2009 15:20:36

Ich habe mein Problemchen mal in ein scriptchen gefasst:

Code: Alles auswählen

echo -e "Das geht nicht\n"

file=$(echo 'nuss' | gpg --passphrase-fd 0 -d /home/kai/Desktop/nusscreme.gpg)
cat $file
FILETYPE=`file $file | cut -d " " -f 2`
echo "$FILETYPE"

echo -e "\n ABER das\n"

echo 'nuss' | gpg --passphrase-fd 0 -d /home/kai/Desktop/nusscreme.gpg > ~/decryptedfile
cat ~/decryptedfile
FILETYPE=`file decryptedfile | cut -d " " -f 2`
echo "$FILETYPE"

echo "Wieso landet der Inhalt, der von gpg erzeugten Datei nicht in '\$file' wie er in '"~/decryptedfile"' landet???"
 
wenn ich das ausführe bekomme ich das:

Code: Alles auswählen

0:504:kai@desktop ~ [0]$ gpg_echo.sh 
Das geht nicht

Reading passphrase from file descriptor 0    
gpg: CAST5 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
gpg: WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)
cat: Ungültige Option -- >
„cat --help“ gibt weitere Informationen.
file: invalid option -- '>'
Usage: file [-bcikLhnNrsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] file...
       file -C -m magicfiles
Try `file --help' for more information.


 ABER das

Reading passphrase from file descriptor 0    
gpg: CAST5 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
gpg: WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)
Man nehme

- Nüsse
- anrösten in einer Pfanne (ohne! Fett) bis sie aromatisch duften
- Nüsse in einen Mixer füllen und gasgeben. (mache es mit einem Pürierstab und einem hohen Mixbecher. Den Pürierstab zur richtigen Becher Abdeckung mit einem Handtuch o.ä. umwickeln.)
- etwas Öl (cool sind Nussöle) unter mixen hinzugeben. Menge ist von der gewünschten Konsistenz abhängig ->mehr Öl= cremiger.
- eine Prise Salz!
- Süßstoff nach Geschmack
UTF-8
Wieso landet der Inhalt, der von gpg erzeugten Datei nicht in '$file' wie er in '~/decryptedfile' landet???
0:504:kai@desktop ~ [0]$ 
warum wieso...und überhautpt....was is das :? :? :? sollte das nicht die gleichen ergebnisse liefern?

danke

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: passwort an Programm übergeben?

Beitrag von rendegast » 19.07.2009 16:05:28

cat und file beschweren sich darüber:
abhängig ->mehr Öl= cremiger.

Code: Alles auswählen

file=$(echo 'nuss' | gpg --passphrase-fd 0 -d /home/kai/Desktop/nusscreme.gpg)
cat $file
->

Code: Alles auswählen

file="$(echo 'nuss' | gpg --passphrase-fd 0 -d /home/kai/Desktop/nusscreme.gpg)"
echo "$file"
$file ist hier kein Dateiname, sondern der entschlüsselte Text.
Ist da vielleicht noch eine neue Datei mit Namen "mehr Öl= cremiger...." entstanden?




--------------------------------------
man gpg hat geschrieben:--passphrase-fd n
Read the passphrase from file descriptor n. Only the first line will be read from file descriptor n. If you use 0 for n, the passphrase will be read from stdin. This can only be used if only one passphrase is supplied.
--passphrase-file file
Read the passphrase from file file. Only the first line will be read from file file. This can only be used if only one passphrase is supplied. Obviously, a passphrase stored in a file is of questionable security if other users can read this file. Don't use this option if you can avoid it.
--passphrase string
Use string as the passphrase. This can only be used if only one passphrase is supplied. Obviously, this is of very questionable security on a multi-user system. Don't use this option if you can avoid it.
man mount.cifs hat geschrieben:credentials=filename
specifies a file that contains a username and/or password. The format of the file is:
username=value
password=value
Bei anderen Programmen vermutlich anders, aber ähnlich.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: passwort an Programm übergeben?

Beitrag von latenite » 19.07.2009 17:26:47

also eine weitere Datai ist nicht entstanden!

Frage ist "file" bei

Code: Alles auswählen

file=$(echo 'nuss' | gpg --passphrase-fd 0 -d /home/kai/Desktop/nusscreme.gpg)
die Variable die den entschlüsselten Text enthält?
ODER
die Variable die die entschlüsselte Datei enthält?

Das halbfertige Script sieht jetzt so aus und es hängt nur doch daran, dass ich mit dem Programm file nicht herausfinden kann welcher Dateityp jetzt die entschlüsselte Datei (decryptedfile) ist?

Code: Alles auswählen

#!/bin/bash

HOMEDIR=$(getent passwd $USER | awk -F: '{print $6}')
echo $HOMEDIR

function DECRYPT
{
SECRETFILE=`zenity --file-selection --title="Select the file you want to decrypt"`
echo "$SECRETFILE"
	case $? in
	0)
		echo "\"$SECRETFILE\" selected."
		password=`zenity --entry --title="password entry " --hide-text --text="enter password for $SECRETFILE :"`
		echo $password | gpg --passphrase-fd 0 -d $SECRETFILE > decrypedfile
		FILETYPE=`file decryptedfile | cut -d " " -f 2` # determins the filetype of the decrypted file
		zenity --info --text "$FILETYPE"
		cat decryptedfile	
		case "$FILETYPE" in
			'ASCII')
				geany decryptedfile &
				;;
			'PDF')
				acroread decryptedfile &
				;;
			'JPEG')
				eog decryptedfile &
				;;
		esac
		;;
	1)
		echo "No file selected."
		zenity --error --text "you have not selected a file. Go again."
		DECRYPT
		;;
	-1)
		echo "No file selected."
		zenity --error --text "you have not selected a file. Go again."
		DECRYPT
		;;
	esac
} # end of funktion DECRYPT

function FUNKTIONSAUSWAHL
{
funktionchoise=$(zenity  --list  --text "Please choose the action you want to perform:" --radiolist  --column "choise" --column "action" TRUE decrypt FALSE encrypt FALSE "end programm");
echo "auswahl: $funktionchoise"
	
	case "${funktionchoise}" in
		'decrypt')
			DECRYPT ;;
		'encrypt' )
			echo "verschluesseln" ;;
		'end programm' )
			exit ;;
		* )
			exit ;;
	esac
} # end of funktion FUNKTIONSAUSWAHL

### MAIN
FUNKTIONSAUSWAHL
Ausserdem versteh ich nicht, dass wenn ich eine Bilddatei (jacko.jpg.gpg) enschlüssle und nicht das Nussrezept (nusscreme.gpg) ich es aber mit dem cat Befehl aus dem Script trotzdem angezeit bekomme...?? Woher kommt dieser Dateiihnhalt? Sollte der nicht NACH Beendigung des Scriiptes nicht mehr da sein? Find findet jedenfalls keine Datei mit dem Namen "decryptedfile"? Ich glaub ich raff gar nichts mehr.. :(

Code: Alles auswählen

0:506:kai@desktop ~ [1]$ gpg -c /home/kai/Desktop/jacko.jpg 
0:506:kai@desktop ~ [1]$ open_gpg_gui.sh 
/home/kai
auswahl: decrypt
/home/kai/Desktop/jacko.jpg.gpg
"/home/kai/Desktop/jacko.jpg.gpg" selected.
Reading passphrase from file descriptor 0    
gpg: CAST5 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
gpg: WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)
Man nehme

- Nüsse
- anrösten in einer Pfanne (ohne! Fett) bis sie aromatisch duften
- Nüsse in einen Mixer füllen und gasgeben. (mache es mit einem Pürierstab und einem hohen Mixbecher. Den Pürierstab zur richtigen Becher Abdeckung mit einem Handtuch o.ä. umwickeln.)
- etwas Öl (cool sind Nussöle) unter mixen hinzugeben. Menge ist von der gewünschten Konsistenz abhängig ->mehr Öl= cremiger.
- eine Prise Salz!
- Süßstoff nach Geschmack

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: passwort an Programm übergeben?

Beitrag von latenite » 19.07.2009 17:41:23

TYPOALARM...mein Fehler das fehlte ein "t" in decrpTedfile...sorry...

jetzt geht's!

Mal abgesehen davon das ich die entschlüsselte Datei jetzt auf Platte schreibe. das gefällt mir gar nicht. Geht das denn nicht, das ich die Datei NUR in einer shellvariable habe solange das script läuft? und wenn es beendet ist auch die entschlüsselte Datei im Nivana verschwindet.
So muss ich ich darum kümmern das ich bei Beendigung auch noch die entschlüsselte Datei (decryptedfile) wieder von der Platte Lösche...-> uncool :)

danke

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: passwort an Programm übergeben?

Beitrag von rendegast » 19.07.2009 19:37:06

Code: Alles auswählen

...
decryptedfile=`mktemp /tmp/bla.XXXXXX`
...
         geany $decryptedfile &
...
rm $decryptedfile
und tmpfs nach /tmp mounten.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten