result on my laptop for default script settings
(P4 2.66, 512mb ram)

200000
loaded in: 1.3158s


please tell me what you think of this? if you like it i can email it to you
(as a php file)

----------begin php code---------------
<?php

class honeyPot {
 //define word lengths
 var $umin;
 var $umax;
 var $dmin;
 var $dmax;
 //define address count
 var $addresses;
 var $userfordomain;
 var $emails;
 var $countrys;

 function honeyPot($usermin = 3, $usermax = 15, $addresses = 10,
$userfordomain = false, $domainmin = 3, $domainmax = 15){
  $this->umin = $usermin;
  $this->umax = $usermax;
  $this->addresses = $addresses;
  $this->userfordomain = $userfordomain;
  $this->dmin = $domainmin;
  $this->dmax = $domainmax;
  $this->countrys = array("","au","cz","andsoforth");
  $this->types =
array("com","co","org","gov","mil","id","tv","cc","andsoforth");
 }

 function createAddressArray(){
  $i=0;
  $addressarray = array();
  while($i<$this->addresses){
   $addressarray[] = $this->makeAddress();
   $i++;
  }
  return $addressarray;
 }
 function displayAddresses(){
  $i=0;
  $addressstring = "";
  while($i<$this->addresses){
   $addressstring .= $this->makeAddress() . "<br>";
   $i++;
  }
  echo $addressstring;
  return $addressstring;
 }
 function makeAddress(){
  $user = $this->createRandString();
  if($this->userfordomain == false){
   $domain = $this->createRandString("domain");
  }else{
   $domain = $user;
  }

  $address = $user . "@" . $domain . "." . $this->createType();
  $country = $this->createCountry();
  if($country != ""){
   $address .= "." . $country;
  }

  return $address;
 }

 function createRandString($type = "user"){
  srand((double) microtime() * 948625);
  if($type=="user"){
   $length = rand($this->umin, $this->umax);
  }else{
   $length = rand($this->dmin, $this->dmax);
  }
  $string = "";
  $numbersmin = 48;
  $numbersmax = 57;
  $lowercaselettersmin = 97;
  $lowercaselettersmax = 122;
  $whichset = 0;
  while($length >= 0){
   $set = rand(0,100);
   if($set < 5){
    $string .= "_";
   }elseif($set < 32){
    $string .= chr(rand($numbersmin, $numbersmax));
   }else{
    $string .= chr(rand($lowercaselettersmin, $lowercaselettersmax));
   }

   $length--;
  }

  return $string;
 }
 function createType(){
  srand ((double) microtime() * 845676);
  $tid = rand(0, count($this->types)-1);
  return $this->types[$tid];
 }
 function createCountry(){
  srand ((double) microtime() * 375797);
  $cid = rand(0, count($this->countrys)-1);
  return $this->countrys[$cid];
 }
}


$test = new honeyPot();
print_r($test->createAddressArray());
echo "<br><br>\n\n";
$test->displayAddresses()
?>
--------end php code----------

-- 
Luke


