Es algo inestable les recomiendo la version en Perl.
Una imagen :
Código
// KingSpam 0.4 // (C) Doddy Hackman 2015 unit spam; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls, IdContext, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, PerlRegEx, Vcl.Menus, ShellApi; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; GroupBox1: TGroupBox; Label1: TLabel; host: TEdit; Label2: TLabel; port: TEdit; Label3: TLabel; nombre: TEdit; Label4: TLabel; canal: TEdit; Label5: TLabel; spam: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; TabSheet2: TTabSheet; GroupBox2: TGroupBox; GroupBox3: TGroupBox; canales: TListBox; users: TListBox; TabSheet3: TTabSheet; GroupBox4: TGroupBox; GroupBox5: TGroupBox; lista_canales: TListBox; console1: TMemo; Label6: TLabel; canal_agregar: TEdit; Button4: TButton; Button5: TButton; TabSheet5: TTabSheet; GroupBox8: TGroupBox; console2: TMemo; IdIRC1: TIdIRC; Button9: TButton; StatusBar1: TStatusBar; GroupBox6: TGroupBox; canal_spam_usuarios: TEdit; TabSheet4: TTabSheet; GroupBox7: TGroupBox; Image2: TImage; Label7: TLabel; PopupMenu1: TPopupMenu; L1: TMenuItem; R1: TMenuItem; OpenDialog1: TOpenDialog; file_spam: TListBox; spam_usuarios: TTimer; Button11: TButton; Button6: TButton; otrospamfile: TListBox; Image3: TImage; procedure Button2Click(Sender: TObject); procedure IdIRC1Raw(ASender: TIdContext; AIn: Boolean; const AMessage: string); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure L1Click(Sender: TObject); procedure R1Click(Sender: TObject); procedure spam_usuariosTimer(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; buscando_usuarios: string; buscando_canales: string; control_guardar_canales: string; control_guardar_users: string; implementation {$R *.dfm} // Functions procedure savefile(filename, texto: string); var ar: TextFile; begin AssignFile(ar, filename); FileMode := fmOpenWrite; if FileExists(filename) then Append(ar) else Rewrite(ar); Write(ar, texto + sLineBreak); CloseFile(ar); end; procedure TForm1.Button11Click(Sender: TObject); begin StatusBar1.Panels[0].Text := '[+] Finished'; StatusBar1.Update; IdIRC1.Disconnect; spam_usuarios.Enabled := false; end; procedure TForm1.Button1Click(Sender: TObject); var i: integer; contenido: TStringList; stream: TFileStream; begin file_spam.Clear; if OpenDialog1.Execute then begin spam.Text := OpenDialog1.filename; contenido := TStringList.Create; stream := TFileStream.Create((OpenDialog1.filename), fmShareDenyNone); contenido.LoadFromStream(stream); for i := 0 to contenido.Count - 1 do begin file_spam.Items.Add(contenido[i]); end; end; end; procedure TForm1.Button2Click(Sender: TObject); var seleccion: integer; begin canales.Items.Clear; buscando_canales := 'yes'; seleccion := MessageDlg('Save Channels', mtInformation, mbYesNo, 0); if seleccion = mrYes then begin control_guardar_canales := 'yes'; end; StatusBar1.Panels[0].Text := '[+] Searching channels ...'; StatusBar1.Update; // IdIRC1.Disconnect; IdIRC1.Nickname := nombre.Text; IdIRC1.AltNickname := nombre.Text + '123'; IdIRC1.Username := nombre.Text; IdIRC1.RealName := nombre.Text; IdIRC1.Password := ''; IdIRC1.host := host.Text; try begin IdIRC1.Connect; IdIRC1.Raw('LIST'); end; except begin ShowMessage('Error connecting'); end; end; if (FileExists(GetCurrentDir + '/logs/' + host.Text + '_canales.txt')) then begin ShellExecute(Handle, 'open', Pchar(GetCurrentDir + '/logs/' + host.Text + '_canales.txt'), nil, nil, SW_SHOWNORMAL); end; end; procedure TForm1.Button3Click(Sender: TObject); var seleccion: integer; begin users.Items.Clear; buscando_usuarios := 'yes'; seleccion := MessageDlg('Save users', mtInformation, mbYesNo, 0); if seleccion = mrYes then begin control_guardar_users := 'yes'; end; StatusBar1.Panels[0].Text := '[+] Searching users ...'; StatusBar1.Update; // IdIRC1.Disconnect; IdIRC1.Nickname := nombre.Text; IdIRC1.AltNickname := nombre.Text + '123'; IdIRC1.Username := nombre.Text; IdIRC1.RealName := nombre.Text; IdIRC1.Password := ''; IdIRC1.host := host.Text; try begin IdIRC1.Connect; IdIRC1.Join(canal.Text); end; except begin ShowMessage('Error connecting'); end; end; if (FileExists(GetCurrentDir + '/logs/' + canal.Text + '_usuarios.txt')) then begin ShellExecute(Handle, 'open', Pchar(GetCurrentDir + '/logs/' + canal.Text + '_usuarios.txt'), nil, nil, SW_SHOWNORMAL); end; end; procedure TForm1.Button4Click(Sender: TObject); begin lista_canales.Items.Add(canal_agregar.Text); end; procedure TForm1.Button5Click(Sender: TObject); var i: integer; canal_z: string; begin StatusBar1.Panels[0].Text := '[+] Spamming channel ...'; StatusBar1.Update; console1.Clear; try begin IdIRC1.Nickname := nombre.Text; IdIRC1.AltNickname := nombre.Text + '123'; IdIRC1.Username := nombre.Text; IdIRC1.RealName := nombre.Text; IdIRC1.Password := ''; IdIRC1.host := host.Text; IdIRC1.Connect; for i := 0 to lista_canales.Count - 1 do begin canal_z := lista_canales.Items[i]; IdIRC1.Join(canal_z); console1.Lines.Add('[+] Spam in channel : ' + canal_z); IdIRC1.Say(canal_z, file_spam.Items[Random(file_spam.Count - 1) + 0]); Sleep(2000); IdIRC1.Part(canal_z); Sleep(2000); end; end; except ShowMessage('Error connecting'); end; IdIRC1.Disconnect; StatusBar1.Panels[0].Text := '[+] Finished'; StatusBar1.Update; end; procedure TForm1.Button6Click(Sender: TObject); begin StatusBar1.Panels[0].Text := '[+] Spamming users ...'; StatusBar1.Update; IdIRC1.Nickname := nombre.Text; IdIRC1.AltNickname := nombre.Text + '123'; IdIRC1.Username := nombre.Text; IdIRC1.RealName := nombre.Text; IdIRC1.Password := ''; IdIRC1.host := host.Text; try begin IdIRC1.Connect; IdIRC1.Join(canal_spam_usuarios.Text); spam_usuarios.Interval := 10000; spam_usuarios.Enabled := true; end; except begin ShowMessage('Error connecting'); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin if not DirectoryExists('logs') then begin CreateDir('logs'); end; OpenDialog1.InitialDir := GetCurrentDir; end; procedure TForm1.IdIRC1Raw(ASender: TIdContext; AIn: Boolean; const AMessage: string); var code: string; regex: TPerlRegEx; otroregex: TPerlRegEx; canales_encontrados: string; control: TPerlRegEx; otrocontrol: TPerlRegEx; i: integer; i2: integer; renicks: string; listanow: TStringList; arraynow: array of String; begin code := AMessage; regex := TPerlRegEx.Create(); otroregex := TPerlRegEx.Create(); // console1.Lines.Add(code); regex.regex := '322 (.*?) (.*?) (.*?) :'; regex.Subject := code; if regex.Match then begin canales_encontrados := regex.Groups[2]; canales.Items.Add(canales_encontrados); if (control_guardar_canales = 'yes') then begin savefile('logs/' + host.Text + '_canales.txt', canales_encontrados); end; end; otroregex.regex := '353 (.*) = #(.*) :(.*)'; otroregex.Subject := code; if otroregex.Match then begin renicks := otroregex.Groups[3]; renicks := StringReplace(renicks, nombre.Text, '', []); listanow := TStringList.Create; listanow.Delimiter := ' '; listanow.DelimitedText := renicks; for i2 := 0 to listanow.Count - 1 do begin users.Items.Add(listanow[i2]); if (control_guardar_users = 'yes') then begin savefile('logs/' + canal.Text + '_usuarios.txt', listanow[i2]); end; end; end; control := TPerlRegEx.Create(); control.regex := 'End of /LIST'; control.Subject := code; if control.Match then begin if (buscando_canales = 'yes') then begin ShowMessage('Channels Loaded'); StatusBar1.Panels[0].Text := '[+] Channels Found'; StatusBar1.Update; regex.Free; IdIRC1.Disconnect; IdIRC1.Destroy; buscando_canales := 'no'; end; end; otrocontrol := TPerlRegEx.Create(); otrocontrol.regex := 'End of /NAMES'; otrocontrol.Subject := code; if otrocontrol.Match then begin if (buscando_usuarios = 'yes') then begin ShowMessage('Users Loaded'); StatusBar1.Panels[0].Text := '[+] Users Found'; StatusBar1.Update; otrocontrol.Free; IdIRC1.Part(canal.Text); IdIRC1.Disconnect; IdIRC1.Destroy(); buscando_usuarios := 'no'; end; end; end; procedure TForm1.L1Click(Sender: TObject); var i: integer; contenido: TStringList; stream: TFileStream; begin if OpenDialog1.Execute then begin contenido := TStringList.Create; stream := TFileStream.Create((OpenDialog1.filename), fmShareDenyNone); contenido.LoadFromStream(stream); for i := 0 to contenido.Count - 1 do begin lista_canales.Items.Add(contenido[i]); end; end; end; procedure TForm1.R1Click(Sender: TObject); begin lista_canales.Clear; end; procedure TForm1.spam_usuariosTimer(Sender: TObject); var i: integer; begin for i := 0 to users.Count - 1 do begin StatusBar1.Panels[0].Text := '[+] Spamming to ' + users.Items[i]; StatusBar1.Update; console2.Lines.Add('[+] Spamming to ' + users.Items[i]); IdIRC1.Say(users.Items[i], file_spam.Items[Random(file_spam.Count - 1) + 0]); end; end; end. // The End ?
Si lo quieren bajar lo pueden hacer de aca