/// <summary> /// Initializes a new <see cref="CodeOperand"/> struct. /// </summary> /// <param name="value">Value of the operand as a register.</param> public CodeOperand(CodeRegister value) { this.type = CodeOperandType.Register; this.register = value; if (value == CodeRegister.AL || value == CodeRegister.AH || value == CodeRegister.BL || value == CodeRegister.BH || value == CodeRegister.CL || value == CodeRegister.CH || value == CodeRegister.DL || value == CodeRegister.DH) { this.operandSize = CodeOperandSize.Byte; } else if (value == CodeRegister.EAX || value == CodeRegister.EBX || value == CodeRegister.ECX || value == CodeRegister.EDX || value == CodeRegister.EBP || value == CodeRegister.ESI || value == CodeRegister.EDI || value == CodeRegister.ESP) { this.operandSize = CodeOperandSize.DoubleWord; } else { this.operandSize = CodeOperandSize.Word; } this.memoryBase = 0; this.value = 0; this.sibScale = 0; this.sibIndex = 0; this.sibBase = 0; this.farSegment = 0; }
/// <summary> /// Initializes a new <see cref="CodeOperand"/> struct. /// </summary> /// <param name="effectiveAddress">Addressing mode for the operand.</param> /// <param name="value">Displacement value for the operand.</param> public CodeOperand(CodeMemoryBase effectiveAddress, uint value, CodeOperandSize size) { this.type = CodeOperandType.MemoryAddress; this.value = value; this.memoryBase = effectiveAddress; this.operandSize = size; this.register = 0; this.sibScale = 0; this.sibIndex = 0; this.sibBase = 0; this.farSegment = 0; }
/// <summary> /// Initializes a new <see cref="CodeOperand"/> struct. /// </summary> /// <param name="type">Type of the operand.</param> /// <param name="value">Value of the operand.</param> public CodeOperand(CodeOperandType type, uint value, CodeOperandSize size) { this.type = type; this.value = value; this.operandSize = size; this.memoryBase = 0; this.register = 0; this.sibScale = 0; this.sibIndex = 0; this.sibBase = 0; this.farSegment = 0; }
private static void GetPasswordDetails(TelegramClient client, CodeRegister cr) { var result = TelegramUtils.RunSynchronously(client.Methods.AccountGetPasswordAsync(new AccountGetPasswordArgs { })); var authPassword = result as AccountPassword; var authNoPassword = result as AccountNoPassword; if (authPassword != null) { cr.CurrentSalt = authPassword.CurrentSalt; cr.NewSalt = authPassword.NewSalt; cr.HasRecovery = authPassword.HasRecovery; cr.Hint = authPassword.Hint; } }
private FrameworkElement BuildRegisterContent(CodeRegister register) { var textBlock = new TextBlock() { Text = register.ToString().ToLower() }; var binding = new Binding("DebuggerTextFormat.Register") { Source = this, Mode = BindingMode.OneWay }; textBlock.SetBinding(TextBlock.ForegroundProperty, binding); return(textBlock); }
public static CodeRegister VerifyPassword(Service service, TelegramSettings settings, byte[] passwordHash) { try { var transportConfig = new TcpClientTransportConfig(settings.NearestDcIp, settings.NearestDcPort); using (var client = new TelegramClient(transportConfig, new ConnectionConfig(settings.AuthKey, settings.Salt), AppInfo)) { TelegramUtils.RunSynchronously(client.Connect()); try { var iresult = TelegramUtils.RunSynchronously(client.Methods.AuthCheckPasswordAsync(new AuthCheckPasswordArgs { PasswordHash = passwordHash })); var result = (AuthAuthorization)iresult; Thread.Sleep(100); //wait until the other response comes in. return(new CodeRegister { AccountId = (result.User as User).Id, Response = CodeRegister.Type.Success }); } catch (RpcErrorException ex) { var error = (RpcError)ex.Error; var cr = new CodeRegister(); if (error.ErrorMessage == "PASSWORD_HASH_INVALID") { cr.Response = CodeRegister.Type.InvalidPassword; } return(cr); } } } catch (Exception ex) { service.DebugPrint("Error in VerifyPassword: " + ex); return(null); } }
public static CodeRegister VerifyCode(Service service, TelegramSettings settings, string code) { try { var transportConfig = new TcpClientTransportConfig(settings.NearestDcIp, settings.NearestDcPort); using (var client = new TelegramClient(transportConfig, new ConnectionConfig(settings.AuthKey, settings.Salt), AppInfo)) { TelegramUtils.RunSynchronously(client.Connect()); try { var iresult = TelegramUtils.RunSynchronously(client.Methods.AuthRecoverPasswordAsync(new AuthRecoverPasswordArgs { Code = code })); var result = (AuthAuthorization)iresult; Thread.Sleep(100); //wait until the other response comes in. return(new CodeRegister { AccountId = (result.User as User).Id, Response = CodeRegister.Type.Success }); } catch (RpcErrorException ex) { var error = (RpcError)ex.Error; var cr = new CodeRegister(); cr.Response = CodeRegister.Type.Failure; return(cr); } } } catch (Exception ex) { service.DebugPrint("Error in VerifyPassword: " + ex); return(null); } }
public static CodeRegister RegisterCode(Service service, TelegramSettings settings, string number, string codeHash, string code, string firstName, string lastName, bool signIn) { try { service.DebugPrint("Registering code..."); var transportConfig = new TcpClientTransportConfig(settings.NearestDcIp, settings.NearestDcPort); using (var client = new TelegramClient(transportConfig, new ConnectionConfig(settings.AuthKey, settings.Salt), AppInfo)) { TelegramUtils.RunSynchronously(client.Connect()); try { IAuthAuthorization iresult = null; if (signIn) { iresult = TelegramUtils.RunSynchronously(client.Methods.AuthSignInAsync(new AuthSignInArgs { PhoneNumber = number, PhoneCodeHash = codeHash, PhoneCode = code, })); } else { iresult = TelegramUtils.RunSynchronously(client.Methods.AuthSignUpAsync(new AuthSignUpArgs { PhoneNumber = number, PhoneCodeHash = codeHash, PhoneCode = code, FirstName = firstName, LastName = lastName, })); } var result = (AuthAuthorization)iresult; Thread.Sleep(100); //wait until the other response comes in, if it has to. return(new CodeRegister { AccountId = (result.User as User).Id, Response = CodeRegister.Type.Success, }); } catch (RpcErrorException ex) { Utils.DebugPrint(">>>>>> Failed to sign in " + ex); var error = (RpcError)ex.Error; var cr = new CodeRegister(); switch (error.ErrorMessage) { case "PHONE_NUMBER_INVALID": cr.Response = CodeRegister.Type.NumberInvalid; break; case "PHONE_CODE_EMPTY": cr.Response = CodeRegister.Type.CodeEmpty; break; case "PHONE_CODE_EXPIRED": cr.Response = CodeRegister.Type.CodeExpired; break; case "PHONE_CODE_INVALID": cr.Response = CodeRegister.Type.CodeInvalid; break; case "FIRSTNAME_INVALID": cr.Response = CodeRegister.Type.FirstNameInvalid; break; case "LASTNAME_INVALID": cr.Response = CodeRegister.Type.LastNameInvalid; break; case "SESSION_PASSWORD_NEEDED": cr.Response = CodeRegister.Type.PasswordNeeded; GetPasswordDetails(client, cr); break; default: cr.Response = CodeRegister.Type.Failure; break; } return(cr); } } } catch (Exception ex) { service.DebugPrint("Error in CodeRequest: " + ex); } return(null); }
public static CodeRegister RegisterCode(Service service, TelegramSettings settings, string number, string codeHash, string code, string firstName, string lastName, bool signIn) { try { service.DebugPrint("Registering code..."); var transportConfig = new TcpClientTransportConfig(settings.NearestDcIp, settings.NearestDcPort); using (var client = new TelegramClient(transportConfig, new ConnectionConfig(settings.AuthKey, settings.Salt), AppInfo)) { TelegramUtils.RunSynchronously(client.Connect()); try { IAuthAuthorization iresult = null; if (signIn) { iresult = TelegramUtils.RunSynchronously(client.Methods.AuthSignInAsync(new AuthSignInArgs { PhoneNumber = number, PhoneCodeHash = codeHash, PhoneCode = code, })); } else { iresult = TelegramUtils.RunSynchronously(client.Methods.AuthSignUpAsync(new AuthSignUpArgs { PhoneNumber = number, PhoneCodeHash = codeHash, PhoneCode = code, FirstName = firstName, LastName = lastName, })); } var result = (AuthAuthorization)iresult; return new CodeRegister { AccountId = (result.User as UserSelf).Id, Expires = result.Expires, Response = CodeRegister.Type.Success, }; } catch (RpcErrorException ex) { var error = (RpcError)ex.Error; var cr = new CodeRegister(); var response = CodeRegister.Type.Failure; switch (error.ErrorMessage) { case "PHONE_NUMBER_INVALID": cr.Response = CodeRegister.Type.NumberInvalid; break; case "PHONE_CODE_EMPTY": cr.Response = CodeRegister.Type.CodeEmpty; break; case "PHONE_CODE_EXPIRED": cr.Response = CodeRegister.Type.CodeExpired; break; case "PHONE_CODE_INVALID": cr.Response = CodeRegister.Type.CodeInvalid; break; case "FIRSTNAME_INVALID": cr.Response = CodeRegister.Type.FirstNameInvalid; break; case "LASTNAME_INVALID": cr.Response = CodeRegister.Type.LastNameInvalid; break; default: cr.Response = CodeRegister.Type.Failure; break; } return cr; } } } catch (Exception ex) { service.DebugPrint("Error in CodeRequest: " + ex); } return null; }
public static string Format(CodeRegister register) => register.ToString().ToLower();