Reverse Engineering PRSTORM

r-webb-k

BANNED
Joined
Dec 19, 2006
Messages
373
Reaction score
439
prstorm seems to be very popular but its outdated so has anyone ever thought of reverse engineering this program and make it better and more effective??


anyways juz my 2 cent

:D
 
well yea thats wht i meant
 
prstorm seems to be very popular but its outdated so has anyone ever thought of reverse engineering this program and make it better and more effective??


anyways juz my 2 cent

:D

improve? like what needs to be improved?
 
I wrote something in perl that does what prstorm does.. I have a list of 1.5M urls and 8000 proxies.. I run about 300 'forked' processes.. :D
 
So the obvious next question is.....
can "we" get blessed with a copy of your script????
Hmmmmm?????
 
HMMMMM?!??!

It doesn't work in windoze..
I don't want to answer stupid questions.

If you agree to those terms, I'll post it up.
 
This doesn't support proxies.. I have to find the one where I added proxy support..
I have another version that uses whatever interfaces are configured, useful if you have a machine with more than 1 IP :D
It requires Parallel::Forkmanager..

Code:
#!/usr/bin/perl
# ref spoof
# usage: perl refspoof.pl file_with_urls 
# format for urls:  www.whatever.com
# no http://

use IO::Socket qw(:DEFAULT :crlf);
use Parallel::ForkManager;

my $self = {}; bless $self;
my $pm = new Parallel::ForkManager();

our %config;

%config= (
	threads => 200,				# max threads
	referer => 'http://www.YOURURL.com', # uhhh, your url? :D
	debug => '0', #set to 1 to print server response
	);
	
$pm = new Parallel::ForkManager($config{threads});
main();



sub main {
				open(FH,"$ARGV[0]");
				while(<FH>) {
								s/\n//g;
								$url = $_;
								my $pid = $pm->start and next;
								$self->post_http($url);
								$pm->finish;			
								$pm->wait_all_children;
			}
		
	}


sub post_http {
	my($self,$server) = @_;
	
	my $remote = IO::Socket::INET->new(
        Proto    => "tcp",
        PeerAddr => $server,
        PeerPort => "http(80)",
        Timeout => 5
         );

    if ( $remote )
    {
        $remote->autoflush(1); # No buffering
				print "Connected: $server\n";
        print $remote "GET / HTTP/1.1$CRLF";
        print $remote "Accept: */*$CRLF";
        print $remote "Accept-Language: en-us$CRLF";
        print $remote "Accept-Encoding: gzip, deflate$CRLF";
        print $remote "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98)$CRLF";
        print $remote "Referer: $config{referer}$CRLF";
        print $remote "Host: $server$CRLF";
        print $remote "Connection: Close$CRLF$CRLF";
				
        # Read the response
        $sockResp = "";
        while ( <$remote> ) {
            $sockResp = $sockResp . $_;
        }
				print "$sockResp" if ($config{debug} == 1 );
        close $remote; # Close the socket
    }
    else
    {
  		print "Cannot connect to $server\n";
			open(ERR,">>ERROR");
			print ERR "$server\n";
			close(ERR);
    }
    return();
}
 
very nice program :)

Runs great, but seems get a failed connection on most links. I would really love to see the proxy version and your URL list if you don't mind :)
 
You can adjust the timeout, set it higher than 5 seconds. Also try lowering the amount of processes and make sure your name server can handle all the requests...
 
Back
Top