using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.Text;
using System.Security.Cryptography;
namespace SaTaNaDcMaSS
{
/// <summary>
/// Summary description for MassMessage.
/// </summary>
public class MassMessage
{
Socket s;
private string hub;
private string nome;
private int porta;
private System.Windows.Forms.TextBox mess;
private System.Windows.Forms.TextBox mess1;
private System.Windows.Forms.CheckBox c1;
private System.Windows.Forms.CheckBox c2;
private IPHostEntry host;
private Socket socket;
private string lock1epk;
private IPEndPoint indirizzoeporta;
private Random rand
= new Random
();
private System.Windows.Forms.RichTextBox boh;
private string[] userlist;
private string[] oplist;
private ArrayList array
= new ArrayList
();
private string masslist;
private string[] masslist2;
byte[] buffer;
private System.Windows.Forms.RichTextBox tempo;
private System.Windows.Forms.Timer timer;
private bool statusreceive = false;
public MassMessage(string hub,int porta,System.Windows.Forms.TextBox mess,System.Windows.Forms.CheckBox c1,System.Windows.Forms.CheckBox c2,System.Windows.Forms.RichTextBox boh,System.Windows.Forms.RichTextBox tempo,System.Windows.Forms.Timer timer)
{
this.hub=hub;
this.porta=porta;
this.mess=mess;
this.c1=c1;
this.c2=c2;
this.boh=boh;
this.tempo=tempo;
this.timer=timer;
}
public void Send(string data)
{
if(data.Length>0)
{
if(data[data.Length-1]!='|')
data+="|";
s.Send(Encoding.Default.GetBytes(data),0,data.Length,SocketFlags.None);
}
}
public void RunMe()
{
statusreceive=false;
nome = GeneraNickCasuali();
host = Dns.Resolve(hub);
foreach(IPAddress ip in host.AddressList)
{
indirizzoeporta
= new IPEndPoint
(ip, porta
);
s
= new Socket
(AddressFamily.
InterNetwork, SocketType.
Stream, ProtocolType.
Tcp);
s.Connect(indirizzoeporta);
}
byte[] buffer
= new byte[1024
*1024
];
s.Receive(buffer);
lock1epk=Encoding.Default.GetString(buffer);
string lokkazzo2 = Lokkazzo();
byte[] key= ConvertingLock.getKey(Encoding.Default.GetBytes(lokkazzo2));
string keystring = Encoding.Default.GetString(key);
byte[] msg = Encoding.Default.GetBytes("$Key "+keystring+"|$ValidateNick "+nome+"|");
s.Send(msg);
s.Receive(buffer);
byte[] msg2 = Encoding.Default.GetBytes("$Version 1,0091|$GetNickList|$MyINFO $ALL "+nome+" §å†åÑå Т M姧 1.0 <§å†åÑå Т M姧 1.0 V:1.0,M:A,H:2/0/2,S:4>$ $DSL$boh$"+1000000000+"$|");
s.Send(msg2);
while(statusreceive==false)
{
s.Receive(buffer);
char[] sep = Encoding.Default.GetChars(Encoding.Default.GetBytes("|"));
char[] sep2 = Encoding.Default.GetChars(Encoding.Default.GetBytes("$$"));
string buf = Encoding.Default.GetString(buffer);
string[] prova = buf.Split(sep);
Ricevi(prova);
}
}
private string GeneraNickCasuali()
{
string nome = "";
int max = rand.Next(4,8);
int i;
for(i=0;i<max;i++)
{
int g = rand.Next(97,122);
nome += (char)g;
}
return nome;
}
private string Lokkazzo()
{
char[] sep = Encoding.Default.GetChars(Encoding.Default.GetBytes("|"));
string[] lock2 = lock1epk.Split(sep);
string lokkazzo2="";
foreach(string s in lock2)
{
if(s.Substring(0,5)=="$Lock")
{
string s1 = s.Replace("$Lock ","");
char[] sep2 = Encoding.Default.GetChars(Encoding.Default.GetBytes(" "));
string[] s2 = s1.Split(sep2);
foreach(string l in s2)
{
if(l.Substring(0,2)!="Pk")
{
lokkazzo2=l;
}
}
}
}
return lokkazzo2;
}
public void MandaMessaggi()
{
int lol=0;
foreach(string b in masslist2)
{
if(b!="")
{
byte[] msg3 = Encoding.Default.GetBytes("$To: "+b+" From: "+nome+" $<"+nome+"> "+lol+" "+mess.Text+"|");
s.Send(msg3);
lol=lol+1;
boh.Text+="Mandato a: " + b + "\n";
}
}
byte[] msg4 = Encoding.Default.GetBytes("$Quit "+nome+"|");
s.Send(msg4);
s.Close();
double temposec = Convert.ToDouble(tempo.Text)/100;
timer.Stop();
boh.Text+="Il messaggio " + mess.Text + " è stato mandato a " + Convert.ToString(lol) + " users in "+Convert.ToString(temposec)+" secondi";
statusreceive = true;
return;
}
public void Ricevi(string[] prova)
{
char[] sep2 = Encoding.Default.GetChars(Encoding.Default.GetBytes("$$"));
foreach(string a in prova)
{
if(a!="")
{
if(a.Substring(0,1)=="<")
{
boh.Text+=a;
}
if(a.Substring(0,9)=="$NickList")
{
string nicklist = a.Replace("$NickList ","");
userlist = nicklist.Split(sep2);
foreach(string lmao in userlist)
{
if(lmao!="")
{
{
array.Add(lmao+" ");
}
}
}
}
if(a.Substring(0,7)=="$OpList")
{
string oplist1 = a.Replace("$OpList ","");
oplist = oplist1.Split(sep2);
foreach(string loll in oplist)
{
if(loll!="")
{
{
array.Remove(loll+" ");
}
{
array.Add(loll+" ");
}
}
}
GetArrayList();
return;
}
}
}
}
public void GetArrayList()
{
char[] sep = Encoding.Default.GetChars(Encoding.Default.GetBytes(" "));
System.Collections.IEnumerator myEnumerator = array.GetEnumerator();
while (myEnumerator.MoveNext())
{
masslist+=myEnumerator.Current.ToString();
}
masslist2 = masslist.Split(sep);
MandaMessaggi();
return;
}
}
}