Beispiel #1
0
        static void Main(string[] args)
        {
            IPEndPoint authServer  = new IPEndPoint(IPAddress.Parse("37.114.57.220"), 11000);
            IPEndPoint loginServer = new IPEndPoint(IPAddress.Parse("37.114.57.220"), 13010);
            //IPEndPoint gameServer = new IPEndPoint(IPAddress.Parse("37.114.57.220"), 13094);
            VirtualClient vc = new VirtualClient(authServer, loginServer, Encoding.UTF8.GetBytes("LV,ZEuzy5A_[{LF!"));

            vc.LoginSuccessCallback += Vc_LoginSuccessCallback;
            vc.LoginFailCallback    += Vc_LoginFailCallback;
            vc.Login("hackxlawl", "asdasdasd");

            byte[] key = Encoding.UTF8.GetBytes("LV,ZEuzy5A_[{LF!");
            //byte[] enckey = new byte[] { 0x7D, 0x6E, 0x78, 0x5F, 0x82, 0x01, 0x9E, 0x5B, 0xCB, 0x2C, 0x75, 0x62, 0xEC, 0xF5, 0xCF, 0x7A };

            //byte[] key = CryptoUtils.GetKey_20050304Myevan();
            //byte[] decryptKey = TinyEncryptionAlgorithm.Encrypt(enckey, key);

            //byte[] data = { 0x95, 0x0C, 0x18, 0x3C, 0xE3, 0x19, 0xD7, 0x01 };


            ////TinyEncryptionAlgorithm tea = new TinyEncryptionAlgorithm();
            //byte[] de = TinyEncryptionAlgorithm.Decrypt(data, decryptKey);

            //Logger l = new Logger();
            //l.Log("hddmod", de);
            //Console.ReadLine();
        }
