вторник, 4 мая 2010 г.

Экспорт из KeePassX в Secrets for Android

На ноутбуке для хранения паролей я использую KeePassX.

К сожалению на Android текущая версия порта KeePassDroid не может открывать файлы KeePassX, не может импортировать записи.

На Android я использую Secrets for Android, который может импортировать записи из csv файла.

Осталось только преобразовать формат экспорта KeePassX в csv.

Для этого я написал на bash простую программу.

#!/bin/bash

#   Конвертер для импорта из текстового файла экспорта KeePassX 
#   в csv Secrets for Android (http://code.google.com/p/secrets-for-android/)

#=== Соответствие между полями:
# Title : Url -> Description
# Username    -> Id
# Password    -> PIN
#                e-mail
# Comment     -> Notes

keeFile="keepass.csv"

curLine=""

hTitle="Title:"
hUsername="Username:"
hUrl="Url:"
hPassword="Password:"
hComment="Comment:"

sTitle=""
sUsername=""
sUrl=""
sPassword=""
sComment=""
sE-mail="my@mail.com"   #ваш e-mail

#
# Читает и присваивает значения полям для одной записи
# 
function GetRecord
{
  if (( ${#curLine} < 7 )) 
    then
      sTitle=""
    else
      sTitle=${curLine:10}
  fi

  read curLine
  if (( ${#curLine} < 10 )) 
    then
      sUsername=""
    else
      sUsername=${curLine:10}
  fi

  read curLine
  if (( ${#curLine} < 5 )) 
    then
      sUrl=""
    else
      sUrl=${curLine:10}
  fi

  read curLine
  if (( ${#curLine} < 10 )) 
    then
      sPassword=""
    else
      sPassword=${curLine:10}
  fi

  read curLine
  if (( ${#curLine} < 10 )) 
    then
      sComment=""
      endRecord=1
    else
      sComment=${curLine:10}
      endRecord=0
  fi

  while [ $endRecord -eq 0 ]
  do
    read curLine
    if [ ${#curLine} -eq 0 ]
      then
        endRecord=1
      else
        sComment=$sComment"
"$curLine
    fi
  done
  echo '"'"$sTitle : $sUrl"'"','"'"$sUsername"'"','"'"$sPassword"'"','"$sE-mail"','"'"$sComment"'"'
}

# ============== main loop ================
echo '"Description","Id","PIN","Email","Notes"'
while read curLine
  do
    x=`expr match "$curLine" 'Title:    '`
    if (( x == 10 )) 
      then 
       GetRecord
    fi
  done < $keeFile

При импорте поля Title и Url KeePassX объединяются и записываются в Description
Secrets for Android.

4 комментария:

  1. А я благополучно перелез на http://lastpass.com/
    Есть и для андроида клиент. Уж каким бы я параноиком ни был, а ластпасс хранит и синхронизирует пароли через свой сервер... удобно.

    ОтветитьУдалить
  2. Ё-моё... Чтож ты молчал?
    Сейчас посмотрю.... :D

    ОтветитьУдалить
  3. В самом деле очень удобна штука....
    Shtucer, спасибо за ссылку. Сейчас потестирую ее на iPad и Milestone

    ОтветитьУдалить
  4. Я не молчал, я сразу на капу нажал! Скрипач свидетель!

    ОтветитьУдалить