mirror of
https://github.com/SteamRE/DepotDownloader.git
synced 2026-10-20 01:46:17 +00:00
Remove Deprecated SentryData and add GuardData
This commit is contained in:
1 parent
5077640cf2
commit
bf0f89fed0
2 files changed
+16
-43
No files matched your search
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
@@ -11,8 +11,7 @@ namespace DepotDownloader
|
||||
[ProtoContract]
|
||||
class AccountSettingsStore
|
||||
{
|
||||
[ProtoMember(1, IsRequired = false)]
|
||||
public Dictionary<string, byte[]> SentryData { get; private set; }
|
||||
// Member 1 was a Dictionary<string, byte[]> for SentryData.
|
||||
|
||||
[ProtoMember(2, IsRequired = false)]
|
||||
public ConcurrentDictionary<string, int> ContentServerPenalty { get; private set; }
|
||||
@@ -22,13 +21,16 @@ namespace DepotDownloader
|
||||
[ProtoMember(4, IsRequired = false)]
|
||||
public Dictionary<string, string> LoginTokens { get; private set; }
|
||||
|
||||
[ProtoMember(5, IsRequired = false)]
|
||||
public Dictionary<string, string> GuardData { get; private set; }
|
||||
|
||||
string FileName;
|
||||
|
||||
AccountSettingsStore()
|
||||
{
|
||||
SentryData = new Dictionary<string, byte[]>();
|
||||
ContentServerPenalty = new ConcurrentDictionary<string, int>();
|
||||
LoginTokens = new Dictionary<string, string>();
|
||||
GuardData = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
static bool Loaded
|
||||
|
||||
@@ -112,22 +112,17 @@ namespace DepotDownloader
|
||||
this.callbacks.Subscribe<SteamUser.LoggedOnCallback>(LogOnCallback);
|
||||
this.callbacks.Subscribe<SteamUser.SessionTokenCallback>(SessionTokenCallback);
|
||||
this.callbacks.Subscribe<SteamApps.LicenseListCallback>(LicenseListCallback);
|
||||
this.callbacks.Subscribe<SteamUser.UpdateMachineAuthCallback>(UpdateMachineAuthCallback);
|
||||
|
||||
Console.Write("Connecting to Steam3...");
|
||||
|
||||
if (details.Username != null)
|
||||
{
|
||||
var fi = new FileInfo(String.Format("{0}.sentryFile", logonDetails.Username));
|
||||
if (AccountSettingsStore.Instance.SentryData != null && AccountSettingsStore.Instance.SentryData.ContainsKey(logonDetails.Username))
|
||||
// Reused what was done for sentryFile but does this has any use ?
|
||||
var fi = new FileInfo(String.Format("{0}.guardDataFile", logonDetails.Username));
|
||||
if (AccountSettingsStore.Instance.GuardData != null && !AccountSettingsStore.Instance.GuardData.ContainsKey(logonDetails.Username) && fi.Exists && fi.Length > 0)
|
||||
{
|
||||
logonDetails.SentryFileHash = Util.SHAHash(AccountSettingsStore.Instance.SentryData[logonDetails.Username]);
|
||||
}
|
||||
else if (fi.Exists && fi.Length > 0)
|
||||
{
|
||||
var sentryData = File.ReadAllBytes(fi.FullName);
|
||||
logonDetails.SentryFileHash = Util.SHAHash(sentryData);
|
||||
AccountSettingsStore.Instance.SentryData[logonDetails.Username] = sentryData;
|
||||
var guardData = File.ReadAllText(fi.FullName);
|
||||
AccountSettingsStore.Instance.GuardData[logonDetails.Username] = guardData;
|
||||
AccountSettingsStore.Save();
|
||||
}
|
||||
}
|
||||
@@ -508,11 +503,14 @@ namespace DepotDownloader
|
||||
{
|
||||
try
|
||||
{
|
||||
string guarddata = null;
|
||||
_ = AccountSettingsStore.Instance.GuardData.TryGetValue(logonDetails.Username, out guarddata);
|
||||
authSession = await steamClient.Authentication.BeginAuthSessionViaCredentialsAsync(new SteamKit2.Authentication.AuthSessionDetails
|
||||
{
|
||||
Username = logonDetails.Username,
|
||||
Password = logonDetails.Password,
|
||||
IsPersistentSession = ContentDownloader.Config.RememberPassword,
|
||||
GuardData = guarddata,
|
||||
Authenticator = new UserConsoleAuthenticator(),
|
||||
});
|
||||
}
|
||||
@@ -576,6 +574,8 @@ namespace DepotDownloader
|
||||
logonDetails.Password = null;
|
||||
logonDetails.AccessToken = result.RefreshToken;
|
||||
|
||||
// Should i check if guardData is null ?
|
||||
AccountSettingsStore.Instance.GuardData[result.AccountName] = result.NewGuardData;
|
||||
AccountSettingsStore.Instance.LoginTokens[result.AccountName] = result.RefreshToken;
|
||||
AccountSettingsStore.Save();
|
||||
}
|
||||
@@ -749,35 +749,6 @@ namespace DepotDownloader
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateMachineAuthCallback(SteamUser.UpdateMachineAuthCallback machineAuth)
|
||||
{
|
||||
var hash = Util.SHAHash(machineAuth.Data);
|
||||
Console.WriteLine("Got Machine Auth: {0} {1} {2} {3}", machineAuth.FileName, machineAuth.Offset, machineAuth.BytesToWrite, machineAuth.Data.Length);
|
||||
|
||||
AccountSettingsStore.Instance.SentryData[logonDetails.Username] = machineAuth.Data;
|
||||
AccountSettingsStore.Save();
|
||||
|
||||
var authResponse = new SteamUser.MachineAuthDetails
|
||||
{
|
||||
BytesWritten = machineAuth.BytesToWrite,
|
||||
FileName = machineAuth.FileName,
|
||||
FileSize = machineAuth.BytesToWrite,
|
||||
Offset = machineAuth.Offset,
|
||||
|
||||
SentryFileHash = hash, // should be the sha1 hash of the sentry file we just wrote
|
||||
|
||||
OneTimePassword = machineAuth.OneTimePassword, // not sure on this one yet, since we've had no examples of steam using OTPs
|
||||
|
||||
LastError = 0, // result from win32 GetLastError
|
||||
Result = EResult.OK, // if everything went okay, otherwise ~who knows~
|
||||
|
||||
JobID = machineAuth.JobID, // so we respond to the correct server job
|
||||
};
|
||||
|
||||
// send off our response
|
||||
steamUser.SendMachineAuthResponse(authResponse);
|
||||
}
|
||||
|
||||
private static void DisplayQrCode(string challengeUrl)
|
||||
{
|
||||
// Encode the link as a QR code
|
||||
|
||||
Reference in new issue
Block a user