Beispiel #2
0
        public override void Received(VirtualClient virtualClient)
        {
            Inventory inventory = virtualClient.GetInventory(Cell.WindowType);

            if (inventory != null)
            {
                SlotItem slotItem = new SlotItem()
                {
                    Vnum  = this.Vnum,
                    Count = this.Count
                };
                for (int i = 0; i < StatBytes.Length; i = i + 3)
                {
                    ItemStatType type  = (ItemStatType)StatBytes[i];
                    Int16        value = BitConverter.ToInt16(StatBytes, i + 1);
                    if (type != ItemStatType.None)
                    {
                        slotItem.ItemStats.Add(new ItemStat()
                        {
                            Type = type, Value = value
                        });
                    }
                }
                inventory.SetSlot(Cell.Cell, slotItem);
                virtualClient.OnSlotChanged(Cell.WindowType, Cell.Cell, inventory.Slots[Cell.Cell]);
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            //IPEndPoint authServer = new IPEndPoint(IPAddress.Parse("37.114.57.220"), 11000);
            //IPEndPoint loginServer = new IPEndPoint(IPAddress.Parse("37.114.57.220"), 13030);

            IPEndPoint authServer  = new IPEndPoint(IPAddress.Parse("149.202.214.144"), 11000);
            IPEndPoint loginServer = new IPEndPoint(IPAddress.Parse("149.202.214.144"), 13010);

            VirtualClient virtualClient = new VirtualClient(authServer, loginServer, Encoding.UTF8.GetBytes("LV,ZEuzy5A_[{LF!"));

            virtualClient.LoginSuccessCallback       += VirtualClient_LoginSuccessCallback;
            virtualClient.LoginFailCallback          += VirtualClient_LoginFailCallback;
            virtualClient.ShopSearchFinishedCallback += VirtualClient_ShopSearchFinishedCallback;
            virtualClient.ItemSlotChangedCallback    += VirtualClient_ItemSlotChangedCallback;
            virtualClient.Logger.LogLevel             = LogLevel.Info;
            virtualClient.Login("testbenutzername", "testpasswort");
            vc             = virtualClient;
            timer.Elapsed += Timer_Elapsed;
            while (true)
            {
                Console.ReadLine();
            }



            //Decrypt output from smartsniff with this code.

            //byte[] defkey = Encoding.UTF8.GetBytes("LV,ZEuzy5A_[{LF!");
            //byte[] enkey = new byte[] { 0xB1, 0x5A, 0xF7, 0x21, 0xE2, 0x2B, 0x63, 0x76, 0x26, 0x3F, 0xD6, 0x68, 0x8F, 0x0D, 0xCC, 0x49 };
            ////byte[] enkey = new byte[] { 0xAA, 0xAA, 0xAA, 0xAA, 0xBB, 0xBB, 0xBB, 0xBB, 0xCC, 0xCC, 0xCC, 0xCC, 0xDD, 0xDD, 0xDD, 0xDD };
            //byte[] chinakey = CryptoUtils.GetKey_20050304Myevan();
            //byte[] dekey = TinyEncryptionAlgorithm.Encrypt(enkey, chinakey);

            //while (true)
            //{
            //    String input;
            //    byte[] bytes = new byte[0];
            //    do
            //    {
            //        input = Console.ReadLine();
            //        if (String.IsNullOrWhiteSpace(input))
            //            break;
            //        String line = input.Substring(10);
            //        int endpos = line.IndexOf("   ");
            //        line = line.Substring(0, endpos);
            //        String hex = line.Replace(" ", "");
            //        byte[] b = Enumerable.Range(0, hex.Length)
            //             .Where(x => x % 2 == 0)
            //             .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
            //             .ToArray();
            //        bytes = bytes.Concat(b).ToArray();
            //    } while (input.Length > 0);

            //    byte[] dec = TinyEncryptionAlgorithm.Decrypt(bytes, defkey);

            //    Logger l = new Logger();
            //    l.LogInfo("Input: ", dec);
            //    Console.ReadLine();
            //}
        }
Beispiel #4
0
 public override void Received(VirtualClient virtualClient)
 {
     virtualClient.Logger.LogInfo("Authentication success");
     virtualClient.Disconnect();
     virtualClient.Encryption = false;
     virtualClient.LoginInformation.LoginKey = LoginKey;
     virtualClient.Connect(ServerEndPoint.LoginServer);
 }
        public override void Received(VirtualClient virtualClient)
        {
            UInt16 packetSize = (UInt16)(Size - Marshal.SizeOf <SSyncPositionPacket>());

            if (packetSize > 0)
            {
                virtualClient.DequeueReceivedData(packetSize);
            }
        }
Beispiel #6
0
 private static void VirtualClient_ItemSlotChangedCallback(VirtualClient virtualClient, byte window, UInt16 slot, SlotItem slotItem)
 {
     if (!(window == 1 && slot == 0))
     {
         return;
     }
     itemStats = slotItem.ItemStats;
     timer.Stop();
     timer.Start();
 }
        public override void Received(VirtualClient virtualClient)
        {
            LoginFailResult result = new LoginFailResult
            {
                LoginFailReason = LoginFailReason.Description,
                Description     = this.Status
            };

            virtualClient.OnLoginFail(result);
        }
Beispiel #8
0
        public override void Received(VirtualClient virtualClient)
        {
            UInt16 packetLength = (UInt16)(Size - Marshal.SizeOf <SQuestInfoPacket>());

            byte[]          packetBytes = virtualClient.DequeueReceivedData(packetLength);
            QuestPacketType type        = QuestPacketType.QUEST_PACKET_TYPE_NONE;

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_IS_BEGIN) > 0)
            {
                if ((QuestPacketType)virtualClient.DequeueReceivedData(1).First() != 0)
                {
                    type = QuestPacketType.QUEST_PACKET_TYPE_BEGIN;
                }
                else
                {
                    type = QuestPacketType.QUEST_PACKET_TYPE_END;
                }
            }
            else
            {
                type = QuestPacketType.QUEST_PACKET_TYPE_UPDATE;
            }

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_TITLE) > 0)
            {
                virtualClient.DequeueReceivedData(31);
            }

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_CLOCK_NAME) > 0)
            {
                virtualClient.DequeueReceivedData(17);
            }

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_CLOCK_VALUE) > 0)
            {
                virtualClient.DequeueReceivedData(4);
            }

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_COUNTER_NAME) > 0)
            {
                virtualClient.DequeueReceivedData(17);
            }

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_COUNTER_VALUE) > 0)
            {
                virtualClient.DequeueReceivedData(4);
            }

            if ((Flag & (byte)QuestAttributes.QUEST_SEND_ICON_FILE) > 0)
            {
                virtualClient.DequeueReceivedData(25);
            }
        }
 public override void Received(VirtualClient virtualClient)
 {
     if(virtualClient.IsIngame == false)
     {
         CEnterGamePacket packet = new CEnterGamePacket();
         virtualClient.SendPacket(packet);
         virtualClient.Logger.LogInfo("Entered Game");
         virtualClient.IsIngame = true;
     }
     virtualClient.CharacterManager.GetCharacter().Gold = this.Gold;;
     virtualClient.Logger.LogInfo("Gold: " + Gold);
 }
