Foros del Web » Programación para mayores de 30 ;) » Java »

Decodificar clave de Windows

Estas en el tema de Decodificar clave de Windows en el foro de Java en Foros del Web. Bueno gente la cosa es asi, tengo una aplicacion que se conecta al registro de la maquina mediante WMI (usando la libreria de com4j), y ...
  #1 (permalink)  
Antiguo 08/07/2011, 07:34
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 10 meses
Puntos: 6
Decodificar clave de Windows

Bueno gente la cosa es asi, tengo una aplicacion que se conecta al registro de la maquina mediante WMI (usando la libreria de com4j), y leeo el DigitalProductId del sistema operativo, esto me devuelve un vector del tipo Object[] pero con valres binarios. El problema es que tengo que manipular ese vector e ir creando la clave de windows, he encontrado varios ejemplos en visual basic pero al traducirlos a java no funcionan correctamente. Adjunto los codigos y les agradeceria si alguien me puede dar una mano! Gracias

Codigo escrito en Visual.

Código:
Function GetKey(rpk)

Const rpkOffset=52:i=28
szPossibleChars="BCDFGHJKMPQRTVWXY2346789"
Do 
	dwAccumulator=0 : j=14
	Do
		dwAccumulator=dwAccumulator*256
		dwAccumulator=rpk(j+rpkOffset)+dwAccumulator
		rpk(j+rpkOffset)=(dwAccumulator\24) and 255 
		dwAccumulator=dwAccumulator Mod 24
		j=j-1
	Loop While j>=0
	i=i-1 : szProductKey=mid(szPossibleChars,dwAccumulator+1,1)&szProductKey
	if (((29-i) Mod 6)=0) and (i<>-1) then
		i=i-1 : szProductKey="-"&szProductKey
	End If
Loop While i>=0 

GetKey=szProductKey
End Function


Mi traduccion en JAVA.

Código:
public static String convertirCalveMSWindows(Object[] rpk) {
        String clave = "N/A";
        if (rpk.length != 0) {
            int rpkOffset = 52;
            int i = 28;
            String szPossibleChars = "BCDFGHJKMPQRTVWXY2346789";
            clave = "";
            while (i >= 0) {
                int dwAccumulator = 0;
                int j = 14;
                while (j >= 0) {
                    dwAccumulator = dwAccumulator * 256;
                    int val = Integer.parseInt(rpk[j + rpkOffset].toString());
                    dwAccumulator = val + dwAccumulator;
                    rpk[j + rpkOffset] = (dwAccumulator / 24) + 255;
                    dwAccumulator = dwAccumulator % 24;
                    j = j - 1;
                }
                i = i - 1;
                clave = clave + szPossibleChars.charAt(dwAccumulator);
                if ((29 - i) % 6 == 0 && i != -1) {
                    i = i - 1;
                    clave += "-";
                }
            }
        }
        return clave;
    }
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]

Etiquetas: clave, decodificar, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.