Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   FTP Accounts Parser (https://forum.antichat.xyz/showthread.php?t=130313)

[QwyZ] 18.07.2009 11:30

FTP Accounts Parser
 
FTP Account Parser

Дарова всем.Вот скачал тут из раздела халява сборник фтп сервов и мне пришла идея написать маленкий парсер.Маленький да удаленький.Значит осн.возможности:
1)ищет красивенкие домены типа blabla.com а не всякие типа blabla.narod.ru
2)можно поставить фильтр длины домена
3)можно также поискать какое то слово в доменах
4)можно также искать во всех субдоменах,не только в "красивенких"
5)можно сохранить все в файл на сервере
6)выделяет домен одним цветом,акк другим + искомую фразу тосже выделяет
7)делает удобные линки на фтп
8)более подробный мануальчик в скрипте


[+] дабавил по вашим просьбам валидатор,теперь,при установке флага valid на 1 (&valid=1),он будет проверять каждый server. Oфф сервера несохраняются,а в онлайн логе это выводится красным квадратом слева.очень удобно.
[+] теперь также при режиме валидатора будет показано все содержимое сервака.(javascript:alert)
[+] добавил наконец нормальный интерфейс.
[+] показывает справа все логи,отпарсенные ранее.
[+]в конце парсинга выдает также доменные зоны первого уровня,которые встречались.


Screeshot:
http://qwyz.freehostia.com/screen.png
_____________________________________
http://qwyz.freehostia.com/FTP_Parser.zip
_____________________________________

mailbrush 18.07.2009 14:00

ТС, зачем темы дублировать? http://forum.antichat.ru/thread130318.html

Я пост свой тоже сюда скопирую, даже добавлю кое-что...

1. Есть такие функции - isset, error_reporting, ты про них не знаешь?
2. Никогда не пробовал делать код читабелным, не? Читабельный:
PHP код:

<html><body bgcolor=black>
<style>
a
{
text-decoration:none;
}
</style><font color=dcdcdc size=-1 face=verdana>FTP Parser 1.0 By [QwyZ] (for antichat.ru and seclab.ru)<br>
<br>
Variables: www.your.host.com/parser.php?<font color=orange>z</font>=com&amp;<font color=orange>m</font>=14&amp;<font color=orange>base</font>=ftps.txt&amp;<font color=orange>all</font>=0&amp;<font color=orange>save</font>=yes&amp;<font color=orange>word</font>=freehostia.com<br><br>
$z = domain zone (ex. &z=com),for all zones use * (&z=*)<br>
$m = maxlength of domain name (ex. &m=14),for all domains use * (&m=*)<br>
$base = ftp database (ex. &base=file.txt),bases must to be in "/bases" folder<br>
$all = searching at subdomains too (ex. &all=1,&all=0)<br>
$save = saving/not saving results to "/queries" folder (ex. &save=yes,&save=no)<br>
$word = search word (ex. &word=freehostia.com)<br><font color=blue>___________________________________________________________________</font><br><br>
<?php

//vars
$zone $_GET['z'];
$maxl $_GET['m'];
$i $_GET['base'];
$all $_GET['all'];
$save $_GET['save'];
$sw $_GET['word'];
//vars

