Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
Cranspasswords
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
Cranspasswords
Commits
39db981f
Commit
39db981f
authored
Nov 10, 2015
by
Daniel Stan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
draft: gestion des clés ssh
parent
81326554
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
17 deletions
+55
-17
client.py
client.py
+55
-17
No files found.
client.py
View file @
39db981f
...
...
@@ -654,39 +654,77 @@ def show_file(options):
return
passfile
=
value
(
sin
,
sout
)
=
gpg
(
options
,
'decrypt'
)
content
=
passfile
[
'contents'
]
# Kludge (broken db ?)
content
=
passfile
[
'contents'
]
# Kludge (broken db ?)
if
type
(
content
)
==
list
:
print
(
"Eau dans le gaz"
)
content
=
content
[
-
1
]
# Déchiffre le contenu
sin
.
write
(
content
.
encode
(
"utf-8"
))
sin
.
close
()
texte
=
sout
.
read
()
.
decode
(
"utf-8"
)
ntexte
=
u""
hidden
=
False
# Est-ce que le mot de passe a été caché ?
lines
=
texte
.
split
(
'
\n
'
)
# Est-ce une clé ssh ?
is_key
=
texte
.
startswith
(
'-----BEGIN RSA PRIVATE KEY-----'
)
# Est-ce que le mot de passe a été caché ? (si non, on utilisera less)
is_hidden
=
is_key
# Texte avec mdp caché
filtered
=
u""
# Ancien contenu du press papier
old_clipboard
=
None
for
line
in
lines
:
# Essaie de planquer le mot de passe
for
line
in
texte
.
split
(
'
\n
'
):
catchPass
=
None
# On essaie de trouver le pass pour le cacher dans le clipboard
# si ce n'est déjà fait et si c'est voulu
if
not
hidden
and
options
.
clipboard
:
if
not
is_
hidden
and
options
.
clipboard
:
catchPass
=
pass_regexp
.
match
(
line
)
if
catchPass
!=
None
:
hidden
=
True
# On met le mdp dans le clipboard en mémorisant son
t
ancien contenu
is_
hidden
=
True
# On met le mdp dans le clipboard en mémorisant son ancien contenu
old_clipboard
=
clipboard
(
catchPass
.
group
(
1
))
# Et donc on override l'affichage
line
=
u"[Le mot de passe a été mis dans le presse papier]"
ntexte
+=
line
+
'
\n
'
showbin
=
"cat"
if
hidden
else
"less"
proc
=
subprocess
.
Popen
([
showbin
],
stdin
=
subprocess
.
PIPE
)
out
=
proc
.
stdin
raw
=
u"Fichier
%
s:
\n\n
%
s-----
\n
Visible par:
%
s
\n
"
%
(
fname
,
ntexte
,
','
.
join
(
passfile
[
'roles'
]))
out
.
write
(
raw
.
encode
(
"utf-8"
))
out
.
close
()
os
.
waitpid
(
proc
.
pid
,
0
)
filtered
+=
line
+
'
\n
'
if
is_key
:
filtered
=
u"La clé a été mise dans l'agent ssh"
shown
=
u"Fichier
%
s:
\n\n
%
s-----
\n
Visible par:
%
s
\n
"
%
(
fname
,
filtered
,
','
.
join
(
passfile
[
'roles'
]))
if
is_key
:
with
tempfile
.
NamedTemporaryFile
(
suffix
=
''
)
as
key_file
:
# Génère la clé publique correspondante
key_file
.
write
(
texte
.
encode
(
'utf-8'
))
key_file
.
flush
()
pub
=
subprocess
.
check_output
([
'ssh-keygen'
,
'-y'
,
'-f'
,
key_file
.
name
])
# Charge en mémoire
subprocess
.
check_call
([
'ssh-add'
,
key_file
.
name
])
# On attend
print
(
shown
.
encode
(
'utf-8'
))
raw_input
()
# On met la clé publique en fichier puis on supprime
key_file
.
seek
(
0
)
key_file
.
write
(
pub
)
key_file
.
flush
()
subprocess
.
check_call
([
'ssh-add'
,
'-d'
,
key_file
.
name
])
else
:
# Le binaire à utiliser
showbin
=
"cat"
if
is_hidden
else
"less"
proc
=
subprocess
.
Popen
([
showbin
],
stdin
=
subprocess
.
PIPE
)
out
=
proc
.
stdin
out
.
write
(
shown
.
encode
(
"utf-8"
))
out
.
close
()
os
.
waitpid
(
proc
.
pid
,
0
)
# Repope ancien pass
if
o
ptions
.
clipboard
:
if
o
ld_
clipboard
:
saveclipboard
(
restore
=
True
,
old_clipboard
=
old_clipboard
)
@
need_filename
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment