diff --git a/ArchiSteamFarm/ArchiHandler.cs b/ArchiSteamFarm/ArchiHandler.cs index 4d34138f4..b01a6587b 100644 --- a/ArchiSteamFarm/ArchiHandler.cs +++ b/ArchiSteamFarm/ArchiHandler.cs @@ -177,6 +177,44 @@ namespace ArchiSteamFarm { */ + // TODO: Remove me once https://github.com/SteamRE/SteamKit/issues/305 is fixed + internal void LogOnWithoutMachineID(SteamUser.LogOnDetails details) { + ClientMsgProtobuf logon = new ClientMsgProtobuf(EMsg.ClientLogon); + + SteamID steamId = new SteamID(details.AccountID, details.AccountInstance, Client.ConnectedUniverse, EAccountType.Individual); + + if (details.LoginID != null) { + logon.Body.obfustucated_private_ip = details.LoginID.Value; + } + + logon.ProtoHeader.client_sessionid = 0; + logon.ProtoHeader.steamid = steamId.ConvertToUInt64(); + + logon.Body.account_name = details.Username; + logon.Body.password = details.Password; + logon.Body.should_remember_password = details.ShouldRememberPassword; + + logon.Body.protocol_version = MsgClientLogon.CurrentProtocol; + logon.Body.client_os_type = (uint) details.ClientOSType; + logon.Body.client_language = details.ClientLanguage; + logon.Body.cell_id = details.CellID; + + logon.Body.steam2_ticket_request = details.RequestSteam2Ticket; + + logon.Body.client_package_version = 1771; + + logon.Body.auth_code = details.AuthCode; + logon.Body.two_factor_code = details.TwoFactorCode; + + logon.Body.login_key = details.LoginKey; + + logon.Body.sha_sentryfile = details.SentryFileHash; + logon.Body.eresult_sentryfile = (int) (details.SentryFileHash != null ? EResult.OK : EResult.FileNotFound); + + + Client.Send(logon); + } + internal void PlayGame(string gameName) { if (!Client.IsConnected) { return; diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 74ca673cb..afa2cd319 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -1521,7 +1521,7 @@ namespace ArchiSteamFarm { TwoFactorCode = await BotDatabase.MobileAuthenticator.GenerateToken().ConfigureAwait(false); } - SteamUser.LogOn(new SteamUser.LogOnDetails { + SteamUser.LogOnDetails logOnDetails = new SteamUser.LogOnDetails { Username = BotConfig.SteamLogin, Password = BotConfig.SteamPassword, AuthCode = AuthCode, @@ -1531,7 +1531,14 @@ namespace ArchiSteamFarm { TwoFactorCode = TwoFactorCode, SentryFileHash = sentryHash, ShouldRememberPassword = true - }); + }; + + try { + SteamUser.LogOn(logOnDetails); + } catch { + // TODO: Remove me once https://github.com/SteamRE/SteamKit/issues/305 is fixed + ArchiHandler.LogOnWithoutMachineID(logOnDetails); + } } private async void OnDisconnected(SteamClient.DisconnectedCallback callback) {