Hallo,
ich habe drei Fragen:
1) Welche Anfragen sende ich, wenn ich mich in eine Chatraum in Ares verbinde?
2) Welche Anrufe gibt es?
3) Welche Paketen werden gesendet?
Hier ein Teil der "Server" (ein Teil der Quellcode von Sb0t):
Danke und Gruß
ich habe drei Fragen:
1) Welche Anfragen sende ich, wenn ich mich in eine Chatraum in Ares verbinde?
2) Welche Anrufe gibt es?
3) Welche Paketen werden gesendet?
Hier ein Teil der "Server" (ein Teil der Quellcode von Sb0t):
Code:
[COLOR=blue]using[/COLOR] System;
[COLOR=blue]using[/COLOR] System.Collections.Generic;
[COLOR=blue]using[/COLOR] System.Text;
[COLOR=blue]using[/COLOR] System.Net;
[COLOR=blue]using[/COLOR] System.Text.RegularExpressions;
[COLOR=blue]namespace[/COLOR] Ares.PacketHandlers
{
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Helpful Ares Packet Processor Object[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]class[/COLOR] AresDataPacket
{
[COLOR=blue]private[/COLOR] [COLOR=blue]int[/COLOR] Position = 0;
[COLOR=blue]private[/COLOR] List<[COLOR=blue]byte[/COLOR]> Data = [COLOR=blue]new[/COLOR] List<[COLOR=blue]byte[/COLOR]>();
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Creates an empty Ares Data Packet Object ready for Writing[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=blue]public[/COLOR] AresDataPacket()
{
[COLOR=blue]this[/COLOR].Data.Clear();
[COLOR=blue]this[/COLOR].Position = 0;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Creates a populated Ares Data Packet Object ready for Reading[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="bytes">[/COLOR][COLOR=green]The Byte Array of the Received Ares Packet</param>[/COLOR]
[COLOR=blue]public[/COLOR] AresDataPacket([COLOR=blue]byte[/COLOR][] bytes)
{
[COLOR=blue]this[/COLOR].Data.Clear();
[COLOR=blue]this[/COLOR].Position = 0;
[COLOR=blue]this[/COLOR].Data.AddRange(bytes);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Returns size of byte array[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]int[/COLOR] GetByteCount()
{
[COLOR=blue]return[/COLOR] [COLOR=blue]this[/COLOR].Data.Count;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Examine current byte without incrementing the reader index[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR] PeekByte()
{
[COLOR=blue]return[/COLOR] [COLOR=blue]this[/COLOR].Data[[COLOR=blue]this[/COLOR].Position];
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Return the reader index of the first instance of a byte[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="b">[/COLOR][COLOR=gray]</param>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]int[/COLOR] IndexOf([COLOR=blue]byte[/COLOR] b)
{
[COLOR=blue]return[/COLOR] [COLOR=blue]this[/COLOR].Data.IndexOf(b, [COLOR=blue]this[/COLOR].Position);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Return number of bytes unread in the packet reader[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]int[/COLOR] Remaining()
{
[COLOR=blue]return[/COLOR] [COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Insert a byte at a specific index[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] ReplaceByte([COLOR=blue]byte[/COLOR] b, [COLOR=blue]int[/COLOR] i)
{
[COLOR=blue]this[/COLOR].Data[i] = b;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Manually set the position of the Packet Reader[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="position">[/COLOR][COLOR=gray]</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] SetPosition([COLOR=blue]int[/COLOR] position)
{
[COLOR=blue]this[/COLOR].Position = position;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Force the Packet Reader to move forward one byte[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] SkipByte()
{
[COLOR=blue]this[/COLOR].Position++;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Force the Packet Reader to move forward a specified number of bytes[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="count">[/COLOR][COLOR=gray]</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] SkipBytes([COLOR=blue]int[/COLOR] count)
{
[COLOR=blue]this[/COLOR].Position += count;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Positions the Packet Reader ahead of the first 3 bytes which are reserved for Ares Protocol ID and Length[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] PositionReaderAfterHeader()
{
[COLOR=blue]this[/COLOR].Position = 3;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next byte[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR] ReadByte()
{
[COLOR=blue]byte[/COLOR] tmp = [COLOR=blue]this[/COLOR].Data[[COLOR=blue]this[/COLOR].Position];
[COLOR=blue]this[/COLOR].Position++;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the final byte[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR] LastByte()
{
[COLOR=blue]return[/COLOR] [COLOR=blue]this[/COLOR].Data[[COLOR=blue]this[/COLOR].Data.Count - 1];
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next specified number of bytes[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="count">[/COLOR][COLOR=gray]</param>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR][] ReadBytes([COLOR=blue]int[/COLOR] count)
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < count) [COLOR=blue]return[/COLOR] [COLOR=blue]null[/COLOR];
[COLOR=blue]byte[/COLOR][] tmp = [COLOR=blue]new[/COLOR] [COLOR=blue]byte[/COLOR][count];
Array.Copy([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position, tmp, 0, tmp.Length);
[COLOR=blue]this[/COLOR].Position += count;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns all remaining bytes[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR][] ReadBytes()
{
[COLOR=blue]byte[/COLOR][] tmp = [COLOR=blue]new[/COLOR] [COLOR=blue]byte[/COLOR][[COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position];
Array.Copy([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position, tmp, 0, tmp.Length);
[COLOR=blue]this[/COLOR].Position += tmp.Length;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next 16 byte GUID[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] Guid ReadGuid()
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < 16) [COLOR=blue]return[/COLOR] [COLOR=blue]new[/COLOR] Guid();
[COLOR=blue]byte[/COLOR][] tmp = [COLOR=blue]new[/COLOR] [COLOR=blue]byte[/COLOR][16];
Array.Copy([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position, tmp, 0, tmp.Length);
[COLOR=blue]this[/COLOR].Position += 16;
[COLOR=blue]return[/COLOR] [COLOR=blue]new[/COLOR] Guid(tmp);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next 2 byte Integer[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]ushort[/COLOR] ReadInt16()
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < 2) [COLOR=blue]return[/COLOR] 0;
[COLOR=blue]ushort[/COLOR] tmp = ([COLOR=blue]ushort[/COLOR])BitConverter.ToInt16([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position);
[COLOR=blue]this[/COLOR].Position += 2;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next 4 byte Integer[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]uint[/COLOR] ReadInt32()
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < 4) [COLOR=blue]return[/COLOR] 0;
[COLOR=blue]uint[/COLOR] tmp = ([COLOR=blue]uint[/COLOR])BitConverter.ToInt32([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position);
[COLOR=blue]this[/COLOR].Position += 4;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next 8 byte Integer[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]ulong[/COLOR] ReadInt64()
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < 8) [COLOR=blue]return[/COLOR] 0;
[COLOR=blue]ulong[/COLOR] tmp = ([COLOR=blue]ulong[/COLOR])BitConverter.ToInt64([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position);
[COLOR=blue]this[/COLOR].Position += 8;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next IPAddress Object[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] IPAddress ReadIP()
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < 4) [COLOR=blue]return[/COLOR] [COLOR=blue]null[/COLOR];
[COLOR=blue]byte[/COLOR][] tmp = [COLOR=blue]new[/COLOR] [COLOR=blue]byte[/COLOR][4];
Array.Copy([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position, tmp, 0, tmp.Length);
[COLOR=blue]this[/COLOR].Position += 4;
[COLOR=blue]return[/COLOR] [COLOR=blue]new[/COLOR] IPAddress(tmp);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next 4 byte Unix Timestamp DateTime Object[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] DateTime ReadUnixTimeStamp()
{
[COLOR=blue]if[/COLOR] (([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position) < 4) [COLOR=blue]return[/COLOR] [COLOR=blue]new[/COLOR] DateTime();
DateTime tmp = [COLOR=blue]new[/COLOR] System.DateTime(1970, 1, 1, 0, 0, 0, 0);
tmp = tmp.AddSeconds(BitConverter.ToInt32([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position));
[COLOR=blue]this[/COLOR].Position += 4;
[COLOR=blue]return[/COLOR] tmp;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Reader returns the next Null Terminated String[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] String ReadString()
{
[COLOR=blue]if[/COLOR] ([COLOR=blue]this[/COLOR].Position >= [COLOR=blue]this[/COLOR].Data.Count) [COLOR=blue]return[/COLOR] String.Empty;
[COLOR=blue]int[/COLOR] split = [COLOR=blue]this[/COLOR].Data.IndexOf(0, [COLOR=blue]this[/COLOR].Position);
[COLOR=blue]byte[/COLOR][] tmp = [COLOR=blue]new[/COLOR] [COLOR=blue]byte[/COLOR][split > -1 ? (split - [COLOR=blue]this[/COLOR].Position) : ([COLOR=blue]this[/COLOR].Data.Count - [COLOR=blue]this[/COLOR].Position)];
Array.Copy([COLOR=blue]this[/COLOR].Data.ToArray(), [COLOR=blue]this[/COLOR].Position, tmp, 0, tmp.Length);
[COLOR=blue]this[/COLOR].Position = split > -1 ? (split + 1) : [COLOR=blue]this[/COLOR].Data.Count;
String str = Encoding.UTF8.GetString(tmp);
String[] bad_chars = [COLOR=blue]new[/COLOR] String[] [COLOR=green]// skiddy[/COLOR]
{
[COLOR=#A31515]"\r\n"[/COLOR],
[COLOR=#A31515]"\r"[/COLOR],
[COLOR=#A31515]"\n"[/COLOR],
[COLOR=#A31515]""[/COLOR],
[COLOR=#A31515]""[/COLOR],
[COLOR=#A31515]"\x00cc\x00b8"[/COLOR]
};
[COLOR=blue]foreach[/COLOR] (String c [COLOR=blue]in[/COLOR] bad_chars)
str = Regex.Replace(str, c, [COLOR=#A31515]""[/COLOR], RegexOptions.IgnoreCase);
[COLOR=blue]return[/COLOR] str;
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a byte to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="b">[/COLOR][COLOR=green]The single Byte to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteByte([COLOR=blue]byte[/COLOR] b)
{
[COLOR=blue]this[/COLOR].Data.Add(b);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a byte array to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="b">[/COLOR][COLOR=green]The Byte Array to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteBytes([COLOR=blue]byte[/COLOR][] b)
{
[COLOR=blue]this[/COLOR].Data.AddRange(b);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a 16 byte GUID to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="g">[/COLOR][COLOR=green]The GUID to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteGuid(Guid g)
{
[COLOR=blue]this[/COLOR].Data.AddRange(g.ToByteArray());
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a 2 byte Integer to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="i">[/COLOR][COLOR=green]The 16 bit Integer to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteInt16([COLOR=blue]ushort[/COLOR] i)
{
[COLOR=blue]this[/COLOR].Data.AddRange(BitConverter.GetBytes(i));
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a 4 byte Integer to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="i">[/COLOR][COLOR=green]The 32 bit Integer to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteInt32([COLOR=blue]uint[/COLOR] i)
{
[COLOR=blue]this[/COLOR].Data.AddRange(BitConverter.GetBytes(i));
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a 8 byte Integer to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="i">[/COLOR][COLOR=green]The 64 bit Integer to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteInt64([COLOR=blue]ulong[/COLOR] i)
{
[COLOR=blue]this[/COLOR].Data.AddRange(BitConverter.GetBytes(i));
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer converts a dotted IP Address to bytes and adds to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="ip_string">The Dotted IP Address to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteIP(String ip_string)
{
[COLOR=blue]this[/COLOR].Data.AddRange(IPAddress.Parse(ip_string).GetAddressBytes());
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer converts a numeric IP Address to bytes and adds to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="ip_numeric">The Numeric IP Address to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteIP([COLOR=blue]long[/COLOR] ip_numeric)
{
[COLOR=blue]this[/COLOR].Data.AddRange([COLOR=blue]new[/COLOR] IPAddress(ip_numeric).GetAddressBytes());
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer converts a 4 element byte array into Network Order and adds to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="ip_bytes">The 4 element Byte Array to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteIP([COLOR=blue]byte[/COLOR][] ip_bytes)
{
[COLOR=blue]if[/COLOR] (ip_bytes.Length != 4) [COLOR=blue]return[/COLOR];
[COLOR=blue]this[/COLOR].Data.AddRange([COLOR=blue]new[/COLOR] IPAddress(ip_bytes).GetAddressBytes());
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer converts an IPAddress Object into bytes and adds to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="ip_object">The IPAddress Object to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteIP(IPAddress ip_object)
{
[COLOR=blue]this[/COLOR].Data.AddRange(ip_object.GetAddressBytes());
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a 4 byte Integer representing the current Unix Time to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteUnixTimeStamp()
{
TimeSpan ts = (DateTime.UtcNow - [COLOR=blue]new[/COLOR] DateTime(1970, 1, 1, 0, 0, 0));
[COLOR=blue]this[/COLOR].Data.AddRange(BitConverter.GetBytes(([COLOR=blue]uint[/COLOR])ts.TotalSeconds));
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a Null Terminated String to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="text">[/COLOR][COLOR=green]The String to be added</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteString(String text)
{
[COLOR=blue]this[/COLOR].Data.AddRange(Encoding.UTF8.GetBytes(text));
[COLOR=blue]this[/COLOR].Data.Add(0);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Packet Writer adds a String to the end of the packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<param name="text">[/COLOR][COLOR=green]The String to be added to the packet</param>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="null_terminated">Set to False if the string does not require Null Termination</param>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]void[/COLOR] WriteString(String text, [COLOR=blue]bool[/COLOR] null_terminated)
{
[COLOR=blue]this[/COLOR].Data.AddRange(Encoding.UTF8.GetBytes(text));
[COLOR=blue]if[/COLOR] (null_terminated) [COLOR=blue]this[/COLOR].Data.Add(0);
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Convert AresDataPacket Object into a Byte Array[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR][] ToByteArray()
{
[COLOR=blue]return[/COLOR] [COLOR=blue]this[/COLOR].Data.ToArray();
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Convert AresDataPacket Object into a correctly formatted Ares Packet Byte Array ready for sending[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="packet_id">The Ares Protocol Packet Identification Number</param>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR][] ToAresPacket([COLOR=blue]byte[/COLOR] packet_id)
{
List<[COLOR=blue]byte[/COLOR]> tmp = [COLOR=blue]new[/COLOR] List<[COLOR=blue]byte[/COLOR]>([COLOR=blue]this[/COLOR].Data.ToArray());
tmp.Insert(0, packet_id);
tmp.InsertRange(0, BitConverter.GetBytes(([COLOR=blue]ushort[/COLOR])(tmp.Count - 1)));
[COLOR=blue]return[/COLOR] tmp.ToArray();
}
[COLOR=gray]///[/COLOR] [COLOR=gray]<summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] Convert AresDataPacket Object into a corrently formatted Ares DC Packet[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]</summary>[/COLOR]
[COLOR=gray]///[/COLOR][COLOR=green] <param name="packet_id">The Ares Protocol Packet Identification Number</param>[/COLOR]
[COLOR=gray]///[/COLOR] [COLOR=gray]<returns>[/COLOR][COLOR=gray]</returns>[/COLOR]
[COLOR=blue]public[/COLOR] [COLOR=blue]byte[/COLOR][] ToAresDCPacket([COLOR=blue]byte[/COLOR] packet_id)
{
List<[COLOR=blue]byte[/COLOR]> tmp = [COLOR=blue]new[/COLOR] List<[COLOR=blue]byte[/COLOR]>([COLOR=blue]this[/COLOR].Data.ToArray());
tmp.Insert(0, packet_id);
tmp.InsertRange(0, BitConverter.GetBytes(([COLOR=blue]ushort[/COLOR])(tmp.Count - 1)));
tmp.Insert(0, 0);
[COLOR=blue]return[/COLOR] tmp.ToArray();
}
}
}
Danke und Gruß
Zuletzt bearbeitet von einem Moderator: