Según esta web, la contraseña para acceder a un repo Maven puede ser generada a partir de una contraseña maestra así:
$ mvn --encrypt-master-password Oone3vei {wsJL3n5FpasHjLctHj2HuHIoc8DBGtpIWp2bc40vkBU=} $ mvn --encrypt-password Thu8luuV {uD995k4e9YEHeRC0LWz4jIEv/kAt5Mt/up3X62RoJIs=} |
Es decir, si la contraseña maestra fuera Oone3vei, se generaría esto: {wsJL3n5FpasHjLctHj2HuHIoc8DBGtpIWp2bc40vkBU=}, lo que deberíamos guardar en el fichero settings-security.xml. A partir de esa contraseña maestra, podremos generar otras (¿para distintos repos Maven?¿para distintos usuarios del mismo repo?). En el ejemplo, tomando el password Thu8luuV, y a partir de la contraseña maestra, se generará el pass
{uD995k4e9YEHeRC0LWz4jIEv/kAt5Mt/up3X62RoJIs=}, que se guardará en setttings.xml.
Teniendo ambos ficheros, ¿es posible obtener el string que se usó como password y que generó el pass cifrado de settings.xml? Sí, usando el siguiente código Java:
import org.sonatype.plexus.components.cipher.DefaultPlexusCipher; import org.sonatype.plexus.components.cipher.PlexusCipher; import org.sonatype.plexus.components.cipher.PlexusCipherException; public class Prueba { public static void main(String[] args) { PlexusCipher cipher; try { cipher = new DefaultPlexusCipher(); String masterPw = cipher.decrypt("CO0lvhBKZAMHPlguhfnJAWS6zgpLe5BoQO/AwhVwJX/4UEPxkeqBjVKAq+yK37ft", "settings.security"); String appPw = cipher.decrypt("9FANUCx4GboHlC12nghO/i+oVV4RRSw1grsm6or+KiYJ2tSEAG5BSWAgq1QCmejj9Q4kpppWwU8caX2PioJD1w==", masterPw); System.out.println(appPw); } catch (PlexusCipherException e) { e.printStackTrace(); } } } |
Por cierto, necesitarás instalar los paquetes .jar de Plexus Cipher para poder compilar ese código:
$ sudo apt-get install libplexus-cipher-java |