Alle meine Passworte
alle meine Passworte
Greifen Sie weltweit auf Ihre Passwort-Datei zu. Mit AmP können Sie die verschlüsselte Passwort-Datei ins Internet, z.B. auf Ihre Webseite, übertragen. An einem anderen Ort können Sie AmP anweisen die Datei zu laden und zu öffnen. AMP gibt es nur für Windows.

KeePassX KeePassX KeePassX is available for Linux, Mac OS X , Windows and even on the Android smartphone (KeePassDroid).

PHP 5 & AMP (Alle meine Passworte) XML import in KeePassX XML

PHP 5 enthält die Erweiterung SimpleXML. Mit ihr kann XML in ein PHP Object umgewandelt werden.

Für die Gruppen und Einträge dürfen keine Sonderzeichen benutzt werden. [ß, &,:]

AMP_export.xml:
Paste your XML in the text-area above.
PHP Code:
<?php
if (isset($_POST['amp']) && $_POST['amp']!="" ) {
    
$xml simplexml_load_string(stripslashes($_POST['amp']));
    
$keepass_xml = new DOMDocument('1.0''UTF-8');
    
$keepass_xml->formatOutput true;    
    
$roo $keepass_xml->createElement('database');
    
$keepass_xml->appendChild($roo);
        
    foreach (
$xml->DATA->children() as $second_gen) {
        
$cha $keepass_xml->createElement('group');
        
$roo->appendChild($cha);        
        
$hea $keepass_xml->createElement('title',$second_gen->getName());
        
$cha->appendChild($hea);
        switch(
strtolower($second_gen->getName())){
            case 
"ftp":
                
$title_icon 3;
            break;
            case 
"email":
            case 
"e-mail":
                
$title_icon 19;
            break;
            case 
"internet":
                
$title_icon 1;
            break;
            case 
"backup":
                
$title_icon 4;
            break;
             default:
                 
$title_icon 0;
            }
        
$hea $keepass_xml->createElement('icon',$title_icon);
        
$cha->appendChild($hea);
        
$key 0;
        foreach (
$second_gen->Kategorie as $third_gen) {
            
$hea $keepass_xml->createElement('entry');
            
$cha->appendChild($hea);
            
            
$ent $keepass_xml->createElement('title',$second_gen->Bezeichnung[$key]);
            
$hea->appendChild($ent);
            if(
$second_gen->Benutzername[$key] == "n/a"){
                
$ent $keepass_xml->createElement('username');
                }else{
                
$ent $keepass_xml->createElement('username',$second_gen->Benutzername[$key]);
            }
            
$hea->appendChild($ent);
            if(
$second_gen->Passwort1[$key] == "n/a"){
                
$ent $keepass_xml->createElement('password');
                }else{
                
$ent $keepass_xml->createElement('password',htmlspecialchars($second_gen->Passwort1[$key]));
            }
            
$hea->appendChild($ent);
            if(
$second_gen->Ablaufdatum[$key] == "nie"){                
                }else{
                
$expire_day substr($second_gen->Ablaufdatum[$key],0,2);
                
$expire_month substr($second_gen->Ablaufdatum[$key],3,2);
                
$expire_yaer substr($second_gen->Ablaufdatum[$key],6);
                
$ent $keepass_xml->createElement('expire',"$expire_yaer-$expire_month-$expire_day"."T00:00:00");
                }
            
$hea->appendChild($ent);
            if(
$second_gen->URL_Programm[$key] == "n/a"){
                
$ent $keepass_xml->createElement('url');
                }else{
                
$ent $keepass_xml->createElement('url',$second_gen->URL_Programm[$key]);
                }
            
$hea->appendChild($ent);
            if(
$second_gen->Kommentar[$key] == "n/a"){
                
$ent $keepass_xml->createElement('comment');
                }else{
                
$ent $keepass_xml->createElement('comment',htmlspecialchars($second_gen->Kommentar[$key]));
            }
            
$hea->appendChild($ent);
            switch(
strtolower($second_gen->Kategorie[$key])){
            case 
"ftp":
                
$title_icon 3;
            break;
            case 
"email":
            case 
"e-mail":
                
$title_icon 19;
            break;
            case 
"internet":
                
$title_icon 1;
            break;
            case 
"backup":
                
$title_icon 4;
            break;
             default:
                 
$title_icon 0;
            }
            
$ent $keepass_xml->createElement('icon',$title_icon);
            
$hea->appendChild($ent);            
        
            
$key++;
        }
    }
    
$xmlfile $keepass_xml->saveXML() ;
    echo 
htmlentities($xmlfile);    
} else {
   echo(
'Paste your XML in the text-area above.');
}
?>
AMP_export.xml: Beispiel
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE AmP_FILE  [
<!ELEMENT INFO (AmP_Version, AmP_WWW, CREATE_DATE)>
<!ELEMENT AmP_Version (#PCDATA)>
<!ELEMENT AmP_WWW (#PCDATA)>
<!ELEMENT CREATE_DATA (#PCDATA)>
<!ELEMENT DATA (Eintrag*)>
<!ELEMENT Eintrag (Kategorie, Bezeichnung, Benutzername, Passwort1, Passwort2, Ablaufdatum, URL_Programm, Kommentar, Benutzerdefinierte_Felder)>
<!ELEMENT Kategorie (#PCDATA)>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Benutzername (#PCDATA)>
<!ELEMENT Passwort1 (#PCDATA)>
<!ELEMENT Passwort2 (#PCDATA)>
<!ELEMENT Ablaufdatum (#PCDATA)>
<!ELEMENT URL_Programm (#PCDATA)>
<!ELEMENT Kommentar (#PCDATA)>
<!ELEMENT Benutzerdefinierte_Felder (Benutzerfeld*)>
<!ELEMENT Benutzerfeld (name, wert)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT wert (#PCDATA)>
<!ENTITY iexcl "&amp;iexcl;">
<!ENTITY cent "&amp;cent;">
<!ENTITY pound "&amp;pound;">
<!ENTITY curren "&amp;curren;">
<!ENTITY yen "&amp;yen;">
<!ENTITY brvbar "&amp;brvbar;">
<!ENTITY sect "&amp;sect;">
<!ENTITY uml "&amp;uml;">
<!ENTITY copy "&amp;copy;">
<!ENTITY ordf "&amp;ordf;">
<!ENTITY laquo "&amp;laquo;">
<!ENTITY not "&amp;not;">
<!ENTITY shy "&amp;shy;">
<!ENTITY reg "&amp;reg;">
<!ENTITY macr "&amp;macr;">
<!ENTITY deg "&amp;deg;">
<!ENTITY plusmn "&amp;plusmn;">
<!ENTITY sup2 "&amp;sup2;">
<!ENTITY sup3 "&amp;sup3;">
<!ENTITY acute "&amp;acute;">
<!ENTITY micro "&amp;micro;">
<!ENTITY para "&amp;para;">
<!ENTITY middot "&amp;middot;">
<!ENTITY cedille "&amp;cedille;">
<!ENTITY sup1 "&amp;sup1;">
<!ENTITY ordm "&amp;ordm;">
<!ENTITY raquo "&amp;raquo;">
<!ENTITY frac14 "&amp;frac14;">
<!ENTITY frac12 "&amp;frac12;">
<!ENTITY frac34 "&amp;frac34;">
<!ENTITY iquest "&amp;iquest;">
<!ENTITY Agrave "&amp;Agrave;">
<!ENTITY Aacute "&amp;Aacute;">
<!ENTITY Acirc "&amp;Acirc;">
<!ENTITY Atilde "&amp;Atilde;">
<!ENTITY Auml "&amp;Auml;">
<!ENTITY Aring "&amp;Aring;">
<!ENTITY AElig "&amp;AElig;">
<!ENTITY Ccedil "&amp;Ccedil;">
<!ENTITY Egrave "&amp;Egrave;">
<!ENTITY Eacute "&amp;Eacute;">
<!ENTITY Ecirc "&amp;Ecirc;">
<!ENTITY Euml "&amp;Euml;">
<!ENTITY Igrave "&amp;Igrave;">
<!ENTITY Iacute "&amp;Iacute;">
<!ENTITY Icirc "&amp;Icirc;">
<!ENTITY Iuml "&amp;Iuml;">
<!ENTITY ETH "&amp;ETH;">
<!ENTITY Ntilde "&amp;Ntilde;">
<!ENTITY Ograve "&amp;Ograve;">
<!ENTITY Oacute "&amp;Oacute;">
<!ENTITY Ocirc "&amp;Ocirc;">
<!ENTITY Otilde "&amp;Otilde;">
<!ENTITY Ouml "&amp;Ouml;">
<!ENTITY times "&amp;times;">
<!ENTITY Oslash "&amp;Oslash;">
<!ENTITY Ugrave "&amp;Ugrave;">
<!ENTITY Uacute "&amp;Uacute;">
<!ENTITY Ucirc "&amp;Ucirc;">
<!ENTITY Uuml "&amp;Uuml;">
<!ENTITY Yacute "&amp;Yacute;">
<!ENTITY THORN "&amp;THORN;">
<!ENTITY szlig "&amp;szlig;">
<!ENTITY agrave "&amp;agrave;">
<!ENTITY aacute "&amp;aacute;">
<!ENTITY acirc "&amp;acirc;">
<!ENTITY atilde "&amp;atilde;">
<!ENTITY auml "&amp;auml;">
<!ENTITY aring "&amp;aring;">
<!ENTITY aelig "&amp;aelig;">
<!ENTITY ccedil "&amp;ccedil;">
<!ENTITY egrave "&amp;egrave;">
<!ENTITY eacute "&amp;eacute;">
<!ENTITY ecirc "&amp;ecirc;">
<!ENTITY euml "&amp;euml;">
<!ENTITY igrave "&amp;igrave;">
<!ENTITY iacute "&amp;iacute;">
<!ENTITY icirc "&amp;icirc;">
<!ENTITY iuml "&amp;iuml;">
<!ENTITY eth "&amp;eth;">
<!ENTITY ntilde "&amp;ntilde;">
<!ENTITY ograve "&amp;ograve;">
<!ENTITY oacute "&amp;oacute;">
<!ENTITY ocirc "&amp;ocirc;">
<!ENTITY otilde "&amp;otilde;">
<!ENTITY ouml "&amp;ouml;">
<!ENTITY divide "&amp;divide;">
<!ENTITY oslash "&amp;oslash;">
<!ENTITY ugrave "&amp;ugrave;">
<!ENTITY uacute "&amp;uacute;">
<!ENTITY ucirc "&amp;ucirc;">
<!ENTITY uuml "&amp;uuml;">
<!ENTITY yacute "&amp;yacute;">
<!ENTITY thorn "&amp;thorn;">
<!ENTITY yuml "&amp;yuml;">
]>
<AmP_FILE>
<INFO>
<AmP_Version>3.11</AmP_Version>
<AmP_WWW>http://www.alle-meine-passworte.de/</AmP_WWW>
<CREATE_DATE>08.09.2010 12:36:36</CREATE_DATE>
</INFO>
<DATA>
<Internet>
<Kategorie>Internet</Kategorie>
<Bezeichnung>flashdictionary.de.vu</Bezeichnung>
<Benutzername>public</Benutzername>
<Passwort1>n/a</Passwort1>
<Passwort2>keins</Passwort2>
<Ablaufdatum>nie</Ablaufdatum>
<URL_Programm>http://www.flashdictionary.de.vu</URL_Programm>
<Kommentar>n/a</Kommentar>
<Kategorie>Internet</Kategorie>
<Bezeichnung>filomatic.de</Bezeichnung>
<Benutzername>n/a</Benutzername>
<Passwort1>n/a</Passwort1>
<Passwort2>keins</Passwort2>
<Ablaufdatum>nie</Ablaufdatum>
<URL_Programm>http://www.filomatic.de</URL_Programm>
<Kommentar>file based CMS</Kommentar>
</Internet>
<youtube>
<Kategorie>youtube</Kategorie>
<Bezeichnung>YouTube</Bezeichnung>
<Benutzername>n/a</Benutzername>
<Passwort1>n/a</Passwort1>
<Passwort2>keins</Passwort2>
<Ablaufdatum>nie</Ablaufdatum>
<URL_Programm>http://www.youtube.com</URL_Programm>
<Kommentar>n/a</Kommentar>
</youtube>
<FTP>
<Kategorie>FTP</Kategorie>
<Bezeichnung>quake3stuff.dyndns.org</Bezeichnung>
<Benutzername>n/a</Benutzername>
<Passwort1>n/a</Passwort1>
<Passwort2>keins</Passwort2>
<Ablaufdatum>nie</Ablaufdatum>
<URL_Programm>http://quake3stuff.dyndns.org/DISK%202/</URL_Programm>
<Kommentar>n/a</Kommentar>
</FTP>
<E-Mail>
<Kategorie>E-Mail</Kategorie>
<Bezeichnung>GMX - roman-pantring@gmx.de</Bezeichnung>
<Benutzername>n/a</Benutzername>
<Passwort1>n/a</Passwort1>
<Passwort2>keins</Passwort2>
<Ablaufdatum>09.09.2010</Ablaufdatum>
<URL_Programm>http://www.roman-pantring.de</URL_Programm>
<Kommentar>n/a</Kommentar>
</E-Mail>
</DATA>
</AmP_FILE>

PHP Code: Struktur der XML Datei

<?php
if (file_exists('AMP_export.xml')) {
   
$xml simplexml_load_file('AMP_export.xml');
    echo(
'<pre>');
    
print_r($xml);
    echo 
$xml->DATA->Internet->Bezeichnung.'<br>';
    echo 
$xml->DATA->Internet->Bezeichnung[1].'<br>';
    echo 
$xml->DATA->FTP->Bezeichnung[0].'<br>';
    echo 
'size: '.count($xml->DATA->Internet->Kategorie).'<br>';
    echo 
'size: '.count($xml->DATA->children()).'<br>';
    echo(
'</pre>');
    
} else {
   exit(
'Konnte Datei nicht laden.');
}
?>

Rückgabe: Struktur der XML Datei

SimpleXMLElement Object
(
    [INFO] => SimpleXMLElement Object
        (
            [AmP_Version] => 3.11
            [AmP_WWW] => http://www.alle-meine-passworte.de/
            [CREATE_DATE] => 08.09.2010 12:36:36
        )

    [DATA] => SimpleXMLElement Object
        (
            [Internet] => SimpleXMLElement Object
                (
                    [Kategorie] => Array
                        (
                            [0] => Internet
                            [1] => Internet
                        )

                    [Bezeichnung] => Array
                        (
                            [0] => flashdictionary.de.vu
                            [1] => filomatic.de
                        )

                    [Benutzername] => Array
                        (
                            [0] => public
                            [1] => n/a
                        )

                    [Passwort1] => Array
                        (
                            [0] => n/a
                            [1] => n/a
                        )

                    [Passwort2] => Array
                        (
                            [0] => keins
                            [1] => keins
                        )

                    [Ablaufdatum] => Array
                        (
                            [0] => nie
                            [1] => nie
                        )

                    [URL_Programm] => Array
                        (
                            [0] => http://www.flashdictionary.de.vu
                            [1] => http://www.filomatic.de
                        )

                    [Kommentar] => Array
                        (
                            [0] => n/a
                            [1] => file based CMS
                        )

                )

            [youtube] => SimpleXMLElement Object
                (
                    [Kategorie] => youtube
                    [Bezeichnung] => YouTube
                    [Benutzername] => n/a
                    [Passwort1] => n/a
                    [Passwort2] => keins
                    [Ablaufdatum] => nie
                    [URL_Programm] => http://www.youtube.com
                    [Kommentar] => n/a
                )

            [FTP] => SimpleXMLElement Object
                (
                    [Kategorie] => FTP
                    [Bezeichnung] => quake3stuff.dyndns.org
                    [Benutzername] => n/a
                    [Passwort1] => n/a
                    [Passwort2] => keins
                    [Ablaufdatum] => nie
                    [URL_Programm] => http://quake3stuff.dyndns.org/DISK%202/
                    [Kommentar] => n/a
                )

            [E-Mail] => SimpleXMLElement Object
                (
                    [Kategorie] => E-Mail
                    [Bezeichnung] => GMX - roman-pantring@gmx.de
                    [Benutzername] => n/a
                    [Passwort1] => n/a
                    [Passwort2] => keins
                    [Ablaufdatum] => 09.09.2010
                    [URL_Programm] => http://www.roman-pantring.de
                    [Kommentar] => n/a
                )

        )

)
flashdictionary.de.vu
filomatic.de
quake3stuff.dyndns.org
size: 2
size: 4

Alle meine Passworte export XML in KeePassX export XML

PHP Code:
<?php
if (file_exists('AMP_export.xml')) {
    
$xml simplexml_load_file('AMP_export.xml');
    
$keepass_xml = new DOMDocument('1.0''UTF-8');
    
$keepass_xml->formatOutput true;    
    
$roo $keepass_xml->createElement('database');
    
$keepass_xml->appendChild($roo);
        
    foreach (
$xml->DATA->children() as $second_gen) {
        
$cha $keepass_xml->createElement('group');
        
$roo->appendChild($cha);        
        
$hea $keepass_xml->createElement('title',$second_gen->getName());
        
$cha->appendChild($hea);
        switch(
strtolower($second_gen->getName())){
            case 
"ftp":
                
$title_icon 3;
            break;
            case 
"email":
            case 
"e-mail":
                
$title_icon 19;
            break;
            case 
"internet":
                
$title_icon 1;
            break;
            case 
"backup":
                
$title_icon 4;
            break;
             default:
                 
$title_icon 0;
            }
        
$hea $keepass_xml->createElement('icon',$title_icon);
        
$cha->appendChild($hea);
        
$key 0;
        foreach (
$second_gen->Kategorie as $third_gen) {
            
$hea $keepass_xml->createElement('entry');
            
$cha->appendChild($hea);
            
            
$ent $keepass_xml->createElement('title',$second_gen->Bezeichnung[$key]);
            
$hea->appendChild($ent);
            if(
$second_gen->Benutzername[$key] == "n/a"){
                
$ent $keepass_xml->createElement('username');
                }else{
                
$ent $keepass_xml->createElement('username',$second_gen->Benutzername[$key]);
            }
            
$hea->appendChild($ent);
            if(
$second_gen->Passwort1[$key] == "n/a"){
                
$ent $keepass_xml->createElement('password');
                }else{
                
$ent $keepass_xml->createElement('password',$second_gen->Passwort1[$key]);
            }
            
$hea->appendChild($ent);
            if(
$second_gen->Ablaufdatum[$key] == "nie"){                
                }else{
                
$expire_day substr($second_gen->Ablaufdatum[$key],0,2);
                
$expire_month substr($second_gen->Ablaufdatum[$key],3,2);
                
$expire_yaer substr($second_gen->Ablaufdatum[$key],6);
                
$ent $keepass_xml->createElement('expire',"$expire_yaer-$expire_month-$expire_day"."T00:00:00");
                }
            
$hea->appendChild($ent);
            if(
$second_gen->URL_Programm[$key] == "n/a"){
                
$ent $keepass_xml->createElement('url');
                }else{
                
$ent $keepass_xml->createElement('url',$second_gen->URL_Programm[$key]);
                }
            
$hea->appendChild($ent);
            if(
$second_gen->Kommentar[$key] == "n/a"){
                
$ent $keepass_xml->createElement('comment');
                }else{
                
$ent $keepass_xml->createElement('comment',$second_gen->Kommentar[$key]);
            }
            
$hea->appendChild($ent);
            switch(
strtolower($second_gen->Kategorie[$key])){
            case 
"ftp":
                
$title_icon 3;
            break;
            case 
"email":
            case 
"e-mail":
                
$title_icon 19;
            break;
            case 
"internet":
                
$title_icon 1;
            break;
            case 
"backup":
                
$title_icon 4;
            break;
             default:
                 
$title_icon 0;
            }
            
$ent $keepass_xml->createElement('icon',$title_icon);
            
$hea->appendChild($ent);            
        
            
$key++;
        }
    }
    
$keepass_xml->save('KeePassX.xml');
    
} else {
   exit(
'Konnte Datei nicht laden.');
}
?>
KeePassX.xml:
<?xml version="1.0" encoding="UTF-8"?>
<database>
  <group>
    <title>Internet</title>
    <icon>1</icon>
    <entry>
      <title>flashdictionary.de.vu</title>
      <username>public</username>
      <password/>
      <url>http://www.flashdictionary.de.vu</url>
      <comment/>
      <icon>1</icon>
    </entry>
    <entry>
      <title>filomatic.de</title>
      <username/>
      <password/>
      <url>http://www.filomatic.de</url>
      <comment>file based CMS</comment>
      <icon>1</icon>
    </entry>
  </group>
  <group>
    <title>youtube</title>
    <icon>0</icon>
    <entry>
      <title>YouTube</title>
      <username/>
      <password/>
      <url>http://www.youtube.com</url>
      <comment/>
      <icon>0</icon>
    </entry>
  </group>
  <group>
    <title>FTP</title>
    <icon>3</icon>
    <entry>
      <title>quake3stuff.dyndns.org</title>
      <username/>
      <password/>
      <url>http://quake3stuff.dyndns.org/DISK%202/</url>
      <comment/>
      <icon>3</icon>
    </entry>
  </group>
  <group>
    <title>E-Mail</title>
    <icon>19</icon>
    <entry>
      <title>GMX - roman-pantring@gmx.de</title>
      <username/>
      <password/>
      <expire>2010-09-09T00:00:00</expire>
      <url>http://www.roman-pantring.de</url>
      <comment/>
      <icon>19</icon>
    </entry>
  </group>
</database>

PHP docs: file_exists simplexml_load_file count children()

Quelle: dr.web.de - PHP und XML: Einfach einfach!