2

我正在为 Minecraft 制作一个启动器。1.6.2变化很大,所以登录的方式不一样了。如果你们中的任何人有任何使用 C# 登录我的世界的知识,我将不胜感激。

wClient.DownloadString("http://login.minecraft.net/?user=" + strUsername + "&password=" + strPassword + "&version=13");  

我相信这曾经是一种有效的方法,但我不太确定了。感谢您的帮助,谢谢。

4

1 回答 1

3

回复 TheUnrealMegashark 对 Rhys Towey 的回答的评论。我一直在努力让它启动,但是。它让我有点失望。下一个更新将包括 1.6 修复。只好想办法了。

您的问题的正确答案是获取 Session 的 Web 链接当前仍在使用中。那里没有什么新鲜事。

谨防!你必须知道你的

" http://login.minecraft.net/?user= " + strUsername + "&password=" + strPassword + "&version=13"

是不安全的。它通过互联网以纯文本形式发送用户的密码。它可能会受到“中间人”的攻击。

加密连接的正确方法之一是将 HTTPS 与 POST 结合使用。使用 POST,我避免发送请求 URL 中的所有数据并通过 POST 发送数据。使用 HTTPS,我对请求 URL 返回后发送的所有数据进行加密。HTTPS 使 POST 加密,从而消除“中间人”攻击。

您可以将 GET 与 HTTPS 一起使用,它仍然是安全的(根据我的阅读)。但是,这被认为是不安全的做法。尽管它在您的计算机和连接设备之间的所有帐户中都是安全的,但在其他任何地方都可能会被看到并受到“背后的人攻击”的影响。我的意思是,当您发送此 URL 时,您的计算机可能会将该 URL 记录在某种历史记录中,或者以纯文本形式显示在地址栏中。虽然,感觉您没有制作网络浏览器并且没有显示 URL,但这可能都被遗忘了。

但是,如果是我,我仍然会安全行事,只是使用更安全的策略。


将 HTTPS 与 POST 一起使用。
这是我在“AtomLauncher”中使用的代码示例。此代码会将 POST 数据发送到 URL 并返回一个字符串。转到http://www.minecraftwiki.net/wiki/Minecraft.net以获取有关返回的字符串的更多信息。

string mcURLData = "Error";
using (WebClient client = new WebClient()) // Get Data from Minecraft with username and password
{
    //  This a Text control for my Program, ignore this commented line if you wish.
    //  this.Invoke(new MethodInvoker(delegate { homeLabelTop.Text = "Connecting to Minecraft.net..."; }));
    try
    {
        System.Collections.Specialized.NameValueCollection urlData = new System.Collections.Specialized.NameValueCollection();
        urlData.Add("user", "UserName");
        urlData.Add("password", "MYPa22w0rd");
        urlData.Add("version", "13");
        byte[] responsebytes = client.UploadValues("https://login.minecraft.net", "POST", urlData);
        mcURLData = Encoding.UTF8.GetString(responsebytes);
    }
    catch
    {
        if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
        {
            mcURLData = "Internet Disconnected.";
        }
        else
        {
            mcURLData = "Can't connect to login.minecraft.net.";
        }
    }
}

要将 HTTPS 与 GET 一起使用,
只需更改

http

在你的代码中

https


在其他新闻中。

我已经修复了我的代码。随意(上传时)使用它。供您参考,您需要知道当 1.6.X 启动时,它会创建一个 natives 文件夹,它会立即开始使用该文件夹。我为解决此问题所做的工作是运行 1.6.2 并复制它创建的 natives 文件夹并删除该号码。

Created "version/1.6.2/1.6.2-natives-###"
Copied it to "version/1.6.2/1.6.2.natives"
Point my program to "natives" folder I created.

我将来最终要做的是自动检查 natives 文件夹,如果它不存在,我会让它从 Internet 下载 natives。(我很想知道我的世界在哪里得到它当前的本地人,所以我基本上可以做同样的事情。除非,它所做的是每次启动时从互联网上下载它。如果是真的,那有点丑陋。像我一样看到带宽使用限制。)

于 2013-08-25T23:01:54.350 回答