【发布时间】:2015-12-26 03:31:31
【问题描述】:
我正在尝试使用 cURL 登录 Steam(不是通过 API,因为它非常有限),但是我在加密密码时遇到了困难。
基本上登录的过程是将用户名发布到https://store.steampowered.com/login/getrsakey
响应如下所示:
{"success":true,"publickey_mod":"D1CBFEDCE654EB68423E9ED9446622DE7F69A0E02523FD04B0650D79074C802A72ACC5D4BEB0AB709886B5A8B7A2813AF1B4C4A03F5C4439221F189B7039DFBEA2558F59B5B00CC53F4578668EF66C2457A90C7A54C518831CC45EA1AC84269C47E1B93A4AAF263429D789DB17FF149DFDEE7270386EDD5BC53B84A78F9AEAA67B8F137EDEC36ED81ED52EB1DD33EEC4EC01675DC044ED974E95A5054E1A33F163411E2F54063534EAE7B12D4607959AB77F36FCFAA299E81E05FABE911A019A13399413593F47A30821DC63A8B11CF40392139E1FE9DE94BD2344586424ABA4A8F1499F1DBC6F8DD2C8DF12A554F891C5D038388017E45A725A54ED1E43211B","publickey_exp":"010001","timestamp":"104490300000","token_gid":"3b54a605fa590d2"}
然后使用此响应,javascript 代码加密密码。
我尝试使用 openssl 和 phpseclib,但没有成功。 Openssl 不接受我的密钥,使用 phpseclib 我不确定是什么问题。
但是我设法找到了处理这个过程的 JS 代码:
var pubKey = RSA.getPublicKey( results.publickey_mod, results.publickey_exp );
var username = this.m_strUsernameCanonical;
var password = form.elements['password'].value;
password = password.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
var encryptedPassword = RSA.encrypt( password, pubKey );
完整代码:https://steamstore-a.akamaihd.net/public/shared/javascript/login.js
所以我的最后一个问题是:我怎样才能以最简单的方式在 PHP 中做到这一点?
【问题讨论】:
-
1.您需要查看here 中的
getPublicKey和encrypt,2. 这可能违反TOS,3. 我希望您只是为自己做这件事,因为如果您的服务器正在登录很多人,它看起来就像一个让他们的帐户被暂停并禁止您的服务器 IP 的好方法 -
我想编写一个基本的蒸汽交易机器人,而不是窃取帐户或类似的东西。由于 SteamGuard(电子邮件/电话身份验证),我什至无法做到这一点。
-
"我怎样才能在 PHP 中以最简单的方式做到这一点?" --- 当然,最简单的方法是雇人。这样你就不需要浪费时间去研究/学习任何东西,我相信这很简单。
-
可能重复:stackoverflow.com/q/34399817/569976。也就是说,我确实相信这是更好的帖子(即使它被否决了更多)。在上一篇文章中,快速阅读会得出结论,OP(你?)正在尝试在他们的网站上的 JS 中实现 RSA 加密,而这篇文章很明显你没有。
-
Stack Overflow 社区有时让我吃惊。上面的那个人问了一个编程问题并提供了代码,他被彻底贬低了。然而,三分之二的题外话 OpenSSL 问题甚至无法获得 2 或 3 个接近投票(即使它们污染了标签,也几乎从未被否决)。
标签: javascript php openssl steam phpseclib