The IceMan Blog

סינכרון הסיסמאות בין LastPass ל-KeePass

נכתב על ידי בתאריך: 24/10/2011
תחת הקטגוריות: Android, Linux, טיפים, מדריכים, קוד פתוח

sync-lastpass-keepassבמקור הפוסט הזה היה אמור היה על אפשרות לסנכרן בין הסיסמאות בין השירות של Lastpass לבין התוכנה Keepass. אך לצערי לא מצאתי אופציה אוטומטית לחלוטין לנושא, הדרך היחידה שמצאתי היא לייצא את כל הסיסמאות מ-Lastpass לקובץ CSV ומשם לבנות קובץ XML ש-KeePass מבין ויכול לייבא. אני מניח שאולי אפשר לכתוב סקריפט שייבצע את הסינכון על בסיס קבוע על פי השיטה הזאת, אך מאחר והפתרון הזה עבד בשבילי לא טרחתי לחפש יותר לעומק, אך אשמח לשמוע אם משהו הצליח לשכלל את השיטה.

למי שלא מכיר LastPass הינו שירות+תוכנה שאמורה לתת מענה לבעיית הסיסמאות. הרעיון בגדול, לבצר את כל הסיסמאות שלכם תחת "סיסמה" אחת ואז לתת לכל אתר ושירות סיסמה שונה כך שחשיפה של סיסמה אחת לא חושפת סיסמה אחרת. ולמה המילה סיסמה נמצאת במרכאות, כי השימוש הפשוט הוא באמת לאחסן את כל הסיסמאות תחת סיסמה אחת, אך אילו מאיתנו שמוכנים לשלם על השירות יכולים לשדרג את התוכנה ולקבל אופציות יותר מאובטחות, אין בכוונתי לשווק את החברה, כך שאם אתה מתעניינים במוצר אתם מוזמנים לבדוק את האתר שלהם.

KeePass למי שלא מכיר דומה מאוד ל-LastPass אלא שהמוצר עצמו הוא Open-Source, והסיסמאות שלכם לא מאוחסנות באינטנרט, אלא בקובץ DB מוצפן על המחשב שלכם. יש אנשים שלא מרגישים בטוח בלאחסן סיסמאות רגישות באינטרנט ולכן יעדיפו את KeePass.

אני אישית שילבתי בין 2 התוכנות עד עכשיו, אבל מאז שקניתי את ה-Samsung Galaxy S שלי, ורציתי להשתמש במוצר של LastPass גיליתי שזה יעלה לי כסף, אז חיפשתי דרך לסנכרן את הסיסמאות שלי (חד כיווני למהרשת למחשב) מאחר ו-KeePass נתמך תחת אנדרויד כיאה לכל פרוייקט קוד פתוח.

ייצוא הסיסמאות מ-LastPass לקובץ CSV

מתוך הדפדפן המועדף עליכם, לחצו על האיקון של LastPass, תחת תפריט Tools תמצאו את האופציה לייצא את הסיסמאות שלכם. אחרי שתספקו את הסיסמה הראשית שלכם, הדפדפן יפלוט את כל הסיסמאות שלכם, יהיה עלכם לסמן את כל סיסמאות (או רק את אלו שתרצו להעביר) ולשמור בקובץ.

המרה של הסיסמאות מ-CSV לקובץ XML

בחלק הזה התברברתי קצת, למרות שידעתי מה הפורמט של הקובץ XML שאני צריך ליצור חיפשתי פיתרון מוכן, גילגול קצר ומצאתי כמה סקריפטים ב-Python ו־Ruby. אך לצערי 2 הסקריפטים בפיתון לא עבדו עבורי תחת לינוקס, ולא היה לי החשק להתברבר ולדבג אותם, אז המשכתי עם הסקריפט של Ruby שעבד לי ללא בעיות.

עדכון, דיווחתי על הבאג למפתח של הסקריפט ב- Python והוא תיקן אותו, אז עכשיו יש לכם עוד סקריפט שאתה יכולים להשתמש בו.

#!/usr/bin/ruby
#
# I recommend using Pocket to do the export. It works better than the browser extensions.
require 'rubygems'
require 'htmlentities'
require 'csv'
# CHANGE THIS
input_file = 'passwords.csv'
output_file = File.dirname(__FILE__) + '/' + input_file + '.pass.xml'
coder = HTMLEntities.new
csv = CSV::parse(File.open(input_file) {|f| f.read} )
passwords = {}
csv.each do |record|
  passwords[coder.encode(record[5])] ||= []
  passwords[coder.encode(record[5])] < < { :username => coder.encode(record[1]),
                                          :password => coder.encode(record[2]),
                                          :title    => coder.encode(record[4]),
                                          :comment  => coder.encode(record[3]),
                                          :url      => coder.encode(record[0]) }
end

File.open(output_file, 'w') do |f|
  f.puts '< !DOCTYPE KEEPASSX_DATABASE>'
  f.puts ''
  passwords.keys.each do |key|
    f.puts '  '
    f.puts "    #{key}"
    passwords[key].each do |password|
      f.puts "      "
      f.puts "        #{password[:title]}"
      f.puts "        #{password[:username]}"
      f.puts "
#{password[:password]}"
      f.puts "        #{password[:url]}"
      f.puts "        #{password[:comment]}"
      f.puts "      "
    end
    f.puts '  '
  end
  f.puts ''
end

הבאתי את הקוד כאן למקרה שהוא יעלם מהשרת איחסון (קרה כבר עם פרוייקט ב־github).

  1. שימו לב ששם הקובץ להמרה מוטמע בקוד עצמו ויש לשנות אותו מראש path/to/passwords.csv
  2. הקובץ פלט ייוצר לבד באותה תיקיה שממנה הרצתם את הסקריפט, בתוספת pass.xml.
  3. הקוד הנל לא יוצא טוב מסיבות טכניות של מערכת WORDPRESS, לכן מומלץ להעתיק את הקוד התקין מ- http://pastebin.com/37k41dN1

ייבוא הקובץ ב־KeePass

את החלק הזה כבר לא ממש צריך להסביר, פשוט פתחו את התוכנה ותחת תפריט File תמצאו את האופציה לייבא קובץ XML.

למשתמשי Windows

תודה רבה ל-ik_5 על התיקונים שהוא הציע, הסקריפט המעודכן כעת עובד גם עבור Windows.

  • הורידו את ההתקנה של Ruby עבור Windows מהקישור הבא
  • במהלך ההתקנה שיכו סיומות rb וכן סמנו את האופציה של הוספת התיקיה של  ruby לנתיב המערכת PATH
  • כנסו ל-CMD ונווטו לתיקיית ההתקנה של ruby, כברירת מחדל היא תהיה C:\Ruby187\bin
  • הריצו את הפקודה הבאה על מנת להתקין את הסיפריה htmlentities
C:\Ruby187\bin>gem install htmlentities

ואתם אמורים לקבל את הפלט הבא:

Fetching: htmlentities-4.3.0.gem (100%)
Successfully installed htmlentities-4.3.0
1 gem installed
Installing ri documentation for htmlentities-4.3.0...
Installing RDoc documentation for htmlentities-4.3.0...

כעת אתם יכולים להריץ את הסקריפט בצורה הבא:

C:\>ruby last.rb


:, , , , , ,

22 תגובות לפוסט זה

השאר תגובה

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Blogroll

A few highly recommended websites...

Too Cool for Internet Explorer