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:
    29
    Likes Received:
    38
    improve? like what needs to be improved?
     
  4. bhnoobz

    bhnoobz BANNED BANNED

    Joined:
    Jul 26, 2008
    Messages:
    394
    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:
    394
    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:
    394
    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:
    394
    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...