using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.IO; using FS_CLIENT.Networking.Proxy; using System.Diagnostics; using System.Windows.Forms; using System.Threading; namespace FS_CLIENT.Networking { class Handle { public static void Packet(byte[] buffer, Socket client) { Packet p = new Packet(buffer); FileCheck fs = new FileCheck(); Headers header = (Headers)p.ReadUInt16(2); switch (header) { case Headers.FileHash: { fs.LoadFiles(); string HashFiles = p.ReadString(); string[] ServerFiles = HashFiles.Split(',').ToArray(); string[] ClientFiles = fs.GetHashedFileArray(); string[] UnhashedFiles = fs.GetUnhashedFileArray(); bool IsOK = false; int len = ServerFiles.Length; for (int i = 0; i < len; i++) { if (ServerFiles[i] != ClientFiles[i]) { buffer = new byte[UnhashedFiles[i].Length]; p = new Packet((ushort)buffer.Length, 2); p.WriteString(UnhashedFiles[i], 4); client.Send(p.GetBytes()); IsOK = false; MessageBox.Show("Manipulated file: " + UnhashedFiles[i], "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); Environment.Exit(0); break; } else { IsOK = true; } } if (IsOK) { buffer = new byte[0]; p = new Packet((ushort)buffer.Length, 3); client.Send(p.GetBytes()); GameSocket gs = new GameSocket(); gs.Start(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "Fiesta.exe"; startInfo.Arguments = @"-osk_server 127.0.0.1 -osk_token " + Program.Token + " -osk_store http://google.com"; Process.Start(startInfo); } } break; case Headers.FileList: { p = new Packet(buffer); string FileStream = p.ReadString(); fs.WriteToStream(FileStream); } break; } } } }