Beispiel #10
0
        private void Received_PhaseSentry(VirtualClient virtualClient)
        {
            CSentrySendPacket packet = new CSentrySendPacket()
            {
                Mac        = "00::00::20::00::00::02",
                Guid       = "445cd91f-7ae3-acab-9ffa-51b9dc5bfabb",
                CpuId      = "288BBBFF0F100BA0",
                HddMod     = "SAMSUNGSUPERFASTFUCKYOU",
                HddSer     = "RS032GYJAB6969SHIT0845",
                DeviceName = "DESKTOP"
            };

            virtualClient.SendPacket(packet);
        }
Beispiel #11
0
 private static void Vc_LoginSuccessCallback(VirtualClient virtualClient, LoginSuccessResult loginResult)
 {
     Console.Clear();
     Console.WriteLine("Login Success");
     Console.WriteLine();
     foreach (SelectCharacter c in loginResult.Characters)
     {
         Console.WriteLine("Name: " + c.Name);
         Console.WriteLine("Level: " + c.Level);
         Console.WriteLine("Race: " + c.Race);
         Console.WriteLine();
     }
     virtualClient.SelectCharacter(0);
 }
Beispiel #12
0
        public override void Received(VirtualClient virtualClient)
        {
            Inventory inventory = virtualClient.GetInventory(Cell.WindowType);

            if (inventory != null)
            {
                SlotItem slotItem = new SlotItem()
                {
                    Vnum  = this.Vnum,
                    Count = this.Count
                };
                inventory.SetSlot(Cell.Cell, slotItem);
            }
        }
Beispiel #13
0
        public override void Received(VirtualClient virtualClient)
        {
            MainCharacter mainCharacter = new MainCharacter()
            {
                VID        = this.VID,
                Empire     = this.Empire,
                Name       = this.Username,
                Race       = this.Race,
                SkillGroup = this.SkillGroup,
                X          = this.X,
                Y          = this.Y,
                Z          = this.Z,
            };

            virtualClient.CharacterManager.SetCharacter(mainCharacter);
        }
    public void ProcessAction(VirtualClient client)
    {
        client.battleStart = true;

        foreach (var id_pos in clientPosDict)
        {
            if (client.ID == id_pos.Key)
            {
                client.InitPlayer(id_pos.Value);
            }
            else
            {
                client.InitOtherPlayer(id_pos.Key, id_pos.Value);
            }
        }
    }
Beispiel #15
0
        private void Received_PhaseAuth(VirtualClient virtualClient)
        {
            virtualClient.Encryption = true;

            CLogin3Packet packet = new CLogin3Packet()
            {
                Username  = virtualClient.LoginInformation.Username,
                Password  = virtualClient.LoginInformation.Password,
                HWID      = "CSsa/aFvBBQNA+1mkwS41lCvp4VYNBcw4UdoLWRD/1E=",
                Language  = "de",
                Timestamp = virtualClient.ClientVersion,
            };

            Array.Copy(virtualClient.ClientKey, packet.ClientKey, 4);

            virtualClient.SendPacket(packet);
        }
