1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Reverse Engineering PRSTORM

Discussion in 'Black Hat SEO Tools' started by r-webb-k, Aug 20, 2008.

  1. r-webb-k

    r-webb-k BANNED BANNED

    Joined:
    Dec 19, 2006
    Messages:
    373
    Likes Received:
    407
    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
     
  2. r-webb-k

    r-webb-k BANNED BANNED

    Joined:
    Dec 19, 2006
    Messages:
    373
    Likes Received:
    407
    well yea thats wht i meant
     
  3. harneu

    harneu Newbie

    Joined:
    Mar 17, 2007
    Messages:
    30
    Likes Received:
    38
    improve? like what needs to be improved?
     
  4. bhnoobz

    bhnoobz BANNED BANNED

    Joined:
    Jul 26, 2008
    Messages:
    395
    Likes Received:
    107
    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
     
  5. unclaimed3

    unclaimed3 Newbie

    Joined:
    Feb 20, 2008
    Messages:
    27
    Likes Received:
    89
    So the obvious next question is.....
    can "we" get blessed with a copy of your script????
    Hmmmmm?????
     
  6. bhnoobz

    bhnoobz BANNED BANNED

    Joined:
    Jul 26, 2008
    Messages:
    395
    Likes Received:
    107
    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.
     
  7. elips0id

    elips0id Newbie

    Joined:
    Apr 12, 2007
    Messages:
    1
    Likes Received:
    0
    I agree :D
     
  8. bhnoobz

    bhnoobz BANNED BANNED

    Joined:
    Jul 26, 2008
    Messages:
    395
    Likes Received:
    107
    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();
    }
    
     
    • Thanks Thanks x 3
  9. wes2000

    wes2000 Newbie

    Joined:
    Dec 16, 2007
    Messages:
    29
    Likes Received:
    3
    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 :)
     
  10. bhnoobz

    bhnoobz BANNED BANNED

    Joined:
    Jul 26, 2008
    Messages:
    395
    Likes Received:
    107
    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...