public FileMutatedBKG(BasylKeyGenerator keyGen, Stream stream) { this.generator = keyGen; this.cipher = new BESCipher(keyGen); byte[] extra = new byte[100]; byte[] extra2 = new byte[64]; int amount = 65536; while (amount != 0) { byte[] buffer = new byte[amount]; while (stream.Position + amount < stream.Length) { stream.Read(buffer, 0, amount); cipher.EncryptRight(ref buffer); cipher.EncryptLeft(ref extra); cipher.EncryptRight(ref extra2); } cipher.EncryptLeft(ref extra2); cipher.Shuffle(2); amount /= 2; } prg = new PseudoRandomGenerator(256 * 256, "MutatedBKG", 500); prg.ExpandKey(1); prg.SetSeedKey(extra); prg.SetSHA(extra2); prg.Recycle(); stream.Close(); }
private string GenerateRandomFunction(string keyPhrase) { BasylKeyGenerator generator = new BasylKeyGenerator(keyPhrase, BasylKeyGenerator.INITIAL / 4, BasylKeyGenerator.ROUNDS, BasylKeyGenerator.LEFTOFF, BasylKeyGenerator.EXPANSION / 20, BasylKeyGenerator.ADDITIONALKEY, new byte[32], new byte[4], new byte[4], true, new StrongerBasylPseudoAdaptor()); List <String> variables = new List <string>(); List <String> operators = new List <string>(); variables.Add("seed"); variables.Add("pos"); operators.AddRange("+,*,%,^,|,&,+,*,*,+".Split(',')); bool operMode = false; String res = "pos * seed + pos + "; while ((generator.GetRandomByte() % 29) != (generator.GetRandomByte() % 29) || !operMode) { if (operMode) { res += operators[generator.GetRandomByte() % operators.Count] + " "; operMode = false; } else { if (generator.GetRandomByte() % 8 == 0) { //literal res += (Math.Abs(BitConverter.ToInt32(new byte[] { generator.GetRandomByte(), generator.GetRandomByte(), generator.GetRandomByte(), generator.GetRandomByte() }, 0)) % 256 * 256 * 12 + " "); } else { //variable res += variables[generator.GetRandomByte() % variables.Count] + " "; } operMode = true; } } return(res); }
private string GenerateRandomFunction(string keyPhrase) { BasylKeyGenerator generator = new BasylKeyGenerator(keyPhrase, BasylKeyGenerator.INITIAL / 4, BasylKeyGenerator.ROUNDS, BasylKeyGenerator.LEFTOFF, BasylKeyGenerator.EXPANSION / 20, BasylKeyGenerator.ADDITIONALKEY, new byte[32], new byte[4], new byte[4], true, new StrongerBasylPseudoAdaptor()); List<String> variables = new List<string>(); List<String> operators = new List<string>(); variables.Add("seed"); variables.Add("pos"); operators.AddRange("+,*,%,^,|,&,+,*,*,+".Split(',')); bool operMode = false; String res = "pos * seed + pos + "; while ((generator.GetRandomByte() % 29) != (generator.GetRandomByte() % 29) || !operMode) { if (operMode) { res += operators[generator.GetRandomByte() % operators.Count] + " "; operMode = false; } else { if (generator.GetRandomByte() % 8 == 0) { //literal res += (Math.Abs(BitConverter.ToInt32(new byte[] { generator.GetRandomByte(), generator.GetRandomByte(), generator.GetRandomByte(), generator.GetRandomByte() }, 0)) % 256 * 256 * 12 + " "); } else { //variable res += variables[generator.GetRandomByte() % variables.Count] + " "; } operMode = true; } } return res; }