Beispiel #16
0
        public override void Received(VirtualClient virtualClient)
        {
            UInt16 packetSize = (UInt16)(Size - Marshal.SizeOf <SNPCPositionPacket>());

            byte[] packetBytes = virtualClient.DequeueReceivedData(packetSize);

            List <NPCPosition> npcPositions = new List <NPCPosition>(Count);
            int npcPositionSize             = Marshal.SizeOf <NPCPosition>();

            for (int i = 0; i < npcPositionSize * Count; i = i + npcPositionSize)
            {
                byte[] npcPositionBytes = new byte[npcPositionSize];
                Array.Copy(packetBytes, i, npcPositionBytes, 0, npcPositionSize);
                GCHandle    handle      = GCHandle.Alloc(npcPositionBytes, GCHandleType.Pinned);
                NPCPosition npcPosition = (NPCPosition)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(NPCPosition));
                handle.Free();
                npcPositions.Add(npcPosition);
            }
        }
        public override void Received(VirtualClient virtualClient)
        {
            if (virtualClient.ConnectedServerEndPoint != ServerEndPoint.GameServer)
            {
                virtualClient.LoginSuccessResult.Characters.AddRange(this.Characters.Where(x => x.ID != 0).ToList());
                String logtext = "";
                for (int i = 0; i < virtualClient.LoginSuccessResult.Characters.Count; i++)
                {
                    SelectCharacter character = virtualClient.LoginSuccessResult.Characters[i];
                    logtext += i + ") Name: " + character.Name + " Level: " + character.Level + " Race: " + character.Race + "\r\n";
                }

                virtualClient.Logger.LogInfo(logtext);
                virtualClient.OnLoginSuccess();
            }
            else
            {
                CCharacterSelectPacket packet = new CCharacterSelectPacket();
                packet.CharacterIndex = virtualClient.SelectedCharacterIndex;
                virtualClient.SendPacket(packet);
            }
        }
Beispiel #18
0
        private void Received_PhaseLogin(VirtualClient virtualClient)
        {
            if (virtualClient.LoginInformation.LoginKey.HasValue == false)
            {
                throw new Exception("No Login Key available");
            }
            virtualClient.Encryption = true;
            CLogin2Packet packet = new CLogin2Packet
            {
                Username = virtualClient.LoginInformation.Username,
                LoginKey = virtualClient.LoginInformation.LoginKey.Value
            };

            Array.Copy(virtualClient.ClientKey, packet.ClientKey, 4);
            virtualClient.SendPacket(packet);

            byte[] encryptKey = new byte[16];
            Buffer.BlockCopy(virtualClient.ClientKey, 0, encryptKey, 0, 16);
            byte[] key        = CryptoUtils.GetKey_20050304Myevan();
            byte[] decryptKey = TinyEncryptionAlgorithm.Encrypt(encryptKey, key);
            virtualClient.SetXteaKey(encryptKey, decryptKey);
        }
Beispiel #19
0
        private static void VirtualClient_ShopSearchFinishedCallback(VirtualClient virtualClient, List <ShopSearchTuple> tuples)
        {
            virtualClient.ShopManager.Buy(0x086c04, 1);
            //DateTime now = DateTime.Now;
            //virtualClient.Logger.LogLevel = LogLevel.Info;
            //if (tuples == null || tuples.Count == 0)
            //    return;

            //Stopwatch sw = new Stopwatch();
            //sw.Start();
            //int c = 0;



            //using (ShopContext context = new ShopContext())
            //{
            //    HashSet<String> allHashes = context.ShopItems.Select(x => x.Hash).ToHashSet();
            //    List<ShopSearchTuple> newTuples = tuples.Where(x => !allHashes.Contains(x.Hash)).ToList();
            //    foreach (ShopSearchTuple tuple in newTuples)
            //    {
            //        c++;
            //        ShopItem shopItem = new ShopItem()
            //        {
            //            Count = tuple.Count,
            //            Hash = tuple.Hash,
            //            ItemId = tuple.ItemId,
            //            UnitPrice = tuple.Price / tuple.Count,
            //            Seller = tuple.Seller,
            //            ShopId = tuple.ShopId,
            //            ShopPosition = tuple.ShopPosition,
            //        };
            //        context.ShopItems.Add(shopItem);
            //    }
            //    context.SaveChanges();
            //}
            //sw.Stop();
            //Console.WriteLine("Added " + c + " items to db in " + sw.ElapsedMilliseconds);
        }
