Package de.willuhn.jameica.hbci.passports.rdh

Source Code of de.willuhn.jameica.hbci.passports.rdh.RDHNewDump

/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/src/de/willuhn/jameica/hbci/passports/rdh/RDHNewDump.java,v $
* $Revision: 1.2 $
* $Date: 2011/01/17 17:32:33 $
* $Author: willuhn $
* $Locker:  $
* $State: Exp $
*
* Copyright (c) by willuhn software & services
* All rights reserved
*
**********************************************************************/

package de.willuhn.jameica.hbci.passports.rdh;

import java.io.CharConversionException;
import java.io.FileInputStream;

import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Element;
import org.xml.sax.SAXException;

/**
* Kleine dreckige Testklasse, um eine HBCI4Java-Schluesseldiskette
* zu entschluesseln und den XML-Inhalt unverschluesselt auf die
* Console zu schreiben. Das Tool dient nur zu Debugging-Zwecken,
* um mal nachschauen zu koennen, was genau in der Schluesseldiskette
* drin steht.
* Der Code ist aus "HBCIPassportRDHNew" (HBCI4Java) zusammenkopiert.
* Aufruf:
*
* java -cp hbci4java-....jar \
*   de.willuhn.jameica.hbci.passports.rdh.RDHNewDump \
*   <Schluesseldatei> <Passwort>
*
*/
public class RDHNewDump
{

  /**
   * @param args
   * @throws Exception
   */
  public static void main(String[] args) throws Exception
  {
    if (args == null || args.length != 2)
    {
      System.err.println("Usage:");
      System.err.println("java -cp hbci4java-....jar \\" +
                         "\n  de.willuhn.jameica.hbci.passports.rdh.RDHNewDump \\" +
                         "\n  <Schluesseldatei> <Passwort>\n");
      System.exit(1);
    }
   
    final byte[] CIPHER_SALT={(byte)0x26,(byte)0x19,(byte)0x38,(byte)0xa7,(byte)0x99,(byte)0xbc,(byte)0xf1,(byte)0x55};
    final int CIPHER_ITERATIONS=987;

    SecretKeyFactory fac=SecretKeyFactory.getInstance("PBEWithMD5AndDES");
    PBEKeySpec keyspec=new PBEKeySpec(args[1].toCharArray());
    SecretKey passportKey=fac.generateSecret(keyspec);
    keyspec.clearPassword();

    PBEParameterSpec paramspec=new PBEParameterSpec(CIPHER_SALT,CIPHER_ITERATIONS);
    Cipher cipher=Cipher.getInstance("PBEWithMD5AndDES");
    cipher.init(Cipher.DECRYPT_MODE,passportKey,paramspec);

    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    dbf.setValidating(false);
    DocumentBuilder db=dbf.newDocumentBuilder();

    Element root = null;
    CipherInputStream ci = null;
    try
    {
      ci = new CipherInputStream(new FileInputStream(args[0]),cipher);
      root=db.parse(ci).getDocumentElement();
    }
    catch (CharConversionException e1)
    {
      System.out.println("Passwort falsch (JDK 1.5+)");
    }
    catch (SAXException e)
    {
      System.out.println("Passwort falsch (bis JDK 1.4)");
      return;
    }
    finally
    {
      if (ci != null)
        ci.close();
    }

    TransformerFactory tfac=TransformerFactory.newInstance();
    Transformer tform=tfac.newTransformer();
   
    tform.setOutputProperty(OutputKeys.METHOD,"xml");
    tform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"no");
    tform.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
    tform.setOutputProperty(OutputKeys.INDENT,"yes");
   
    tform.transform(new DOMSource(root),new StreamResult(System.out));
  }

}


/*********************************************************************
* $Log: RDHNewDump.java,v $
* Revision 1.2  2011/01/17 17:32:33  willuhn
* *** empty log message ***
*
* Revision 1.1  2010/06/17 11:26:48  willuhn
* @B In HBCICallbackSWT wurden die RDH-Passports nicht korrekt ausgefiltert
* @C komplettes Projekt "hbci_passport_rdh" in Hibiscus verschoben - es macht eigentlich keinen Sinn mehr, das in separaten Projekten zu fuehren
* @N BUGZILLA 312
* @N Neue Icons in Schluesselverwaltung
* @N GUI-Polish in Schluesselverwaltung
*
* Revision 1.3  2007/07/11 17:21:44  willuhn
* *** empty log message ***
*
* Revision 1.2  2007/07/11 17:21:25  willuhn
* *** empty log message ***
*
* Revision 1.1  2007/07/11 17:19:39  willuhn
* @N Tool, um den XML-Inhalt einer Schluesseldiskette auf der Konsole auszugeben
*
**********************************************************************/
TOP

Related Classes of de.willuhn.jameica.hbci.passports.rdh.RDHNewDump

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.