if ($save == "yes")
{
    
$saveTo fopen("./queries/" $zone "." $maxl "." $i "." $all "." .
        
$sw ".txt""w+");
    
fclose($saveTo);
}
function 
check_ftps($i$zone$maxl$all$save$sw)
{
    
$current_base file("./bases/" $i);
    
$k 0;
    for (
$k 0$k count($current_base); $k++)
    {
        
$current_ftp $current_base[$k];
        if (
substr_count($current_ftp"@") == 1)
        {
            
$current_ftp explode("@"$current_ftp);
            
$current_ftp $current_ftp[1];
            if ((
substr_count($current_ftp".") == 1) || ($all == "1"))
            {
                if ((
strlen($current_ftp) <= $maxl) || ($maxl == "*"))
                {
                    if ((
strstr($current_ftp$sw)) || ($sw == "*"))
                    {
                        
$suba explode("."$current_ftp);
                        
$suba $suba[count($suba) - 1];
                        
$suba substr($suba0, (strlen($suba) - 2));
                        if ((
$suba == $zone) || ($zone == "*"))
                        {
                            if (
substr($current_base[$k], 06) == "ftp://")
                            {
                            } else
                            {
                                
$current_base[$k] = "ftp://" $current_base[$k];
                            }
                            
$account explode("@"$current_base[$k]);
                            
$lp $account[0] . "@";
                            
$button substr($account[1], 0strlen($account[1]) - 2);
                            
$dom "<font color=orange>" $account[1] . "</font><br>";
                            
$dom str_replace($sw"<b><font color=yellow>" $sw "</font></b>"$dom);
                            echo (
"<input type=button value=\"Open\" onclick='location.href=\"" $lp $button .
                                
"\"'>&nbsp;&nbsp;" $lp $dom);
                            if (
$save == "yes")
                            {
                                
$add fopen("./queries/" $zone "." $maxl "." $i "." $all "." .
                                    
$sw ".txt""a+");
                                
fputs($add$current_base[$k]);
                                
fclose($add);
                            }
                        }
                    }
                }
            }
        }
    }
}

//call function
check_ftps($i$zone$maxl$all$save$sw);
//call function


?></font>
</body>
</html>

Нечитабельный (твой):
PHP код:

<html><body bgcolor=black>
<style>
a
{
text-decoration:none;
}
</style><font color=dcdcdc size=-1 face=verdana>FTP Parser 1.0 By [QwyZ] (for antichat.ru and seclab.ru)<br>
<br>
Variables: www.your.host.com/parser.php?<font color=orange>z</font>=com&amp;<font color=orange>m</font>=14&amp;<font color=orange>base</font>=ftps.txt&amp;<font color=orange>all</font>=0&amp;<font color=orange>save</font>=yes&amp;<font color=orange>word</font>=freehostia.com<br><br>
$z = domain zone (ex. &z=com),for all zones use * (&z=*)<br>
$m = maxlength of domain name (ex. &m=14),for all domains use * (&m=*)<br>
$base = ftp database (ex. &base=file.txt),bases must to be in "/bases" folder<br>
$all = searching at subdomains too (ex. &all=1,&all=0)<br>
$save = saving/not saving results to "/queries" folder (ex. &save=yes,&save=no)<br>
$word = search word (ex. &word=freehostia.com)<br><font color=blue>___________________________________________________________________</font><br><br>
<?php
//vars
$zone=$_GET['z'];
$maxl=$_GET['m'];
$i=$_GET['base'];
$all=$_GET['all'];
$save=$_GET['save'];
$sw=$_GET['word'];
//vars

if ($save=="yes"){
$saveTo=fopen("./queries/" $zone "." $maxl "." $i "." $all "." $sw ".txt","w+");
fclose($saveTo);}
function 
check_ftps($i,$zone,$maxl,$all,$save,$sw)
{
 
$current_base=file("./bases/" $i);
 
$k=0;
 for(
$k=0;$k<count($current_base);$k++)
 {
  
$current_ftp=$current_base[$k];
  if (
substr_count($current_ftp,"@")==1)
  {
  
$current_ftp=explode("@",$current_ftp);
  
$current_ftp=$current_ftp[1];
  if ((
substr_count($current_ftp,".")==1) || ($all=="1"))
  {
  if ((
strlen($current_ftp)<=$maxl) || ($maxl=="*"))
  {
  if ((
strstr($current_ftp,$sw)) || ($sw=="*")){
  
$suba=explode(".",$current_ftp);
  
$suba=$suba[count($suba)-1];
  
$suba=substr($suba,0,(strlen($suba)-2));
  if ((
$suba==$zone) || ($zone=="*"))
  {
  if (
substr($current_base[$k],0,6)=="ftp://"){}else
  {
$current_base[$k]="ftp://" $current_base[$k];}
  
$account=explode("@",$current_base[$k]);
  
$lp=$account[0] . "@";
  
$button=substr($account[1],0,strlen($account[1])-2);
  
$dom="<font color=orange>" $account[1] . "</font><br>";
  
$dom=str_replace($sw,"<b><font color=yellow>" $sw "</font></b>",$dom);
  echo(
"<input type=button value=\"Open\" onclick='location.href=\"" $lp $button "\"'>&nbsp;&nbsp;" $lp $dom);
  if (
$save=="yes"){
  
$add=fopen("./queries/" $zone "." $maxl "." $i "." $all "." $sw ".txt","a+");
  
fputs($add,$current_base[$k]);
  
fclose($add);}
}}}}}}
}

