/* # BackDoor authentication script for CommuniGate Pro # # Each CGPro account can have several passwords at a time: (1) the internal # CGPro password, (2) the OS password, (3) any number of passwords accepted by # the external authentication program. If any of those passords match the # submitted password, you're granted the access to the account. # # This sample script will allow you to create back-door access to all CGPro # accounts (which are allowed to use external authenticatir) using the same # password for all of them. This may be needed, for example, when doing # a mass mail migration via MoveIMAPMail utility. # # The program should be compiled using: # javac authBackDoor.java # and launched using: # java -classpath /path authBackDoor the_password # where "/path" is the path to the directory with the authBackDoor.class file # and "the_password" is your common password. # # Originator page: # # # Related page(s): # # */ import java.lang.*; import java.util.Vector; public class authBackDoor { static String commonPassword; static Vector readInput() { Vector data=new Vector(); StringBuffer str=new StringBuffer(); for(;;) { try { int ch=System.in.read(); if(ch==-1) return null; else if(ch==' ' || ch=='\n') { data.addElement(str.toString()); str.setLength(0); if(ch=='\n') break; } else str.append((char)ch); }catch(java.io.IOException e) { return null; } } return data; } public static void main(String argv[]){ if(argv.length != 1) { System.out.println("Usage: java authBackDoor the_passowrd"); return; } commonPassword=argv[0]; Vector data; System.out.println("* sample Java authentication program started"); while((data=readInput())!=null) { //System.out.println(data); String prefix=(String)data.elementAt(0); String command=(String)data.elementAt(1); if(command.compareTo("INTF")==0) { System.out.println(prefix+" INTF 1"); } else if(command.compareTo("QUIT")==0) { System.out.println(prefix+" OK"); break; } else if(command.compareTo("VRFY")==0) { String thePassword; if( ((String)data.elementAt(2)).charAt(0)=='(') { thePassword=(String)data.elementAt(4); } else { thePassword=(String)data.elementAt(3); } if(thePassword.compareTo(commonPassword)==0) { System.out.println(prefix+" OK"); } else { System.out.println(prefix+" ERROR incorrect password"); } } else if(command.startsWith("SASL(")) { System.out.println(prefix+" ERROR oly plain text logins supported"); } else { System.out.println("* unknown command"); System.out.println(prefix+" OK"); } System.out.flush(); } System.out.println("* sample Java authentication program stopped"); } }