Skip to content

Latest commit

 

History

History
155 lines (135 loc) · 4.72 KB

201507251700.txt.md

File metadata and controls

155 lines (135 loc) · 4.72 KB

/*

  • Copyleft (c) 2014, 2025

  • Author : quard@pediy
  •      : wangshy@pediy
  • Maintain : scz [email protected]
  •      : http://scz.617.cn/misc/201507251700.txt
  • Version : 1.5.201408040(full)
  • Compile : javac -g keygen.java
  • Run : java keygen
  •      :
  • Create : 2014-04-23 17:01
  • Modify : 2015-07-28 17:25

  • The only thing they can't take from us are our minds. !H / import java.io.; import java.lang.Runtime; import java.util.Scanner; import java.nio.; import java.security.; import java.math.*;

class keygen { private static String License_GetSerialNumber () { String str1 = null; Runtime localRuntime = Runtime.getRuntime(); Process localProcess;

    try
    {
        String[]    localObject1    = { "wmic", "bios", "get", "serialnumber" };

        localProcess    = localRuntime.exec( localObject1 );
    }
    catch ( IOException localIOException1 )
    {
        return( null );
    }

    OutputStream    localOutputStream   = localProcess.getOutputStream();
    InputStream     localInputStream    = localProcess.getInputStream();

    try
    {
        localOutputStream.close();
    }
    catch ( IOException localIOException2 )
    {
        return( null );
    }

    Scanner         localObject1        = new Scanner( localInputStream );

    try
    {
        String  str2    = "SerialNumber";

        while ( localObject1.hasNext() )
        {
            String  str3    = localObject1.next();

            if ( str2.equals( str3 ) )
            {
                str1    = localObject1.next().trim();
                break;
            }
        }  /* end of while */
        localObject1.close();
    }
    finally
    {
        localObject1.close();
    }
    return( str1 );
}  /* end of License_GetSerialNumber */

private static int License_sum ( int paramInt )
{
    int i   = 0;

    while ( paramInt > 0 )
    {
        i          += ( paramInt & 0xF );
        paramInt  >>= 4;
    }  /* end of while */
    return( i % 10 );
}  /* end of License_sum */

private static long License_GetMachineId ( String SerialNumber )
{
    try
    {
        MessageDigest   localMessageDigest  = MessageDigest.getInstance( "MD5" );

        localMessageDigest.update( SerialNumber.getBytes() );

        byte[]          arrayOfByte         = localMessageDigest.digest();
        ByteBuffer      localByteBuffer     = ByteBuffer.wrap( arrayOfByte );

        localByteBuffer.order( ByteOrder.LITTLE_ENDIAN );
        return( localByteBuffer.getLong() & 0xFFFFFFFF );
    }
    catch ( NoSuchAlgorithmException localNoSuchAlgorithmException )
    {
        throw new RuntimeException( localNoSuchAlgorithmException );
    }
}  /* end of License_GetMachineId */

private static long License_GetMachineId_2 ( long MachineId )
{
    int         i   = ( int )( MachineId & 0xFFFFFFFF );
    int         j   = ( int )( MachineId >> 32 & 0xFFFFFFFF );
    int         n   = i + 376273029 + 287454020 & 0xFFFFFFFF;
    int         i1  = j - 52416167 + 1432778632 & 0x7FFFFFFF;
    ByteBuffer  buf = ByteBuffer.allocateDirect( 8 );

    buf.putInt( i1 );
    buf.putInt( n );
    buf.rewind();
    return( buf.getLong() );
}  /* end of License_GetMachineId_2 */

private static String License_GenerateKey ( long MachineId, long time )
{
    long    l = License_GetMachineId_2( MachineId );
    int     t = ( int )time ^ 0x56739ACD;
    return( String.format( "%dZ%d%d", l, t, License_sum( t ) ) );
}  /* end of License_GenerateKey */

public static void main ( String[] args )
{
    String  SerialNumber    = License_GetSerialNumber();
    long    MachineId       = License_GetMachineId( SerialNumber );
    long    time            = System.currentTimeMillis() / 1000L + 86400 * 365 * 100;

    System.out.print
    (
        String.format
        (
            "SerialNumber    : %s\n" +
            "MachineId       : %x\n" +
            "MachineId_2     : %x\n" +
            "License key     : %s\n",
            SerialNumber,
            MachineId,
            License_GetMachineId_2( MachineId ),
            License_GenerateKey( MachineId, time )
        )
    );
    return;
}  /* end of main */

} /* end of class keygen */