//call function
check_ftps($i,$zone,$maxl,$all,$save,$sw);
//call function
?></font>
</body>
</html>

3. Функции работы со строками - прошлый век. Сейчас есть регулярки.
4. Про формы не читал никогда?
5. В коде есть строчки вида
PHP код:

if(условие)
{
#xD кода нету... обычные фигурные скобки
} else 

#code 


6. Используй switch-case вместо if.

[QwyZ] 18.07.2009 15:06

блин я вообщето консультации непросил.как надо будет спрошу,а если ненравится дак я вроде тебя неаставлял его юзать.извини конечно,но твои комментарии излишни.

mailbrush 18.07.2009 15:10

Разве это консультация?
Это обычный анализ быдлокода :)

LEE_ROY 18.07.2009 16:01

>>3. Функции работы со строками - прошлый век. Сейчас есть регулярки.
неправда, регеспы медленнее функций работы со строками, и если есть возможность решить проблему с помощью доступных функций, регулярки не используют..

mailbrush 18.07.2009 16:56

Медленнее, но удобнее.

inlanger 18.07.2009 22:39

Нифига не удобнее. Чем сидеть и задрачивать регулярки, лучше использовать готовое решение, которое 100% будет работать.

mailbrush 18.07.2009 23:00

А с чего ты взял, что регулярки не будут работать? Мне, например, регулярки намного удобнее...

Martyr 18.07.2009 23:06

По поводу регулярок приведу цитату:«Если у вас есть проблема, и вы решили с ней разобраться с помощью регулярок, то теперь у вас две проблемы».
Насчет выложенного кода :
1.Бросилось в глаза огромная вложенность if..else конструкций.
2.Все сделано в 1 функции поэтому последуещее дополнение и улучшение скрипта станет проблематичным.
Хотя в принципе [QwyZ] молодец, неплохая идея.

m0Hze 18.07.2009 23:50

Цитата:

Сообщение от mailbrush
ТС, зачем темы дублировать? http://forum.antichat.ru/thread130318.html

Я пост свой тоже сюда скопирую, даже добавлю кое-что...

1. Есть такие функции - isset, error_reporting, ты про них не знаешь?
2. Никогда не пробовал делать код читабелным, не? Читабельный:
PHP код:

<html><body bgcolor=black>
<style>
a
{
text-decoration:none;
}
</style><font color=dcdcdc size=-1 face=verdana>FTP Parser 1.0 By [QwyZ] (for antichat.ru and seclab.ru)<br>
<br>
Variables: www.your.host.com/parser.php?<font color=orange>z</font>=com&amp;<font color=orange>m</font>=14&amp;<font color=orange>base</font>=ftps.txt&amp;<font color=orange>all</font>=0&amp;<font color=orange>save</font>=yes&amp;<font color=orange>word</font>=freehostia.com<br><br>
$z = domain zone (ex. &z=com),for all zones use * (&z=*)<br>
$m = maxlength of domain name (ex. &m=14),for all domains use * (&m=*)<br>
$base = ftp database (ex. &base=file.txt),bases must to be in "/bases" folder<br>
$all = searching at subdomains too (ex. &all=1,&all=0)<br>
$save = saving/not saving results to "/queries" folder (ex. &save=yes,&save=no)<br>
$word = search word (ex. &word=freehostia.com)<br><font color=blue>___________________________________________________________________</font><br><br>
<?php

//vars
$zone $_GET['z'];
$maxl $_GET['m'];
$i $_GET['base'];
$all $_GET['all'];
$save $_GET['save'];
$sw $_GET['word'];
//vars

