Browse Source

Export passwords to keepass

Bob Mottram 8 years ago
parent
commit
11fcfafb3b
1 changed files with 46 additions and 0 deletions
  1. 46
    0
      src/freedombone-pass

+ 46
- 0
src/freedombone-pass View File

49
 REMOVE_APP=
49
 REMOVE_APP=
50
 CURR_PASSWORD=""
50
 CURR_PASSWORD=""
51
 TESTS=
51
 TESTS=
52
+EXPORT_FILENAME=
52
 
53
 
53
 # If this file is present then don't store passwords
54
 # If this file is present then don't store passwords
54
 NO_PASSWORD_STORE_FILE=~/.nostore
55
 NO_PASSWORD_STORE_FILE=~/.nostore
73
     echo $'  -u --user [name]                 Username'
74
     echo $'  -u --user [name]                 Username'
74
     echo $'  -a --app [name]                  Name of the application'
75
     echo $'  -a --app [name]                  Name of the application'
75
     echo $'  -p --pass [password]             The password to store'
76
     echo $'  -p --pass [password]             The password to store'
77
+    echo $'     --export [filename]           Export to KeepassX XML'
76
     echo ''
78
     echo ''
77
     echo $'To encrypt a password:'
79
     echo $'To encrypt a password:'
78
     echo ''
80
     echo ''
145
     exit 0
147
     exit 0
146
 }
148
 }
147
 
149
 
150
+function export_to_keepass {
151
+    filename = "$1"
152
+
153
+    echo '<database>' > $filename
154
+    echo '  <group>' >> $filename
155
+    echo "    <title>${PROJECT_NAME}</title>" >> $filename
156
+    echo '    <icon>48</icon>' >> $filename
157
+
158
+    for d in /root/.passwords/*/ ; do
159
+        USERNAME=$(echo "$d" | awk -F '/' '{print $4}')
160
+        echo '    <group>' >> $filename
161
+        echo "      <title>$USERNAME</title>" >> $filename
162
+        echo '      <icon>0</icon>' >> $filename
163
+        for a in /root/.passwords/$USERNAME/*/ ; do
164
+            APP_NAME=$(echo "$a" | awk -F '/' '{print $5}')
165
+            app_password=$(${PROJECT_NAME}-pass -u $USERNAME -a $APP_NAME)
166
+            echo '      <entry>' >> $filename
167
+            echo "        <title>$APP_NAME</title>" >> $filename
168
+            echo "        <username>$USERNAME</username>" >> $filename
169
+            echo "        <password>$app_password</password>" >> $filename
170
+            echo '        <url/>' >> $filename
171
+            echo '        <comment/>' >> $filename
172
+            echo '        <icon>0</icon>' >> $filename
173
+            echo '        <expire>Never</expire>' >> $filename
174
+            echo '      </entry>' >> $filename
175
+        done
176
+        echo '    </group>' >> $filename
177
+    done
178
+
179
+    echo '  </group>' >> $filename
180
+    echo '</database>' >> $filename
181
+
182
+    echo $"Exported $filename"
183
+}
184
+
148
 while [[ $# > 1 ]]
185
 while [[ $# > 1 ]]
149
 do
186
 do
150
     key="$1"
187
     key="$1"
183
             shift
220
             shift
184
             CURR_APP="${1}"
221
             CURR_APP="${1}"
185
             ;;
222
             ;;
223
+        --export)
224
+            shift
225
+            EXPORT_FILENAME="${1}"
226
+            ;;
186
         -p|--pass|--password|--passphrase)
227
         -p|--pass|--password|--passphrase)
187
             shift
228
             shift
188
             CURR_PASSWORD="${1}"
229
             CURR_PASSWORD="${1}"
211
     exit 0
252
     exit 0
212
 fi
253
 fi
213
 
254
 
255
+if [ $EXPORT_FILENAME ]; then
256
+    export_to_keepass $EXPORT_FILENAME
257
+    exit 0
258
+fi
259
+
214
 if [ ! $CURR_USERNAME ]; then
260
 if [ ! $CURR_USERNAME ]; then
215
     echo $'Error: No username given'
261
     echo $'Error: No username given'
216
     exit 1
262
     exit 1