Beispiel #20
0
        private async void connect_Click(object sender, EventArgs e)
        {
            var onlineStatus = online.Checked;

            if (onlineStatus)
            {
                _client.Disconnect();
                return;
            }
            var mac      = deviceNo.Text;
            var ip       = this.ip.Text;
            var port     = Convert.ToInt32(this.port.Text);
            var device   = new VirtualDevice(mac, showSend, showRecv, onlineChange);
            var hbSwitch = heartbeat.Checked;
            var interval = 30;

            if (!String.IsNullOrEmpty(heartBeatInterval.Text))
            {
                interval = Convert.ToInt32(heartBeatInterval.Text);
            }
            _client = new VirtualClient(ip, port, hbSwitch, interval, device);
            await _client.Start();
        }
Beispiel #21
0
        public override void Received(VirtualClient virtualClient)
        {
            Inventory inventory = virtualClient.GetInventory(Cell.WindowType);

            if (inventory != null)
            {
                List <ItemStat> itemStats = new List <ItemStat>();
                for (int i = 0; i < StatBytes.Length; i = i + 3)
                {
                    ItemStatType type  = (ItemStatType)StatBytes[i];
                    Int16        value = BitConverter.ToInt16(StatBytes, i + 1);
                    if (type != ItemStatType.None)
                    {
                        itemStats.Add(new ItemStat()
                        {
                            Type = type, Value = value
                        });
                    }
                }
                inventory.UpdateItem(Cell.Cell, Count, itemStats);
                virtualClient.OnSlotChanged(Cell.WindowType, Cell.Cell, inventory.Slots[Cell.Cell]);
            }
        }
Beispiel #22
0
 public override void Received(VirtualClient virtualClient)
 {
     virtualClient.currentPhase = this.Phase;
     if (this.Phase == Phase.AUTH)
     {
         Received_PhaseAuth(virtualClient);
     }
     else if (this.Phase == Phase.Login)
     {
         Received_PhaseLogin(virtualClient);
     }
     else if (this.Phase == Phase.Game)
     {
         Received_PhaseGame(virtualClient);
     }
     else if (this.Phase == Phase.SENTRY)
     {
         Received_PhaseSentry(virtualClient);
     }
     else if (this.Phase == Phase.Select)
     {
         Received_PhaseSelect(virtualClient);
     }
 }
Beispiel #23
0
 /// <summary>
 /// A client data instance is required on the client implementing AsyncTCPLib.AsyncVirtualClient
 /// It interacts as controller for authentication and proxy transmission
 /// </summary>
 /// <param name="owner"></param>
 internal ClientData(VirtualClient owner)
 {
     this.Owner = owner;
 }
Beispiel #24
0
        public override void Received(VirtualClient virtualClient)
        {
            UInt16 packetSize = (UInt16)(Size - Marshal.SizeOf <SLandListPacket>());

            byte[] packetBytes = virtualClient.DequeueReceivedData(packetSize);
        }
 public void ProcessAction(VirtualClient virtualClient)
 {
 }
Beispiel #26
0
 public override void Received(VirtualClient virtualClient)
 {
 }
Beispiel #27
0
        public override void Received(VirtualClient virtualClient)
        {
            CPongPacket packet = new CPongPacket();

            virtualClient.SendPacket(packet);
        }
Beispiel #28
0
 public ShopManager(VirtualClient virtualClient)
 {
     this.virtualClient     = virtualClient;
     timeoutTimer.Elapsed  += TimeoutTimer_Elapsed;
     timeoutTimer.AutoReset = false;
 }
Beispiel #29
0
 public abstract void Received(VirtualClient virtualClient);
Beispiel #30
0
 public override void Received(VirtualClient virtualClient)
 {
     virtualClient.LoginSuccessResult.Empire = this.Empire;
 }