Jump to content

ccorkrum

Members
  • Content Count

    0
  • Joined

  • Last visited

Community Reputation

1 Neutral

About ccorkrum

  • Rank
    Newbie

Recent Profile Visitors

51 profile views
  1. Anyone know where to find NSX-T 2.5.2.2?
  2. Do DLFs exist for OpenStack 6 or 7? Anyone like to share if so? 6 and 7 would be great, I'd like to take a look at both versions.
  3. root0, could you upload NSX-T 2.5.2.1? I'd appreciate it very much, thanks
  4. root0 can you upload NSX-T 2.5.2?
  5. root0, can you upload vrli 8.1.1 thanks
  6. root0, Think you can upload vRLI 8.1.1 to the regular spot? Thanks
  7. root0 do you have the hash for vCloud Director 10? Couldn't find it on the appliance so not sure where folks are finding it, thanks
  8. Here is the hash to make one using the provided keygen in this thread VMware vRealize Suite 2019 Enterprise Hash2 = "0390678c-698117c3-74b07aec-d58c197e-ab426df1"
  9. Can you do the pak file for log insight 8.0? Was hoping VMUG would get updated as it looks to be getting the latest stuff now but I guess it's a bit to soon for hoping vRLI 8 would be up.
  10. I used Windows 2016 and OpenJDK 8u201
  11. Because it's the coolest thing ever... Download and install Visual Studio Code and OpenJDK from Red Hat, inside VS Code install the Java Extension Pack Save the following code as KeyGenerator.java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.BitSet; import java.util.Random; public class KeyGenerator { private String _ProductHash; public KeyGenerator(String ProductHash) { _ProductHash = ProductHash; } Random _random = new Random(); public String GenerateSerial(int count, int version, boolean[] addons) { try { if (addons == null) addons = new boolean[]{true, true, true, true, true}; if (addons.length != 5) throw new IllegalArgumentException("Addon array length is not 5."); if (version > 31 || version < 0) throw new IllegalArgumentException("Version field needs to be within 0 to 31."); if (count > 65535 || count < 0) throw new IllegalArgumentException("Count field needs to be within 0 to 65535."); BitSet bitset = new BitSet(125); SetBitSetValue(bitset, 80, 25, GetRandomNumber(25), "UnitID - Random"); SetBitSetValue(bitset, 105, 5, version, "Version (Product Specific)"); SetBitSetValue(bitset, 110, 15, GetRandomNumber(15), "BatchId - Random"); if (version >= 6) { SetBitSetValue(bitset, 45, 16, count, "Count - User Specified"); SetBitSetValue(bitset, 61, 2, 0, "Support - 0"); SetBitSetValue(bitset, 63, 3, 0, "Subscription - 0"); SetBitSetValue(bitset, 66, 2, 0, "Expiration - 0"); SetBitSetValue(bitset, 68, 12, 0, "Issue - 0 (Used for calculating end date)"); } if (version >= 8) { int startingPos = 40; for (int i = 0; i < 5; i++) { bitset.set(startingPos + i, addons); } } SetBitSetValue(bitset, 0, 40, CalculateHash(bitset), "Hash / checksum (Yes, that fold operation converts bytes wrong. It's VMware's fault.)"); return EncodeBitSet(PermutateBitSet(bitset)); } catch(Throwable e) { return "Something has gone horribly wrong."; } } private String EncodeBitSet(BitSet bitset) { int[] permutation = { 25, 21, 1, 16, 19, 0, 20, 8, 22, 24, 27, 2, 9, 10, 6, 14, 26, 28, 3, 4, 12, 13, 7, 15, 18 }; char[] serial = new char[29]; serial[5] = serial[11] = serial[17] = serial[23] = '-'; for (int i = 0; i < 25; i++) { int pos = permutation; int charpos = GetBitSetValue(bitset,i * 5, 5); serial[pos] = "0123456789ACDEFGHJKLMNPQRTUVWXYZ".charAt(charpos); } return new String(serial); } private BitSet PermutateBitSet(BitSet bitset) { BitSet newBitSet = new BitSet(125); int Counter1 = 0; int Counter2 = 40; int Counter3 = 80; int ShiftOffset = 21; for(int i1 = 0; i1 < 5; i1++) { for(int i2 = 0; i2 < ShiftOffset; i2++) { if((i2 % 3 == 0) || (i2 == 20)) { newBitSet.set(ShiftOffset * i1 + i2,bitset.get(Counter1)); Counter1++; } else if ((i2 % 2 == 1) || (i2 == 16)) { newBitSet.set(ShiftOffset * i1 + i2,bitset.get(Counter2)); Counter2++; } else { newBitSet.set(ShiftOffset * i1 + i2,bitset.get(Counter3)); Counter3++; } } } for(int i1 = 105; i1 < 125; i1++) { newBitSet.set(i1,bitset.get(i1)); } return newBitSet; } private long CalculateHash(BitSet bitset) throws NoSuchAlgorithmException { byte[] HashSeed = { 125, -57, -119, -7, 105, 93, 113, -112, -6, -124, 34, -54, -65, 29, -64, -64, -120, 66, 55, -43, 112, -128, 46, -125, -57, -110, -93, 89, -58, -107, 36, -65 }; MessageDigest hash = MessageDigest.getInstance("SHA-1"); for (int i = 0; i < 11; i++) { hash.update((byte)GetBitSetValue(bitset, 40 + (i * 8), 8)); } hash.update(_ProductHash.getBytes(),0,_ProductHash.length()); hash.update(HashSeed); return (FoldHash(hash.digest())); } public static long FoldHash(byte[] FullHash) { long[] convertedBytes = new long[FullHash.length]; for (int i = 0; i < FullHash.length; i++) { int value = FullHash; if(value < 0) { value = value & 255; } convertedBytes = value; } return (convertedBytes[0] ^ convertedBytes[5] ^ convertedBytes[10] ^ convertedBytes[15]) | (convertedBytes[1] ^ convertedBytes[6] ^ convertedBytes[11] ^ convertedBytes[16]) << 8 | (convertedBytes[2] ^ convertedBytes[7] ^ convertedBytes[12] ^ convertedBytes[17]) << 16 | (convertedBytes[3] ^ convertedBytes[8] ^ convertedBytes[13] ^ convertedBytes[18]) << 24 | (convertedBytes[4] ^ convertedBytes[9] ^ convertedBytes[14] ^ convertedBytes[19]) << 32; } private int GetRandomNumber(int bits) { return _random.nextInt((int)Math.pow(2, bits)); } private int GetBitSetValue(BitSet bitset, int position, int bits) { int result = 0; for(int i = 0; i < bits; i++) { if(bitset.get(position + i)) { result += (1 << (i)); } } return result; } private void SetBitSetValue(BitSet bitset, int position, int bits, long value,String comment) { for(int i = 0; i < bits; i++) { bitset.set(position + i, ((value >> i) & 1) == 1); } } public static void main(String[] args) { String productHash = "46edf894-8c1cfa96-ad8093ca-211d929d-3091a188"; // This is totally random and not a valid product: look at the Hash or Hash2 fields in any of the DLFs in the above dump for real values KeyGenerator keygen = new KeyGenerator(productHash); String serial = keygen.GenerateSerial(0, 8, null); // 0 count (Unlimited), version 8, null flags (defaults to all true) System.out.println(serial); } } Open the file in VS Code, replace the hash with whatever you need from the DLF archive and click Run. Run showed up just above the public static void at the bottom. Pretty sweet, already ran it a few times with different hash's and it works great. ShaRose rocks man, thanks!
  12. Anyone figure out how to use the code snippets from ShaRose? Easy enough swapping the hash to generate keys for specific products after vuser provided pretty much all the hash's.
  13. keygen exist for the vrealize suite? like for 2017 or 2018, prefer 2018, thanks
×
×
  • Create New...