Fixed same random number generation on different bots and runners.

This commit is contained in:
ruri
2019-09-06 14:41:45 +02:00
parent 562a31fb2b
commit 22f1adbf17
10 changed files with 28 additions and 21 deletions
+1
View File
@@ -54,6 +54,7 @@ namespace OpenBullet
public static OBSettingsViewModel obSettings; public static OBSettingsViewModel obSettings;
public static RLSettingsViewModel rlSettings; public static RLSettingsViewModel rlSettings;
public static EnvironmentSettings environment; public static EnvironmentSettings environment;
public static Random random = new Random();
// Runners // Runners
public static ObservableCollection<RunnerViewModel> Runners = new ObservableCollection<RunnerViewModel>(); public static ObservableCollection<RunnerViewModel> Runners = new ObservableCollection<RunnerViewModel>();
+1 -1
View File
@@ -29,7 +29,7 @@ namespace OpenBullet
/// </summary> /// </summary>
public partial class Runner : Page public partial class Runner : Page
{ {
public RunnerViewModel vm = new RunnerViewModel(Globals.environment, Globals.rlSettings); public RunnerViewModel vm = new RunnerViewModel(Globals.environment, Globals.rlSettings, Globals.random);
public SoundPlayer hitPlayer; public SoundPlayer hitPlayer;
public SoundPlayer reloadPlayer; public SoundPlayer reloadPlayer;
+1 -1
View File
@@ -341,7 +341,7 @@ namespace OpenBullet
// Initialize BotData and Reset LS // Initialize BotData and Reset LS
var cData = new CData(vm.TestData, Globals.environment.GetWordlistType(vm.TestDataType)); var cData = new CData(vm.TestData, Globals.environment.GetWordlistType(vm.TestDataType));
vm.BotData = new BotData(Globals.rlSettings, vm.Config.Config.Settings, cData, proxy, vm.UseProxy); vm.BotData = new BotData(Globals.rlSettings, vm.Config.Config.Settings, cData, proxy, vm.UseProxy, Globals.random);
vm.LS.Reset(); vm.LS.Reset();
// Ask for user input // Ask for user input
+2 -1
View File
@@ -31,6 +31,7 @@ namespace OpenBulletCLI
public static EnvironmentSettings Env { get; set; } public static EnvironmentSettings Env { get; set; }
public static RLSettingsViewModel RLSettings { get; set; } public static RLSettingsViewModel RLSettings { get; set; }
private static Random random = new Random();
public static RunnerViewModel Runner { get; set; } public static RunnerViewModel Runner { get; set; }
public static bool Verbose { get; set; } = false; public static bool Verbose { get; set; } = false;
public static string ProxyFile { get; set; } public static string ProxyFile { get; set; }
@@ -103,7 +104,7 @@ namespace OpenBulletCLI
RLSettings = IOManager.LoadSettings(settFile); RLSettings = IOManager.LoadSettings(settFile);
// Initialize the Runner (and hook event handlers) // Initialize the Runner (and hook event handlers)
Runner = new RunnerViewModel(Env, RLSettings); Runner = new RunnerViewModel(Env, RLSettings, random);
Runner.AskCustomInputs += AskCustomInputs; Runner.AskCustomInputs += AskCustomInputs;
Runner.DispatchAction += DispatchAction; Runner.DispatchAction += DispatchAction;
Runner.FoundHit += FoundHit; Runner.FoundHit += FoundHit;
+10 -10
View File
@@ -617,7 +617,7 @@ namespace RuriLib
break; break;
case Function.RandomNum: case Function.RandomNum:
outputString = (data.rand.Next(randomMin, randomMax)).ToString(); outputString = (data.Random.Next(randomMin, randomMax)).ToString();
break; break;
case Function.RandomString: case Function.RandomString:
@@ -634,21 +634,21 @@ namespace RuriLib
outputString = localInputString; outputString = localInputString;
while (reserved.Any(r => outputString.Contains(r))){ while (reserved.Any(r => outputString.Contains(r))){
if (outputString.Contains("?l")) if (outputString.Contains("?l"))
outputString = ReplaceFirst(outputString, "?l", lowercase[data.rand.Next(0, lowercase.Length)].ToString()); outputString = ReplaceFirst(outputString, "?l", lowercase[data.Random.Next(0, lowercase.Length)].ToString());
else if (outputString.Contains("?u")) else if (outputString.Contains("?u"))
outputString = ReplaceFirst(outputString, "?u", uppercase[data.rand.Next(0, uppercase.Length)].ToString()); outputString = ReplaceFirst(outputString, "?u", uppercase[data.Random.Next(0, uppercase.Length)].ToString());
else if (outputString.Contains("?d")) else if (outputString.Contains("?d"))
outputString = ReplaceFirst(outputString, "?d", digits[data.rand.Next(0, digits.Length)].ToString()); outputString = ReplaceFirst(outputString, "?d", digits[data.Random.Next(0, digits.Length)].ToString());
else if (outputString.Contains("?s")) else if (outputString.Contains("?s"))
outputString = ReplaceFirst(outputString, "?s", symbols[data.rand.Next(0, symbols.Length)].ToString()); outputString = ReplaceFirst(outputString, "?s", symbols[data.Random.Next(0, symbols.Length)].ToString());
else if (outputString.Contains("?h")) else if (outputString.Contains("?h"))
outputString = ReplaceFirst(outputString, "?h", hex[data.rand.Next(0, hex.Length)].ToString()); outputString = ReplaceFirst(outputString, "?h", hex[data.Random.Next(0, hex.Length)].ToString());
else if (outputString.Contains("?a")) else if (outputString.Contains("?a"))
outputString = ReplaceFirst(outputString, "?a", allchars[data.rand.Next(0, allchars.Length)].ToString()); outputString = ReplaceFirst(outputString, "?a", allchars[data.Random.Next(0, allchars.Length)].ToString());
else if (outputString.Contains("?m")) else if (outputString.Contains("?m"))
outputString = ReplaceFirst(outputString, "?m", udchars[data.rand.Next(0, udchars.Length)].ToString()); outputString = ReplaceFirst(outputString, "?m", udchars[data.Random.Next(0, udchars.Length)].ToString());
else if (outputString.Contains("?i")) else if (outputString.Contains("?i"))
outputString = ReplaceFirst(outputString, "?i", ludchars[data.rand.Next(0, ludchars.Length)].ToString()); outputString = ReplaceFirst(outputString, "?i", ludchars[data.Random.Next(0, ludchars.Length)].ToString());
} }
break; break;
@@ -711,7 +711,7 @@ namespace RuriLib
break; break;
case Function.GetRandomUA: case Function.GetRandomUA:
outputString = RandomUserAgent(data.rand); outputString = RandomUserAgent(data.Random);
break; break;
case Function.AESEncrypt: case Function.AESEncrypt:
+1 -1
View File
@@ -408,7 +408,7 @@ namespace RuriLib
if (encodeContent) if (encodeContent)
{ {
// Very dirty but it works // Very dirty but it works
var nonce = data.rand.Next(1000000, 9999999); var nonce = data.Random.Next(1000000, 9999999);
pData = pData.Replace("&", $"{nonce}&{nonce}").Replace("=", $"{nonce}={nonce}"); pData = pData.Replace("&", $"{nonce}&{nonce}").Replace("=", $"{nonce}={nonce}");
pData = System.Uri.EscapeDataString(pData).Replace($"{nonce}%26{nonce}", "&").Replace($"{nonce}%3D{nonce}", "="); pData = System.Uri.EscapeDataString(pData).Replace($"{nonce}%26{nonce}", "&").Replace($"{nonce}%3D{nonce}", "=");
} }
+1 -1
View File
@@ -497,7 +497,7 @@ namespace RuriLib
break; break;
case ListAction.Random: case ListAction.Random:
data.Variables.Set(new CVar(variableName, list[data.rand.Next(list.Count)], isCapture)); data.Variables.Set(new CVar(variableName, list[data.Random.Next(list.Count)], isCapture));
break; break;
default: default:
+2 -2
View File
@@ -321,7 +321,7 @@ namespace RuriLib
.Select(ext => Directory.GetCurrentDirectory() + "\\ChromeExtensions\\" + ext)); .Select(ext => Directory.GetCurrentDirectory() + "\\ChromeExtensions\\" + ext));
if (data.ConfigSettings.DisableNotifications) chromeop.AddArgument("--disable-notifications"); if (data.ConfigSettings.DisableNotifications) chromeop.AddArgument("--disable-notifications");
if (data.ConfigSettings.CustomCMDArgs != "") chromeop.AddArgument(data.ConfigSettings.CustomCMDArgs); if (data.ConfigSettings.CustomCMDArgs != "") chromeop.AddArgument(data.ConfigSettings.CustomCMDArgs);
if (data.ConfigSettings.RandomUA) chromeop.AddArgument("--user-agent=" + BlockFunction.RandomUserAgent(data.rand)); if (data.ConfigSettings.RandomUA) chromeop.AddArgument("--user-agent=" + BlockFunction.RandomUserAgent(data.Random));
else if (data.ConfigSettings.CustomUserAgent != "") chromeop.AddArgument("--user-agent=" + data.ConfigSettings.CustomUserAgent); else if (data.ConfigSettings.CustomUserAgent != "") chromeop.AddArgument("--user-agent=" + data.ConfigSettings.CustomUserAgent);
if (data.UseProxies) chromeop.AddArgument("--proxy-server=" + data.Proxy.Type.ToString().ToLower() + "://" + data.Proxy.Proxy); if (data.UseProxies) chromeop.AddArgument("--proxy-server=" + data.Proxy.Type.ToString().ToLower() + "://" + data.Proxy.Proxy);
@@ -346,7 +346,7 @@ namespace RuriLib
if (data.GlobalSettings.Selenium.Headless || data.ConfigSettings.ForceHeadless) fireop.AddArgument("--headless"); if (data.GlobalSettings.Selenium.Headless || data.ConfigSettings.ForceHeadless) fireop.AddArgument("--headless");
if (data.ConfigSettings.DisableNotifications) fireprofile.SetPreference("dom.webnotifications.enabled", false); if (data.ConfigSettings.DisableNotifications) fireprofile.SetPreference("dom.webnotifications.enabled", false);
if (data.ConfigSettings.CustomCMDArgs != "") fireop.AddArgument(data.ConfigSettings.CustomCMDArgs); if (data.ConfigSettings.CustomCMDArgs != "") fireop.AddArgument(data.ConfigSettings.CustomCMDArgs);
if (data.ConfigSettings.RandomUA) fireprofile.SetPreference("general.useragent.override", BlockFunction.RandomUserAgent(data.rand)); if (data.ConfigSettings.RandomUA) fireprofile.SetPreference("general.useragent.override", BlockFunction.RandomUserAgent(data.Random));
else if (data.ConfigSettings.CustomUserAgent != "") fireprofile.SetPreference("general.useragent.override", data.ConfigSettings.CustomUserAgent); else if (data.ConfigSettings.CustomUserAgent != "") fireprofile.SetPreference("general.useragent.override", data.ConfigSettings.CustomUserAgent);
if (data.UseProxies) if (data.UseProxies)
+4 -2
View File
@@ -43,7 +43,7 @@ namespace RuriLib
public class BotData public class BotData
{ {
/// <summary>A random number generator that methods can refer to, in order to avoid the generation of the same random number if executed in rapid succession.</summary> /// <summary>A random number generator that methods can refer to, in order to avoid the generation of the same random number if executed in rapid succession.</summary>
public Random rand = new Random(); public Random Random = new Random();
/// <summary>The Status of the Bot.</summary> /// <summary>The Status of the Bot.</summary>
public BotStatus Status { get; set; } public BotStatus Status { get; set; }
@@ -160,13 +160,15 @@ namespace RuriLib
/// <param name="data">The wrapped data line to check</param> /// <param name="data">The wrapped data line to check</param>
/// <param name="proxy">The proxy to use (set to null if none)</param> /// <param name="proxy">The proxy to use (set to null if none)</param>
/// <param name="useProxies">Whether to use the proxy for requests</param> /// <param name="useProxies">Whether to use the proxy for requests</param>
/// <param name="random">A reference to the global random generator</param>
/// <param name="botNumber">The number of the bot that is creating this object</param> /// <param name="botNumber">The number of the bot that is creating this object</param>
/// <param name="isDebug">Whether this object is created from a Debugger or from a Runner</param> /// <param name="isDebug">Whether this object is created from a Debugger or from a Runner</param>
public BotData(RLSettingsViewModel globalSettings, ConfigSettings configSettings, CData data, CProxy proxy, bool useProxies, int botNumber = 0, bool isDebug = true) public BotData(RLSettingsViewModel globalSettings, ConfigSettings configSettings, CData data, CProxy proxy, bool useProxies, Random random, int botNumber = 0, bool isDebug = true)
{ {
Data = data; Data = data;
Proxy = proxy; Proxy = proxy;
UseProxies = useProxies; UseProxies = useProxies;
Random = random;
Status = BotStatus.NONE; Status = BotStatus.NONE;
BotNumber = BotNumber; BotNumber = BotNumber;
GlobalSettings = globalSettings; GlobalSettings = globalSettings;
+5 -2
View File
@@ -40,10 +40,12 @@ namespace RuriLib.Runner
/// </summary> /// </summary>
/// <param name="environment">The environment settings</param> /// <param name="environment">The environment settings</param>
/// <param name="settings">The RuriLib settings</param> /// <param name="settings">The RuriLib settings</param>
public RunnerViewModel(EnvironmentSettings environment, RLSettingsViewModel settings) /// <param name="random">A reference to the global random generator</param>
public RunnerViewModel(EnvironmentSettings environment, RLSettingsViewModel settings, Random random)
{ {
Env = environment; Env = environment;
Settings = settings; Settings = settings;
Random = random;
OnPropertyChanged("Busy"); OnPropertyChanged("Busy");
OnPropertyChanged("ControlsEnabled"); OnPropertyChanged("ControlsEnabled");
} }
@@ -52,6 +54,7 @@ namespace RuriLib.Runner
#region Settings #region Settings
private RLSettingsViewModel Settings { get; set; } private RLSettingsViewModel Settings { get; set; }
private EnvironmentSettings Env { get; set; } private EnvironmentSettings Env { get; set; }
private Random Random { get; set; }
#endregion #endregion
#region Workers #region Workers
@@ -666,7 +669,7 @@ namespace RuriLib.Runner
} }
// Initialize the Bot Data // Initialize the Bot Data
BotData botData = new BotData(Settings, Config.Settings, currentData, currentProxy, UseProxies, bot.Id, false); BotData botData = new BotData(Settings, Config.Settings, currentData, currentProxy, UseProxies, Random, bot.Id, false);
botData.Driver = bot.Driver; botData.Driver = bot.Driver;
botData.BrowserOpen = bot.IsDriverOpen; botData.BrowserOpen = bot.IsDriverOpen;
List<LogEntry> BotLog = new List<LogEntry>(); List<LogEntry> BotLog = new List<LogEntry>();