From 35fb7c4e7f2fa4134fd9d667b13afb3cba56508e Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sun, 10 Jan 2016 22:25:15 +0100 Subject: [PATCH] Improve valid cd-key checks, closes #69 --- ArchiSteamFarm/Bot.cs | 15 ++++----------- ArchiSteamFarm/Utilities.cs | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 96d543daf..173370a15 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -87,17 +87,10 @@ namespace ArchiSteamFarm { return false; } - if (key.Length != 17 && key.Length != 29) { - return false; - } - - for (byte i = 5; i < key.Length; i += 6) { - if (key[i] != '-') { - return false; - } - } - - return true; + // Steam keys are offered in many formats: https://support.steampowered.com/kb_article.php?ref=7480-WUSF-3601 + // It's pointless to implement them all, so we'll just do a simple check if key is supposed to be valid + // Every valid key, apart from Prey one has at least two dashes + return Utilities.GetCharCountInString(key, '-') >= 2; } internal static string GetAnyBotName() { diff --git a/ArchiSteamFarm/Utilities.cs b/ArchiSteamFarm/Utilities.cs index 2c8991e82..18b4322e6 100644 --- a/ArchiSteamFarm/Utilities.cs +++ b/ArchiSteamFarm/Utilities.cs @@ -57,5 +57,20 @@ namespace ArchiSteamFarm { return Regex.Replace(text, @"[^\d]", ""); } + + internal static uint GetCharCountInString(string s, char c) { + if (string.IsNullOrEmpty(s)) { + return 0; + } + + uint count = 0; + foreach (char singleChar in s) { + if (singleChar == c) { + count++; + } + } + + return count; + } } }