"Daniel Hahler" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Hello PHP-list,
>
> I'm building a script, that provides a honeypot of invalid email
> addresses for spambots.. for this I want to provide a macro for the
> templates that looks like %rand[x]-[y]%, where [x] and [y] are
> integers, that specify the length of the random script.
> My first thoughts were about the best parsing of the %rand..%-part,
> but now I came to a point, where I could also need suggestions on the
> random string generation..
> It considers very basic word generations and the only meaningful word
> I discovered was 'Java'.. *g
>
> For generation of a random string with length 1.000.000 it takes about
> 13 seconds on my xp 1600+.. that's quite a lot, imho, so suggestions
> are very welcome..
>
> the script goes here, ready to copy'n'paste:
>
> --------------------------------------------------------------
> list($low, $high) = explode(" ", microtime());
> $this->timerstart = $high + $low;
>
> function parserandstr($toparse){
>  $debug = 0;
>
>  $new = '';
>  $ch = array(
>     'punct' => array('.', '.', '.', '..', '!', '!!', '?!'),
>     'sep' => array(', ', ' - '),
>     'vocal' => array('a', 'e', 'i', 'o', 'u'),
>     'cons_low' => array('x', 'y', 'z'),
>     'cons_norm' => array('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k',
>                  'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w')
>  );
>  while ( ($pos = strpos($toparse, '%rand')) !== FALSE){
>   if ($debug) echo '<br><br>$pos: ' . $pos;
>   $new .= substr($toparse, 0, $pos);
>   if ($debug) echo '<br>$new: "' . $new . '"';
>
>   $toparse = substr($toparse, $pos + 5);
>   if ($debug) echo '<br>$toparse: "' . $toparse . '"';
>
>   $posclose = strpos($toparse, '%', 1);
>   if ($debug) echo '<br>$posclose: "' . $posclose . '"';
>   if ($posclose){
>    $rlength = substr($toparse, 0, $posclose);
>    if ($debug) echo '<br>$rlength: "' . $rlength . '"';
>
>    $possep = strpos($rlength, '-');
>    $minrlen = substr($rlength, 0, $possep);
>    $maxrlen = substr($rlength, $possep + 1);
>    if ($debug) echo '<br>$minrlen: "' . $minrlen . '"';
>    if ($debug) echo '<br>$maxrlen: "' . $maxrlen . '"';
>
>    $rlen = rand($minrlen, $maxrlen);
>
>    // generate random string
>    $randstr = ''; $inword = 0; $insentence = 0; $lastchar = '';
>    for($j = 0; $j < $rlen; $j++){
>       if ($inword > 3 && rand(0, 5) == 1) {  // punctuation chars
>        if (rand(0,5) > 0) $char = ' ';
>        else {
>         $char = $ch['punct'][rand(0, count($ch['punct'])-1)] . ' ';
>         $j += strlen($char)-1;
>         $insentence = 0;
>        }
>        $inword = 0;
>       }
>       else {
>        if (!$lastwasvocal && rand(0, 10) > 6) {  // vocals
>         $char = $ch['vocal'][rand(0, count($ch['vocal'])-1)];
>         $lastwasvocal = true;
>        } else {
>           do {
>            if (rand(0, 30) > 0)  // normal priority consonants
>             $char = $ch['cons_norm'][rand(0, count($ch['cons_norm'])-1)];
>            else $char = $ch['cons_low'][rand(0,
count($ch['cons_low'])-1)];
>           } while ($char == $lastchar);
>           $lastwasvocal = false;
>        }
>        $inword++;
>        $insentence++;
>     }
>
>     if ($insentence == 1 || ($inword == 1 && rand(0, 30) < 10))
>      $randstr .= strtoupper($char);
>     else $randstr .= $char;
>     $lastchar = $char;
>    }
>
>    $new .= $randstr;
>    if ($debug) echo '<br>$new: ' . $new;
>
>    $toparse = substr($toparse, $posclose + 1);
>    if ($debug) echo '<br>$toparse: "' . $toparse . '"';
>   } else $new .= '%rand';
>  }
>  return $new . $toparse;
> }
>
> function pre_dump($var, $desc=''){
>  echo '<pre>::'.$desc.'::<br>'; var_dump($var); echo '</pre>';
> }
>
> #$s = parserandstr('random string comes here: '
>     . '%rand10-1000%. this is a fake %rand and should not be killed..');
> $s = parserandstr('%rand200000-200000%');
> echo '<br><br>' . $s;
> echo '<br><br>' . strlen($s);
>
> list($low, $high) = explode(" ", microtime());
> $t    = $high + $low;
> printf("<br>loaded in: %.4fs", $t - $this->timerstart);
> ------------------------------------------------------------
>
>
> -- 
> shinE!
> http://www.thequod.de ICQ#152282665
> PGP 8.0 key: http://thequod.de/danielhahler.asc

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to