blob: 7a5f771cdb7ee9e8302e276dcae2aec3ba8fff17 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
@echo off
for /F "tokens=1,* delims=:" %%a in ('chcp') do set ORIGCP=%%b
set tmpfile="%TMP%\temppass.txt"
IF NOT DEFINED PASSWORD_STORE_CLIP_TIME (
set PASSWORD_STORE_CLIP_TIME=45
)
IF NOT DEFINED PASSWORD_STORE_KEY (
FOR /F "delims=" %%k in (%PASSWORD_STORE_DIR%\.gpg-id) DO set "PASSWORD_STORE_KEY=%%k"
)
IF NOT DEFINED PASSWORD_STORE_DIR (
echo.PASSWORD_STORE_DIR system variable not defined, defaulting to "%USERPROFILE%\.password-store\"
echo.You can change this sysvar anytime in SystemPropertiesAdvanced.exe or via setx. See setx/? for help.
set PASSWORD_STORE_DIR="%USERPROFILE%\.password-store"
::setx PASSWORD_STORE_DIR "%USERPROFILE%\.password-store"
)
IF [%~1] EQU [] (
echo.Copyright ^(c^) 2012-2018, Jason A. Donenfeld ^<Jason@zx2c4.com^>
echo.Copyright ^(c^) 2019-2020, Miquel Lionel
echo.
echo.Here's the available parameters for pass. Text between [] is MANDATORY:
echo.
echo. ls - without arguments, it list the entire password store as a tree.
echo. view [passname] - decrypt the password with name [passname], output the result to the console
echo. insert [passname] - insert a password with name [passname], prompt for input. Stop and save with a newline and by pressing Ctrl+Z on your keyboard.
echo. rm [passname] - delete the password matching [passname]. Prompts for confirmation.
echo. rmf [passname] - force the deletion of password matching [passname].
echo. rmrf [passname] - recursively and forcefully delete a directory in the password store.
echo. clip [passname] [linenumber] - copy into the clipboard the text at line [linenumber] for password matching [passname].
echo.
echo.ENVIRONNEMENT VARIABLES:
echo. PASSWORD_STORE_KEY The key^(s^) ID in 0xlong form. Can alternatively be in a .gpg-id file in the password store directory, searches in it by default.
echo. PASSWORD_STORE_DIR The directory which contains the password, with .gpg extension.
echo. PASSWORD_STORE_CLIP_TIME The time remaining for which a password copied to the clipboard.
)
IF ["%1"] EQU ["init"] (
shift
if [%~1] EQU [] (
md %PASSWORD_STORE_DIR%\.extensions
echo.%PASSWORD_STORE_KEY%>%PASSWORD_STORE_DIR%\.gpg-id
) ELSE (
md "%PASSWORD_STORE_DIR%\%~1\.extensions"
echo.%PASSWORD_STORE_KEY%>"%PASSWORD_STORE_DIR%\%~1\.gpg-id"
)
goto :eof
)
IF ["%1"] EQU ["ls"] (
tree /F "%PASSWORD_STORE_DIR%"
goto :eof
)
IF ["%1"] EQU ["view"] (
:: remove 2>nul for debug info
chcp 65001 >nul
gpg --default-key %PASSWORD_STORE_KEY% -d "%PASSWORD_STORE_DIR%\%~2.gpg" 2>nul
chcp %ORIGCP% >nul
goto :eof
)
IF ["%1"] EQU ["insert"] (
shift
gpg -r %PASSWORD_STORE_KEY% -e -a -o "%PASSWORD_STORE_DIR%\%~2.gpg"
goto :eof
)
IF ["%1"] EQU ["md"] (
shift
md "%PASSWORD_STORE_DIR%\%~2.gpg"
goto :eof
)
IF ["%1"] EQU ["rm"] (
shift
IF NOT ["%~2"] EQU [] (
del /P "%PASSWORD_STORE_DIR%\%~2.gpg"
)
goto :eof
)
IF ["%1"] EQU ["rmf"] (
shift
IF NOT ["%~2"] EQU [] (
del /F "%PASSWORD_STORE_DIR%\%~2.gpg"
)
goto :eof
)
IF ["%1"] EQU ["rmrf"] (
shift
IF NOT ["%~2"] EQU [] (
rmdir /S /Q "%PASSWORD_STORE_DIR%\%~2.gpg"
)
goto :eof
)
IF ["%1"] EQU ["mv"] (
shift
IF NOT ["%~2"] EQU [] (
move "%PASSWORD_STORE_DIR%\%~2.gpg" "%PASSWORD_STORE_DIR%\%~3.gpg"
)
goto :eof
)
IF ["%1"] EQU ["clip"] (
shift
set LINENUMBER=%~3
if defined LINENUMBER (
echo hoo
for /F "tokens=1,2* delims=:" %%a in ('chcp 65001 ^>nul ^&^& pass view "%~2" ^| findstr/n ^^^^ ^| findstr /i /b "%~3:" ^&^& chcp %ORIGCP% ^>nul') do (
echo.%%b|clip
start /MIN /B "" "cmd /c ping ::1 -n %PASSWORD_STORE_CLIP_TIME% >nul && cmd /c echo.|C:\Windows\System32\clip.exe"
)
) else (
for /F "tokens=1,2* delims=:" %%a in ('chcp 65001 ^>nul ^&^& pass view "%~2" ^| findstr/n ^^^^ ^| findstr /i /b "1:" ^&^& chcp %ORIGCP% ^>nul') do (
echo.%%b|clip
start /MIN /B "" "cmd /c ping ::1 -n %PASSWORD_STORE_CLIP_TIME% >nul && cmd /c echo.|C:\Windows\System32\clip.exe"
)
)
goto :eof
)
IF ["%1"] EQU ["edit"] (
shift
gpg -o %tmpfile% -d "%PASSWORD_STORE_DIR%\%~2.gpg"
start /W "" notepad %tmpfile%
gpg -r %PASSWORD_STORE_KEY% -e -a -o "%PASSWORD_STORE_DIR%\%~2.gpg" %tmpfile%
del /Q %tmpfile%
goto :eof
)
IF EXIST "%PASSWORD_STORE_DIR%\%~1.gpg" (
pass view "%~1"
goto :eof
)
goto :eof
|