パケットを使用して、C# で Minecraft の偽のクライアント (別名 Minecraft のチャットボット) を作成しようとしています。私はすでにこれを達成するためにさまざまな方法を試しましたが、うまくいきませんでした。
パケットを送信するたびに、データは送信されません (packetsniffer を使用)。パケットスニファーは、パケットの合計サイズは 190 バイトであると言っています。サイズは 17 バイトです。
これが私のコードです:
static TcpClient client = new TcpClient();
static void Main(string[] args)
{
Console.WriteLine("Start GATHERING INFO.....");
Console.Write("Write a ip: ");
IPAddress ip = IPAddress.Parse("192.168.178.11");
try
{
ip = IPAddress.Parse(Console.ReadLine());
}
catch
{
Console.Write("\nUnknown/Wrong ip entered redirecting to : 127.0.0.1 (AKA Localhost)");
ip = IPAddress.Parse("192.168.178.11");
}
Console.Write("\nWrite a port: ");
int port = int.Parse(Console.ReadLine());
Console.WriteLine("Connecting.....");
try
{
client.Connect(ip, port);
client.NoDelay = false;
Console.WriteLine("Connection succesfull!");
}catch
{
Console.WriteLine("--== ERROR WHILE TRYING TO CONNECT PLEASE RESTART PROGRAM ==--");
Console.ReadKey();
client.Close();
Main(args);
}
Stream stream = client.GetStream();
Console.Write("Please enter a username: ");
string usrn = Console.ReadLine();
Console.Write("\n");
byte[] data = new byte[3 + usrn.Length*2];
data[0] = (byte)2;
data[1] = (byte)29;
gb(usrn).CopyTo(data, 2);
stream.Write(data, 0, data.Length);
Console.ReadKey();
}
public static byte[] gb(String str)
{
return System.Text.ASCIIEncoding.ASCII.GetBytes(str);
}
パケットは次のようになります。
http://www.wiki.vg/Protocol#Handshake_.280x02.29
他のボットが使用していないため、サーバー ホストとサーバー ポートは無視します。(ただし、機能しませんでした:/
元のクライアント パケットの内容は次のとおりです。
「奇妙な goto を示しています: https://dl.dropbox.com/u/32828727/packetsocketsminecraft.txt」
timboiscool9 (私のユーザー名) 192.168.178.1 (サーバー IP)
この後もまだありますが、これが私が必要としているものです。
私はソケットとtcpclientsにかなり慣れていません