Search code examples
outlookjavapst

check if a pst file is password protected with java-libpst


I am using the open source library java-libpst to parse a outlook pst file.before parsing I want to know if the file is password protected or not.The problem us that this library opens password protected files without password,so I did not find any way to check if the file is password protected.

I can use any other java library for this purpose,provided they are open source.


Solution

  • In password protected pst files, ,nothing is actually encrypted .The Password of a pst file is stored against identifier 0x67FF.If there is no password the value stored is 0x00000000.This password is matched by outlook while opening pst file.Due to this reason,The java library java-libpst can also access all contents of password protected files without the actual need of password.

    To check if the file is password protected,using java-libpst use this:

         /**
         * checks if a pst file is password protected
         * 
         * @param file - pst file to check 
         * @return - true if protected,false otherwise
         * 
         * pstfile has the password stored against identifier 0x67FF.
         * if there is no password the value stored is 0x00000000.
         */
        private static boolean ifProtected(PSTFile file,boolean reomovePwd){
            try {
                String fileDetails = file.getMessageStore().getDetails();
                String[] lines = fileDetails.split("\n");
                for(String line:lines){
                    if(line.contains("0x67FF")){
                        if(line.contains("0x00000000"))
                            return false;
                        else
                            return true;
                    }
    
                }
            } catch (PSTException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return false;
        }