HEX to DEC Topic is solved

Stelle Fragen zur Automatisierung von Spielen

Moderator: jNizM

User avatar
glnklein
Posts: 90
Joined: 23 Oct 2020, 04:26

HEX to DEC

Post by glnklein » 19 Dec 2020, 03:58

Guten Morgen ,

ich habe ein Problem mit einer Umwandlung von Hex .

Ein Programm in C# wandelt eine IP und den PORT (IP:PORT) in eine HEX ( keine Ahnung in was für eine HEX ) um.

nun möchte ich mit AHK das selbe machen also aus der IP und dem PORT die richtige HEX machen .

was ich bisher habe :

59F79A48712B = 89.247.154.72:28971

und der c# code ist

Code: Select all

using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class cod4master
{
    class Program
    {

        public static byte[] StringToByteArray(string hex)
        {
            return Enumerable.Range(0, hex.Length)
                             .Where(x => x % 2 == 0)
                             .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
                             .ToArray();
        }
        public static void Main()
        {

            byte[] data = new byte[1024];
            int port = 20810;
            Console.Title = "cod4master.activision.com";
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, port);
            UdpClient newsock = new UdpClient(ipep);
            Console.WriteLine("cod4master.activision.com by SniperViper");
            Console.WriteLine("Started Listening on port {0}...", port);
            var lineCount = File.ReadLines("servers.txt").Count();
            Console.Title=(lineCount + " Servers registered");
            Console.WriteLine("");
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            //data = newsock.Receive(ref sender);
            
            Console.WriteLine("Message received from {0}:", sender.ToString());
            Console.WriteLine(Encoding.ASCII.GetString(data, 0, data.Length));

            int gif = 1;

            while (gif < 10)
            {
                data = newsock.Receive(ref sender);
                string message = Encoding.ASCII.GetString(data, 0, data.Length);
                Console.WriteLine("Client -> Server: {0}", Encoding.ASCII.GetString(data, 0, data.Length));
                // newsock.Send(data, data.Length, sender);
                // var TEST = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00, 0x40, 0x0A, 0x00, 0x5C, 0x7F, 0x00, 0x00, 0x01, 0x71, 0x21, 0x5C, 0x45, 0x4F, 0x46 };

                //Convert.ToInt64(hexValue, 16); (HEX2DECIMAL)
                //string.format("{0:x}", decValue); (DECIMAL2HEX)

                if (message.Contains("getservers"))

                {
                    int LOOP_Count = 0;
                    int srv_counter = 0;

                    Console.WriteLine(DateTime.Now + ": " + "Getservers request from: {0}", sender.ToString(), Encoding.ASCII.GetString(data, 0, data.Length));
                    

                    //var Body = new byte[] { 0x7F, 0x00, 0x00, 0x01, 0x71, 0x21 };
                    
                    while (LOOP_Count < 1)
                    {
                        try
                        {
                            var Header = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00, 0x40, 0x0A, 0x00, 0x5C };
                            string[] server_list = File.ReadAllLines("servers.txt");
                            
                            string REP = server_list[srv_counter];
                            srv_counter++;
                            //string REP = "C0A8016F7121";


                            //int intValue = 127;
                            //string hexValue = intValue.ToString("X");
                            //Console.WriteLine("TEST MESSAGE IGNORE: {0}",hexValue);

                            byte[] stest = StringToByteArray(REP);

                            //var Body = File.ReadAllBytes("servers.txt");

                            var Footer = new byte[] { 0x5C, 0x45, 0x4F, 0x46 };

                            var Packet = new MemoryStream();
                            Packet.Write(Header, 0, Header.Length);
                            Packet.Write(stest, 0, stest.Length);
                            Packet.Write(Footer, 0, Footer.Length);
                            var packetc = Packet.ToArray();


                            newsock.Send(packetc, packetc.Length, sender);

                            Console.WriteLine("Server -> Client: {0}", Encoding.ASCII.GetString(packetc, 0, packetc.Length));
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                            LOOP_Count = 200;
                            Console.WriteLine(DateTime.Now + ": " + "Sent ({0}) servers to {1}", srv_counter, sender.ToString());
                        }

                    }


                    ;
                }
                else if (message.Contains("heartbeat COD-4"))
                {
                    Console.WriteLine(DateTime.Now + ": " + "Heartbeat from: {0}", sender.ToString());
                    Console.WriteLine("Message received from {0}", sender.ToString());
                    Console.WriteLine("Heartbeat Recieved!");
                    string New_Server = sender.ToString();

                    //Gets first IP before the first .
                    var First = New_Server.Split(new string[] { "." }, StringSplitOptions.None)[0]
                    .Split('.')[0]
                    .Trim();

                    //Gets second ip
                    var Second = New_Server.Split(new string[] { "." }, StringSplitOptions.None)[1]
                        .Split('.')[0]
                        .Trim();

                    //gets third IP
                    var Third = New_Server.Split(new string[] { "." }, StringSplitOptions.None)[2]
                     .Split('.')[0]
                     .Trim();

                    //Gets Fourth num from IP after .
                    var Fourth_1 = New_Server.Split(new string[] { ":" }, StringSplitOptions.None)[0]
                    .Split(':')[0]
                    .Trim();
                    var Fourth_2 = Fourth_1.Split(new string[] { "." }, StringSplitOptions.None)[3]
                    .Split('.')[0]
                    .Trim();

                    var PORT_Srv = New_Server.Split(new string[] { ":" }, StringSplitOptions.None)[1]
                    .Split(':')[0]
                    .Trim();

                    int One = Int32.Parse(First);
                    string One_Hex = One.ToString("X");
                    if (One_Hex.Length == 1)
                    {
                        One_Hex = "0" + One_Hex;
                    }

                    int Two = Int32.Parse(Second);
                    string Two_Hex = Two.ToString("X");
                    if (Two_Hex.Length == 1)
                    {
                        Two_Hex = "0" + Two_Hex;
                    }

                    int Three = Int32.Parse(Third);
                    string Three_Hex = Three.ToString("X");
                    if (Three_Hex.Length == 1)
                    {
                        Three_Hex = "0" + Three_Hex;
                    }

                    int Four = Int32.Parse(Fourth_2);
                    string Four_Hex = Four.ToString("X");
                    if (Four_Hex.Length == 1)
                    {
                        Four_Hex = "0" + Four_Hex;
                    }

                    int Port_Decimal = Int32.Parse(PORT_Srv);
                    string Port_Hex = Port_Decimal.ToString("X");

                    string read_test = System.IO.File.ReadAllText("servers.txt");

                    if (read_test.Contains(One_Hex + Two_Hex + Three_Hex + Four_Hex + Port_Hex))
                    {
                        Console.WriteLine(DateTime.Now + ": " + "Server already in serverlist");
                    }
                    else
                    {
                        System.IO.File.AppendAllText("servers.txt", Environment.NewLine + One_Hex + Two_Hex + Three_Hex + Four_Hex + Port_Hex);
                        var serverCount = File.ReadLines("servers.txt").Count();
                        Console.Title = (serverCount + " Servers registered");
                        Console.WriteLine(DateTime.Now + ": " + One_Hex + Two_Hex + Three_Hex + Four_Hex + Port_Hex + " - ADDED TO SERVERLIST!");
                    }
   
                   
                    ;
                }
                else
                {
                    //Console.WriteLine("Nothing message was not understood!");
                    Console.WriteLine(DateTime.Now + ": " + sender.ToString() + " - " +Encoding.ASCII.GetString(data, 0, data.Length));
                    ;
                }


                //newsock.Send(TEST, TEST.Length, sender);
                //Console.WriteLine("Server -> Client: {0}", Encoding.ASCII.GetString(TEST, 0, TEST.Length));

            }

        }
    }

}