if ($save == "yes")
{
    
$saveTo fopen("./queries/" $zone "." $maxl "." $i "." $all "." .
        
$sw ".txt""w+");
    
fclose($saveTo);
}
function 
check_ftps($i$zone$maxl$all$save$sw)
{
    
$current_base file("./bases/" $i);
    
$k 0;
    for (
$k 0$k count($current_base); $k++)
    {
        
$current_ftp $current_base[$k];
        if (
substr_count($current_ftp"@") == 1)
        {
            
$current_ftp explode("@"$current_ftp);
            
$current_ftp $current_ftp[1];
            if ((
substr_count($current_ftp".") == 1) || ($all == "1"))
            {
                if ((
strlen($current_ftp) <= $maxl) || ($maxl == "*"))
                {
                    if ((
strstr($current_ftp$sw)) || ($sw == "*"))
                    {
                        
$suba explode("."$current_ftp);
                        
$suba $suba[count($suba) - 1];
                        
$suba substr($suba0, (strlen($suba) - 2));
                        if ((
$suba == $zone) || ($zone == "*"))
                        {
                            if (
substr($current_base[$k], 06) == "ftp://")
                            {
                            } else
                            {
                                
$current_base[$k] = "ftp://" $current_base[$k];
                            }
                            
$account explode("@"$current_base[$k]);
                            
$lp $account[0] . "@";
                            
$button substr($account[1], 0strlen($account[1]) - 2);
                            
$dom "<font color=orange>" $account[1] . "</font><br>";
                            
$dom str_replace($sw"<b><font color=yellow>" $sw "</font></b>"$dom);
                            echo (
"<input type=button value=\"Open\" onclick='location.href=\"" $lp $button .
                                
"\"'>&nbsp;&nbsp;" $lp $dom);
                            if (
$save == "yes")
                            {
                                
$add fopen("./queries/" $zone "." $maxl "." $i "." $all "." .
                                    
$sw ".txt""a+");
                                
fputs($add$current_base[$k]);
                                
fclose($add);
                            }
                        }
                    }
                }
            }
        }
    }
}

//call function
check_ftps($i$zone$maxl$all$save$sw);
//call function


?></font>
</body>
</html>

Нечитабельный (твой):
PHP код:

<html><body bgcolor=black>
<style>
a
{
text-decoration:none;
}
</style><font color=dcdcdc size=-1 face=verdana>FTP Parser 1.0 By [QwyZ] (for antichat.ru and seclab.ru)<br>
<br>
Variables: www.your.host.com/parser.php?<font color=orange>z</font>=com&amp;<font color=orange>m</font>=14&amp;<font color=orange>base</font>=ftps.txt&amp;<font color=orange>all</font>=0&amp;<font color=orange>save</font>=yes&amp;<font color=orange>word</font>=freehostia.com<br><br>
$z = domain zone (ex. &z=com),for all zones use * (&z=*)<br>
$m = maxlength of domain name (ex. &m=14),for all domains use * (&m=*)<br>
$base = ftp database (ex. &base=file.txt),bases must to be in "/bases" folder<br>
$all = searching at subdomains too (ex. &all=1,&all=0)<br>
$save = saving/not saving results to "/queries" folder (ex. &save=yes,&save=no)<br>
$word = search word (ex. &word=freehostia.com)<br><font color=blue>___________________________________________________________________</font><br><br>
<?php
//vars
$zone=$_GET['z'];
$maxl=$_GET['m'];
$i=$_GET['base'];
$all=$_GET['all'];
$save=$_GET['save'];
$sw=$_GET['word'];
//vars

