Importieren Sie Passwörter von lastpass nach keepassx

5902
Ben

Ich habe mich gefragt, wie es aktuelle Wege gibt, Lastpass-Passwörter in Keepass / Keepassx zu importieren? Ich habe das Programm lastpass2keepass.py gefunden, aber es scheint nicht mehr zu funktionieren (lastpass hat seine csv-Felder aktualisiert?).

3

4 Antworten auf die Frage

6
Ben

Nun, es scheint nicht so zu sein, als ob es welche gab, also habe ich ein schnelles PHP-Skript dazu gehackt.

Wenn jemand anderes es tun muss. Führen Sie dieses Skript aus, fügen Sie die exportierte CSV-Datei in den Textbereich ein und geben Sie die ausgegebene CSV-Datei ein, um den Pass zu erhalten.

<?php if (isset($_POST["submit"])) { //Loop through, build a multi array; $parsedCSV = array(); //Columns (in order) to parse out. $ColumnAssociation = array("%%name%%","%%username%%","%%password%%","%%url%%","%%extra%%"); //The xml strings to use for output, replace %%COLUMNNAME%% with COLUMNVALUE  $LastPassHeaders = array();  $inQuotes = false; $quoteType = ''; $curColumn = 0;  //My epic parser, I know, deal with it (it wasn't meant to be modified) $first = true; $curLine = 0; foreach (explode("\n",$_POST["csvinput"]) as $line) { if (empty($line)) //I do this instead of searching for \r\n, because linux just uses \n (I think :/) continue;  $letters = str_split($line); //print_r( $letters); for ($i = 0; $i < count($letters); $i++) { /*if ($first) //get lastpass's headers (they are the first row {  }*/  //Set inQuotes if (!$inQuotes && $letters[$i] == "'" && ($i - 1 < 0 || $letters[$i - 1] != '\\')) //Not Inquotes, matching singlequote, not prefixed with escape character { $inQuotes = true; $quoteType = "'"; continue; } else if (!$inQuotes && $letters[$i] == '"' && ($i - 1 < 0 || $letters[$i - 1] != '\\')) //Not Inquotes, matching doublequote, not prefixed with escape character { $inQuotes = true; $quoteType = '"'; continue; } else if ($inQuotes && $letters[$i] == $quoteType && ($i - 1 < 0 || $letters[$i - 1] != '\\')) //Inquotes, is the endquote, and isn't prefixed with an escape character { $inQuotes = false; $quoteType = ''; continue; } //Finished with quotes  if (!$inQuotes && $letters[$i] == ',' && ($i - 1 < 0 || $letters[$i - 1] != '\\')) { $curColumn++; continue; /*if ($curColumn > count($ColumnAssociation)) throw new Exception("TO MANY COLUMNS FTW");*/ }  //Well, because lastpass doesn't incapsulate their stuff, I guess I'll just wing it if (!$first) //If not headers, parse normally { if (!isset($parsedCSV[$curLine][$LastPassHeaders[$curColumn]])) $parsedCSV[$curLine][$LastPassHeaders[$curColumn]] = ""; $parsedCSV[$curLine][$LastPassHeaders[$curColumn]] .= $letters[$i]; } else if ($first) { if (!isset($LastPassHeaders[$curColumn])) $LastPassHeaders[$curColumn] = ''; $LastPassHeaders[$curColumn] .= $letters[$i]; } } if ($inQuotes) throw new Exception('Error, Unexpected end of line (Check quotes)');  $curColumn = 0; if ($first) $first = false; else $curLine++; //Put this here so it only adds to the column number if the current row wasn't the first row (header) } //print_r($parsedCSV); //print_r($LastPassHeaders);  $output = '"Account","Login Name","Password","Web Site","Comments"'."\r\n"; //Alright, now reprint in xml format foreach ($parsedCSV as $row) { //print_r($row); //Don't output Generated passwords? if (isset($_POST["rgp"]) && $_POST["rgp"] && stristr($row['name'],'Generated Password for ')) continue;  //$output .= "<pwentry>\r\n";  foreach ($ColumnAssociation as $xmlstring) //first loop through each xml string { $nxml = $xmlstring; foreach ($LastPassHeaders as $name) //then loop through each possible variable in the string if (isset($row[$name])) //because if a column is empty, it isn't even set in the array $nxml = str_replace('%%'.$name.'%%',$row[$name],$nxml); //then replace found variables else $nxml = str_replace('%%'.$name.'%%','',$nxml); //just because it isn't set, doesn't mean it isn't a real variable, hide it  $output .= '"'.$nxml.'",'; } $output = substr($output,0,-1); //remove end, //$output .= "</pwentry>\r\n"; $output .= "\r\n"; }   header("Content-type:application/csv");  // It will be called lastpass-export.csv header("Content-Disposition:attachment;filename=lastpass-export.csv"); echo $output; } else { ?> <html> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST"> <textarea name="csvinput" cols="100" rows="20"></textarea><BR />  Remove Generated Passwords? <input type="checkbox" name="rgp"/ ><BR/>   <input type="submit" name="submit" value="Generate" /> </form> Created By Mazzzzz </body> </html> <?php } ?> 
Hey, Sie könnten auch einen Blick auf diese http://www.keepassx.org/forum/viewtopic.php?f=5&t=2077 werfen rzlines vor 13 Jahren 1
@mazzzzz Hallo, ist dein Skript sicher und sendet keine sensiblen Daten an dich? Haben Sie eine aktualisierte Version dieses Skripts? Boris_yo vor 12 Jahren 1
Ich stellte sicher, dass der Quellcode so erstellt wurde, dass er einem Peer-Review unterzogen werden kann (Sie haben Recht, dies sollte nicht der proprietären Software anvertrauen). Ich habe auch hier eine gute Punktzahl + stackoverflow.com; und niemand anderes hat es kommentiert, um ein Datenleck zu haben; Und wenn Sie sich nicht sicher fühlen, können Sie natürlich nach einer anderen Option suchen;). Ben vor 12 Jahren 1
4
Andrew Burns

As of 19/Dec/2012 the https://github.com/anirudhjoshi/lastpass2keepass script does indeed work.

Just export your LastPass data in CSV format then run it through the python script, then import it into KeePass (I used KeePassX)

2
Sathya

Exportieren Sie Ihre LastPass-Passwörter in eine CSV-Datei. Klicken Sie auf Lastpass Browser - Symbol, gehen Sie auf Tools> Export to> LastPass CSV file.

Als nächstes geht in KeePass auf File> Import> Generic CSV file. Dies sollte die Passwörter importieren.

Eine gute Idee, aber Keepass mag den Export von Lastpass nicht. Ben vor 13 Jahren 1
0
jno

Ab KeePassX 2.0.2 und lastpass2keepass vom 23. Oktober 2014 ist es nicht möglich, weder XML noch CSV in KeePassX zu importieren.
Es gibt einfach keine solche Schaltfläche (nur kdbImport vorgesehen).

Bekannte Problemumgehungen?

Ja, es ist KeePassXC - löschen Sie den Konvertierungsschritt und gehen Sie direkt zum CSV-Import (markieren Sie die erste Zeile als Feldnamen).