mirror of
https://github.com/openbullet/openbullet.git
synced 2023-10-21 07:33:42 -05:00
Fixed same random number generation on different bots and runners.
This commit is contained in:
@@ -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>();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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}", "=");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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>();
|
||||||
|
|||||||
Reference in New Issue
Block a user