if ($save=="yes"){
$saveTo=fopen("./queries/" $zone "." $maxl "." $i "." $all "." $sw ".txt","w+");
fclose($saveTo);}
function 
check_ftps($i,$zone,$maxl,$all,$save,$sw)
{
 
$current_base=file("./bases/" $i);
 
$k=0;
 for(
$k=0;$k<count($current_base);$k++)
 {
  
$current_ftp=$current_base[$k];
  if (
substr_count($current_ftp,"@")==1)
  {
  
$current_ftp=explode("@",$current_ftp);
  
$current_ftp=$current_ftp[1];
  if ((
substr_count($current_ftp,".")==1) || ($all=="1"))
  {
  if ((
strlen($current_ftp)<=$maxl) || ($maxl=="*"))
  {
  if ((
strstr($current_ftp,$sw)) || ($sw=="*")){
  
$suba=explode(".",$current_ftp);
  
$suba=$suba[count($suba)-1];
  
$suba=substr($suba,0,(strlen($suba)-2));
  if ((
$suba==$zone) || ($zone=="*"))
  {
  if (
substr($current_base[$k],0,6)=="ftp://"){}else
  {
$current_base[$k]="ftp://" $current_base[$k];}
  
$account=explode("@",$current_base[$k]);
  
$lp=$account[0] . "@";
  
$button=substr($account[1],0,strlen($account[1])-2);
  
$dom="<font color=orange>" $account[1] . "</font><br>";
  
$dom=str_replace($sw,"<b><font color=yellow>" $sw "</font></b>",$dom);
  echo(
"<input type=button value=\"Open\" onclick='location.href=\"" $lp $button "\"'>&nbsp;&nbsp;" $lp $dom);
  if (
$save=="yes"){
  
$add=fopen("./queries/" $zone "." $maxl "." $i "." $all "." $sw ".txt","a+");
  
fputs($add,$current_base[$k]);
  
fclose($add);}
}}}}}}
}

//call function
check_ftps($i,$zone,$maxl,$all,$save,$sw);
//call function
?></font>
</body>
</html>

3. Функции работы со строками - прошлый век. Сейчас есть регулярки.
4. Про формы не читал никогда?
5. В коде есть строчки вида
PHP код:

if(условие)
{
#xD кода нету... обычные фигурные скобки
} else 

#code 


6. Используй switch-case вместо if.

Как ты меня убиваеш.

m0Hze 19.07.2009 00:18

Цитата:

Сообщение от mailbrush
А с чего ты взял, что регулярки не будут работать? Мне, например, регулярки намного удобнее...

Если тебе удобнее,то лучше бы не отвечал в этой теме, рах непизды непонимаеш.

b3 19.07.2009 04:23

mailbrush,
Несоглашусь в некоторых моментах:
Цитата:

1. Есть такие функции - isset, error_reporting, ты про них не знаешь?
error_reporting - для тех кто неумеет правильно оформлять код, если нотайсы, значит у вас не предопределены переменные как ето бывает в 90%, а от Варнингов и Фатал ерроров спасаются решением проблеммы а не отключением отображения ошибок.

Цитата:

3. Функции работы со строками - прошлый век. Сейчас есть регулярки.
Тоже не согласен, мне самому удобнее регулярками пользоваться но ето не грамотно с точки зрения программирования.

И вот момент, несовсем правильный:
PHP код:

if(условие

#xD кода нету... обычные фигурные скобки 
} else  
{  
#code  


Зачем прибегать к такой конструкции если можно сделать все наоборот:
Цитата:

if(!условие)
{действие}
Цитата:

Хотя в принципе [QwyZ] молодец, неплохая идея.
Немного не в том направлении работает ТС, ети все функции не актуальны, лучше поработать над nxfntkmyjq сортировкой фтп, к примеру бэды писать в отдельный файл, для дальнейшего анализа, возможно там неправильно записаны фтп, тоесть без префикса ftp:// и тд. Выявлять все фри хосты, анонимные, гостевые, паблик фтп. Вообщем очистить лист от хлама, разделать на доменные зоны - ru, com, org ....
Когда работаеш с листом фтп >100k то красивая ссылка и подсветка домена нахрен не нужна, тогда бальше озадачен тем как отсеять паблик хлам.

scrat 19.07.2009 04:34

я тут просто оставлю эту ссылочку, ок?

PaCo 19.07.2009 05:39

Цитата:

Сообщение от Martyr
2.Все сделано в 1 функции поэтому последуещее дополнение и улучшение скрипта станет проблематичным.

А вам что то говорит такое понятие - один интерфейс, множество реализаций(пускай это и не совсем обьект)? Если в функции не лепить куски тугово как пластилин говнокода то по моему глубокому имхо "последуещее дополнение и улучшение" ни разу не станет проблематичным.

mailbrush 19.07.2009 09:09

Цитата:

error_reporting - для тех кто неумеет правильно оформлять код, если нотайсы, значит у вас не предопределены переменные как ето бывает в 90%, а от Варнингов и Фатал ерроров спасаются решением проблеммы а не отключением отображения ошибок.
Ну это если он про isset не знает...
Цитата:

оже не согласен, мне самому удобнее регулярками пользоваться но ето не грамотно с точки зрения программирования.
Пускай, но это удобнее мне и тебе:)
Цитата:

