Created
June 27, 2018 08:38
-
-
Save oki/039a523fd80bac26ff65cc8f14fa0a1f to your computer and use it in GitHub Desktop.
This file contains hidden or 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 -w | |
| # Skrypt pisany na ostatnich wakacjach. Miał on na celu wygrywanie nagród | |
| # w internetowym konkursie jednej z tytoniowych firm. Konkurs polegał na | |
| # wpisaniu kodu z paczki papierosów, wygrywała ta osoba, która wpisała kod | |
| # jako pierwsza w danej minucie. Skrypt po odczytaniu kodu z "konfiga" | |
| # robił to automatycznie, a że skrypt działający na serwerze www | |
| # "chwalił się czasem" z którego korzysta, mozna bylo przewidzieć w której | |
| # minucie kliknąć. Statystki działania skryptu: na 36 kodów z paczek króre | |
| # posiadałem aż 17 zostało trafionych, 17 drobnych nagród typu koszulki, | |
| # zapalniczki, podstawki pod komórkę, okulary. Do wygrywania takich tez | |
| # nagród skrypt byl uzywany, poniewaz przy bardziej wartosciowych obciazenie | |
| # serwera bylo zbyt duze a klikniecie jako pierwszy w minucie zalezalo | |
| # od szczescia ;) | |
| use LWP; | |
| use HTTP::Request::Common; | |
| use Data::Dumper; | |
| use locale; | |
| use POSIX; | |
| use Time::HiRes 'time'; | |
| use locale; | |
| use strict; | |
| $|++; | |
| my @Ua=( 'Microsoft Internet Explorer','Mozilla/4.0 (Compatible; MyWay)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts)', 'Mozilla/4.0 (compatible; MSIE 5.01; Hotbar 4.4.2.0)', 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)',); | |
| my $Browser = LWP::UserAgent->new(agent => $Ua[int(rand(@Ua))],timeout => 2); | |
| my $Url = "http://www.cominute.pl/"; | |
| my $CzasSerwer = ""; | |
| my $CzasSerwerOld = ""; | |
| #my $Config = "rafal.cfg"; | |
| #my $Config = "rafal_ok.cfg"; | |
| #my $Config = "maniek.cfg"; | |
| my $Config = "ok1.cfg"; | |
| # wczytujemy konfig, fomat pliku: w jednej lini id i kod odzielone ':' | |
| open(C,$Config) || die "\$Config: nie moge otworzyc..\n"; | |
| my($Id,$Kod)=split(/:/,<C>);chomp($Kod);close(C); | |
| print "Id: [1m#$Id# [0m\nKod: [1m#$Kod# [0m\n"; | |
| my $WyslijKod = new HTTP::Request POST => 'http://www.cominute.pl/Default.aspx'; | |
| $WyslijKod->content_type('application/x-www-form-urlencoded'); | |
| # Glowna petla.. | |
| while(1) { | |
| my$Res;my$Roznica="";my$T0;my$T1; | |
| for( my $x = 0; $x < 10; $x++ ) { # proboje 10 razy pobrac strone.. | |
| $T0 = time; | |
| $Res = $Browser->request( GET $Url ); | |
| $T1=time;$Roznica=sprintf("%2.4f",$T1-$T0);$T0=time; | |
| last if( $Res->is_success ); | |
| } | |
| if($Res->headers->{date} =~ /\w+, \d+ \w+ \d+ (\d+):(\d+):(\d+) GMT/i ) { | |
| $CzasSerwer = { Hour => $1, Min => $2, Sec => $3 }; | |
| } else { return 0; } | |
| my $Body = $Res->content || return 0; | |
| my $Nagroda; my $Czas; my $Stat; | |
| # po pobraniu strony luskamy co potrzebne.. | |
| if($Body=~/nextptit" \w+="\d+" \w+="\d+" \w+="\w+">(\w+)<\/td>/i){$Nagroda=$1;}if($Body=~/nextptm" \w+="\d+" \w+="\d+" \w+="\w+">(.*)<\/td>/i){$Czas=$1;}if($Body=~/"__VIEWSTATE" \w+="(.*)" \/>/i){$Stat=$1;} | |
| $T1 = time; my $Roznica2=sprintf("%2.4f",$T1-$T0);$Roznica+=$Roznica2; | |
| $WyslijKod->content("__VIEWSTATE=${Stat}&Mcodeform1:txtCID=${Id}&Mcodeform1:txtMCODE=${Kod}&Mcodeform1:btnAkceptuj=Akceptuj"); | |
| if ( $CzasSerwerOld && $CzasSerwer->{Hour} eq $CzasSerwerOld->{Hour} && | |
| $CzasSerwer->{Min} eq $CzasSerwerOld->{Min} ) { # Dodajemy roznice.. | |
| $CzasSerwer->{Sec} = $CzasSerwerOld->{Sec} + $Roznica; | |
| } | |
| if(sprintf("%2d",$CzasSerwer->{Sec}) % 2 == 0){print" [1;34m";} | |
| else{print" [1;33m";} | |
| printf("[*] (%02d:%02d:%02.3f) %-10s o %5s\n", | |
| $CzasSerwer->{Hour}, $CzasSerwer->{Min}, $CzasSerwer->{Sec}, | |
| $Nagroda, $Czas); | |
| if ( $CzasSerwer->{Sec} >= 59.3 ) { | |
| #if ( $CzasSerwer->{Sec} <= 0.2 ) { | |
| print "[*] Go!!!\n"; | |
| my $Res = $Browser->request($WyslijKod); | |
| open(W,">"."log_www.html") || die "$!\n"; | |
| open(D,">"."log_dump.html") || die "$!\n"; | |
| print D Dumper ( $Res ); | |
| print W $Res->content; | |
| close(D);close(W); | |
| die; | |
| } | |
| print " [0m"; | |
| $CzasSerwerOld = $CzasSerwer; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment