@sergerdn said in Как организовать работу с ресурсом файла в БАС:
Судя по описанию работать будет, но в файл данные не будут записаны, а изменены только в памяти.
Ага, уже проверил
При взаимодействии со стимом стоит задача в виде реализации работы на POST-GET запросах. Проблема возникла при попытке авторизации в существующий аккаунт. Оказалось, что пароль, перед отправкой в форму запроса, шифруется с помощью алгоритма RSA, и затем уже в зашифрованном виде передается в форму для запроса. Отследил запросы, первым идет POST "https://steamcommunity.com/login/getrsakey/" И возвращает следующее(на данный момент не имеет значения то, что мы отправляли в нашем запросе): Код:
{
"success":true,
"publickey_mod":"/* publickey_mod */",
"publickey_exp":"010001",
"timestamp":"435743550000",
"token_gid":"/* тут token_gid */"
}
Для RSA нам требуются 2 значения: publickey_mod и publickey_exp. В полученном виде работать с ними не удается, так как их нужно привести к base64. После приведения к base64 и создания ключа, удалось получить в зашифрованном виде сам пароль. Запрос с авторизацией("https://steamcommunity.com/login/dologin/"):
Form Data:
donotcache: 1577689139522
password: /* crypted pass */
username: username
twofactorcode:
emailauth:
loginfriendlyname:
captchagid: -1
captcha_text:
emailsteamid:
rsatimestamp: 439344650000
remember_login: false
Как итог, в ответе получают ошибку с сообщением о неудачном входе(неправильный пароль или имя пользователя). В чем может быть ошибка, не знаю. Вот еще ниже проложу реализацию шифрования на NodeJS(Для тестов, брал из консоли полученный пароль и пытался авторизоваться):
const RSA = require('node-rsa');
var key = new RSA();
key.setOptions({encryptionScheme: ''});
key.importKey({
n: Buffer.from('/* Здесь publickey_mod */', 'hex'),
e: Buffer.from('010001', 'hex')
}, 'components-public');
var test = 'hello';
var crypt = key.encrypt(test, 'base64');
console.log(crypt);
@truumm said in Авторизация в Steam с помощью POST-GET:
При взаимодействии со стимом стоит задача в виде реализации работы на POST-GET запросах. Проблема возникла при попытке авторизации в существующий аккаунт. Оказалось, что пароль, перед отправкой в форму запроса, шифруется с помощью алгоритма RSA, и затем уже в зашифрованном виде передается в форму для запроса. Отследил запросы, первым идет POST "https://steamcommunity.com/login/getrsakey/" И возвращает следующее(на данный момент не имеет значения то, что мы отправляли в нашем запросе): Код:
{ "success":true, "publickey_mod":"/* publickey_mod */", "publickey_exp":"010001", "timestamp":"435743550000", "token_gid":"/* тут token_gid */" }Для RSA нам требуются 2 значения: publickey_mod и publickey_exp. В полученном виде работать с ними не удается, так как их нужно привести к base64. После приведения к base64 и создания ключа, удалось получить в зашифрованном виде сам пароль. Запрос с авторизацией("https://steamcommunity.com/login/dologin/"):
Form Data:
donotcache: 1577689139522 password: /* crypted pass */ username: username twofactorcode: emailauth: loginfriendlyname: captchagid: -1 captcha_text: emailsteamid: rsatimestamp: 439344650000 remember_login: falseКак итог, в ответе получают ошибку с сообщением о неудачном входе(неправильный пароль или имя пользователя). В чем может быть ошибка, не знаю. Вот еще ниже проложу реализацию шифрования на NodeJS(Для тестов, брал из консоли полученный пароль и пытался авторизоваться):
const RSA = require('node-rsa'); var key = new RSA(); key.setOptions({encryptionScheme: ''}); key.importKey({ n: Buffer.from('/* Здесь publickey_mod */', 'hex'), e: Buffer.from('010001', 'hex') }, 'components-public'); var test = 'hello'; var crypt = key.encrypt(test, 'base64'); console.log(crypt);
rsa можно использовать без ноды, смотрите скрипты на сайте