И вот момент, несовсем правильный:
Вот я об этом и говорил... Это у него в коде так:)
Цитата:

я тут просто оставлю эту ссылочку, ок?
Верное решение...

Martyr 19.07.2009 12:16

Цитата:

А вам что то говорит такое понятие - один интерфейс, множество реализаций(пускай это и не совсем обьект)?
Ну и причем здесь полиморфизм?Если мы имеем дело с одной функцией.Я писал о таком методе рефракторинга, как группировка кода в отдельную функцию.
Цитата:

Если в функции не лепить куски тугово как пластилин говнокода то по моему глубокому имхо "последуещее дополнение и улучшение" ни разу не станет проблематичным.
Смотря что вы понимаете под "куски тугово как пластилин говнокода".

[QwyZ] 19.07.2009 18:22

значит нужна вам еще и валидатор добавитb и шоб сразу на доменные зоны итд.?ок,покодю и во второи версии все это добавлю.спасибо за критику итд,хоть в ней ненуждался.кстати меня немного повеселило настойчивое повторение от майлбраша,что я незнаю что такое функция иссет...:D

mailbrush 19.07.2009 18:24

Если знаешь - зачем не использовать? На крайняк - юзай еррор_репортинг.

PaCo 19.07.2009 23:41

Цитата:

Сообщение от Martyr
Ну и причем здесь полиморфизм?Если мы имеем дело с одной функцией.Я писал о таком методе рефракторинга, как группировка кода в отдельную функцию.

Смотря что вы понимаете под "куски тугово как пластилин говнокода".

Если вам необходимо сделать 1 операцию но вместо нее вы делаете 5(вот это как раз я и понимаю тугим как пластилин говнокодом) и потом что бы повысить читаемость вы начинаете вместо того что бы оптимизировать код заниматься " рефракторинга, как группировка кода" - создавать для нее например отдельный метод, или еще мне очень нравиться создают метод с новым именем и все что в нем делают - это вызывают другой метод(имя новое читаемость повышаеться по их соображениям) - то это имхо - вершина говнокода.
Насчет полиморфизма - ну не знаю может интенсиональный контекст и т.д. но насколько я вас понял то вы утверждаете что использование функуции несет за собой проблематичность с дальнейшим добавлением кода и изменениям в его работе, но очень часто результат работы функции нужно обработать по разному - кто мешает вам использывать базисную функция - а результаты ее работы использовать в других функциях не копашась в коде основной? Конечно же разделения кода на законченые функциональные блоки повышает процесс нахождения ошибок и тестирования кода с этим никто не спорит.

mailbrush 27.07.2009 23:27

Такие вещи пишутся на компилируемых языках...

[QwyZ] 28.07.2009 08:25

smotrim update parsera

[QwyZ] 30.07.2009 07:34

up up,updated

ttt0z 01.08.2009 18:18

не работает, пишет что все офф лайн. хотя через фтп клиент прекрасно заходит, хз че такое

у меня одного такое??

ttt0z 01.08.2009 19:27

нашел в чем ошибка, скрипт вырезает ис акка домен для соединения не правильно, было "site.com", а он вырезал "site.c"
автор исправь

и еще косяки:
чекал 4 тысячи, а вывелось только 1,5 фтп.
под конец оформление цветом перестало работать.

исправить эти косяки и добавить мультипоточность и был бы нормальный чекер.

[QwyZ] 02.08.2009 10:19

ladna,posmotrim.poshli mne ftp list ili napishi v kakom vide on u tebya.i eshe napishi kodirovku txt faila.1,5 ftp eto potomu chto k primeru pri parametre subdomains=0 on otseivaet vse domeny tipa bla.bla.com

[QwyZ] 05.09.2009 18:08

up :)

L I G A 05.09.2009 18:14

Цитата:

Сообщение от [QwyZ]
up :)

зачем апать? тут не раздел о работе или продаже.


Время: 01:27