hoffe jemand weiß da eine AHK lösung um IP:Port wieder sichtbar zu machen und umgekehrt .

just me
Posts: 9423
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: HEX to DEC

Post by just me » 19 Dec 2020, 04:55

Oh Du fröhliche ... :xmas:

Code: Select all

#NoEnv
IP := "89.247.154.72"
Port := "28971"

H := IPP2HEX(IP, Port)
I := HEX2IPP(H)
MsgBox, IP:`t%IP%`nPort:`t%Port%`n`n%H%`n`n%I%
ExitApp

IPP2HEX(IP, Port) {
   If Port Is Not Integer
      Return ""
   Hex := ""
   Arr := StrSplit(IP, ".")
   If (Arr.Length() <> 4)
      Return ""
   For I, V In Arr {
      If V Is Not integer
         Return ""
      If V Not Between 0 And 255
         Return ""
      Hex .= Format("{:02X}", V)
   }
   Hex .= Format("{:X}", Port)
   Return Hex
}

HEX2IPP(Hex) {
   If (StrLen(HEX) < 9)
      Return ""
   If Hex Is Not xdigit
      Return ""
   P := 1
   IPP := ""
   Loop, 4 {
      H := "0x" . SubStr(Hex, P, 2)
      IPP .= "." . (H + 0)
      P += 2
   }
   H := "0x" . SubStr(Hex, P)
   IPP .= ":" . (H + 0)
   Return SubStr(IPP, 2)
}
Edit: Funktion IPP2HEX() korrigiert (s.u.)
Last edited by just me on 20 Dec 2020, 03:56, edited 1 time in total.

User avatar
glnklein
Posts: 90
Joined: 23 Oct 2020, 04:26

Re: HEX to DEC

Post by glnklein » 19 Dec 2020, 06:03

DANKE ,

ich nehme an du hast es getestet und bei dir funktioniert es , kannst du mir sagen welche ahk version du verwendest weil ich bekomme einen fehler
Attachments
Zwischenabtlage-1.jpg
Zwischenabtlage-1.jpg (20.52 KiB) Viewed 3856 times
:D verwende AutoHotkey104805 :D ------------------------UPDATE auf ..1.1.33.02 erfolgreich , jetzt kommen neue Probleme :lolno:

just me
Posts: 9423
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: HEX to DEC  Topic is solved

Post by just me » 19 Dec 2020, 06:26

Ja, ich habe getestet, aber anscheinend zwischen Testen und Einstellen noch mal rumgefummelt. :(

Code: Select all

IPP2HEX(IP, Port) {
   If Port Is Not Integer
      Return ""
   Hex := ""
   Arr := StrSplit(IP, ".")
   If (Arr.Length() <> 4)
      Return ""
   For I, V In Arr {
      If V Is Not integer
         Return ""
      If V Not Between 0 And 255
         Return ""
      Hex .= Format("{:02X}", V)
   }
   Hex .= Format("{:X}", Port)
   Return Hex
}
Das sollte besser sein.

User avatar
glnklein
Posts: 90
Joined: 23 Oct 2020, 04:26

Re: HEX to DEC

Post by glnklein » 19 Dec 2020, 07:11

JA !!!! SUPER DANKE ,

Ich versteghe zwar noch nicht den ganzen code aber Vielen Dank !!!

UND BEVOR ICH EIN NEUERES THEMA AUFMACHE , EINEN TIP WIE ICH AM BESTEN EINE XML DADEI AUSWERTEN KANN ?

Frohe weihnachen
:D verwende AutoHotkey104805 :D ------------------------UPDATE auf ..1.1.33.02 erfolgreich , jetzt kommen neue Probleme :lolno:

just me
Posts: 9423
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: HEX to DEC

Post by just me » 20 Dec 2020, 03:54

Moin,

mach bei Bedarf ein neues Thema auf. Die 'einfachste' Lösung ist davon abhängig, ob es sich um eine Datei mit relativ starren wohlbekannten Strukturen handelt oder ob die Strukturen eher 'dynamisch' sind.

User avatar
glnklein
Posts: 90
Joined: 23 Oct 2020, 04:26

Re: HEX to DEC

Post by glnklein » 20 Dec 2020, 14:46

DANKE ist nicht mehr nötig habs hin bekommen ,
nochmal danke für die Hilfe !!! :xmas:
:D verwende AutoHotkey104805 :D ------------------------UPDATE auf ..1.1.33.02 erfolgreich , jetzt kommen neue Probleme :lolno:

Post Reply

Return to “Spiele”