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

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 והוא תיקן אותו, אז עכשיו יש לכם עוד סקריפט שאתה יכולים להשתמש בו.

הבאתי את הקוד כאן למקרה שהוא יעלם מהשרת איחסון (קרה כבר עם פרוייקט ב־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

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

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


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

  1. מספר הערות רובי 🙂
    1. הצבעית תחביר איומה. האפור פשוט לא קריא על רקע לבן.
    2. File.join(pwd.chomp, 'pass.xml')
    אפשר לכתוב במקום ככה:
    File.dirname(__FILE__) + 'pass.xml'

    3. במקום File.open(input_file) {|f| f.read}
    אפשר פשוט לכתוב:
    open(input_file)
    עושה אותו הדבר במקרה הזה.

    4. open של file הוא open של IO והוא ברירת מהחדל, ולכן אין צורך לציין File.open במקרה הזה, כי הוא כבר נמצא כ include בסביבה שלך.

    זהו, מספיק קטנוניו לתגובה שלי 🙂

    1. 1. נסתי כמה תוספים לצביעת קוד, אף אחד לא נותן פיתרון מושלם לצערי. אם אתה מכיר משהו שאני לא, אשמח לשמוע.

      2. הקוד לא שלי, מצאתי אותו באחד הפורמים, אני רק שמח שהוא עבד בלי שהיתי צריך לשנות משהו ממש בו, וגם התלויות שלו לא היו גדולות בשביל להריץ אותו.

      3. אוקי

      4. טוב עכשיו אתה קטנוני 🙂

      *5. תמצא דרך שכל התהליך הזה יתבצע אוטומטית ואני אוותר על 4 🙂

  2. מה אומרת השגיאה ?

    D:/ruby-1.8.7-p352-i386-mingw32/lib/ruby/site_ruby/1.8/rubygems/custom_require.r
    b:36:in gem_original_require': no such file to load -- htmlentities (LoadError)

    from D:/ruby-1.8.7-p352-i386-mingw32/lib/ruby/site_ruby/1.8/rubygems/cus
    tom_require.rb:36:in
    require'
    from last.rb:6

  3. עכשיו היבוא של הקובץ לתוכנה KeePass-2.17
    לא פועל
    למטה זו הודעת השגיאה

    1. עם איזו גרסה שלו אתה משתמש ?
      תראה לי את השורות הרשונות של ה-XML שלך (תמחק את הסיסמאות כמובן)

  4. הקובץ מכיל שש שורות ריקות שיש בהם סימן רווח

    ואחרי זה בקבוצות של 4 שורות
    כינוי האתר
    שם משתמש
    סיסמה
    וכתובת האתר
    אחרי זה עוד שלוש שורות ריקות

    והאתר הבא

  5. עכשיו הקובץ מתחיל

    אבל יבוא שלו נותן את השגיאה הזו

    —————————
    KeePass
    —————————
    מסיבות הקשורות לאבטחה, DTD אסור במסמך XML זה. כדי לאפשר עיבוד DTD, הגדר את המאפיין ProhibitDtd ב- XmlReaderSettings כ- false והעבר את ההגדרות לפעולת השירות XmlReader.Create.
    —————————
    אישור
    —————————

    1. אחי, באמת לא הבנתי על מה אתה מדבר עד שנסתי לבד, אני גם לא מצליח לייבא את הקובץ XML לא בגרסה החדשה ולא בישנה.

      היתי ממליץ לך לנסות עם לינוקס אם יש לך את הכוח, אולי מחר יהיה כוח אני אנסה שוב לבדוק למה לא ניתן לייבא את הקובץ תחת הקליינטים של Windows.

Leave a Comment

האימייל לא יוצג באתר. שדות החובה מסומנים *

*
*