
10.04.2009, 01:56
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
С нами:
9560486
Репутация:
1809
|
|
ph1l1ster, спасибо большое, всё работает как часы! 
|
|
|
Perl.Многопоточность.Большие обьемы. |

12.04.2009, 18:49
|
|
Познающий
Регистрация: 29.03.2009
Сообщений: 87
С нами:
9010027
Репутация:
308
|
|
Perl.Многопоточность.Большие обьемы.
Код:
use POSIX ":sys_wait_h";
use IO::Handle;
# Количество процессов и кол-во задач на процесс
my $max_proc = 30;
my $max_per_proc = 30;
# Записываем строку запуска скрипта. Ниже будет видно зачем это.
my $exe = $0;
# Нихт зомби
$SIG{CHLD} = sub { while ((my $pid = waitpid(-1, WNOHANG)) > 0) {} };
# Создаём пайпы для обмена данными родитель-чайлд и чайлд-ридер, снимаем буферизацию
pipe(PARENT_RDR, CHILD_WTR);
pipe(CHILD_RDR, PARENT_WTR);
CHILD_WTR->autoflush(1);
PARENT_WTR->autoflush(1);
# Записываем PID главного процесса, форкаем процесс-ридер
my $master_pid = $$;
my $reader_pid = fork();
die "Can't fork: $!" unless defined($reader_pid);
# Пошёл основной процесс.
if($reader_pid){
open(F, $ARGV[0]) or die "Can't open file: $!\n";
my %children;
while(<F>){
chomp;
s/\r//;
my $line = $_;
$line = sprintf("%-128s", $line);
syswrite(CHILD_WTR,$line,128);
# Читаем из файла и пишем в пайп точное количество данных.
# Это необходимо для того, чтобы задания правильно читались чайлдами.
# Если использовать простые print/<>/read/write то чайлды будут читать огрызки заданий.
# см. ниже =)
$0 = "$exe";
# Проверяем количество чайлдов и добавляем их, если нужно, до $max_proc
while(checkChildren(\%children) < $max_proc){
my $pid = fork();
die "Can't fork: $!" unless defined($pid);
if ($pid){
$children{$pid} = 1;
} else {
close(CHILD_RDR);
close(CHILD_WTR);
# Вот собссно и сам чайлд
processChild();
exit;
}
}
}
# Файл кончился. Теперь пишем в пайп сигнал о выходе для всех чайлдов.
while(checkChildren(\%children)){
syswrite(CHILD_WTR,sprintf("%-128s", 'EXIT'),128);
}
# Убиваем ридера.
kill(2,$reader_pid);
close(F);
}else{
# Здесь происходит запуск ридера
close(PARENT_RDR);
close(PARENT_WTR);
readerProcess();
exit;
}
sub processChild
{
# см. ещё чуть ниже =)
$0 = "$exe - CHILD";
my $work = $max_per_proc;
while($work){
my $bytes = sysread(PARENT_RDR, my $line, 128);
$line=~s/.*?\x00//;
$line=~s/\s+?$//;
$line=~s/\s+//g;
exit if $line eq 'EXIT';
next unless $line;
# Получили задание. Оно будет гарантированно целым за счёт sysread/syswrite
# Ну вот и добрались до странной конструкции =)
# С её помощью при просмотре списка процессов мы увидим какой процесс чем занимается.
# На работу системы не влияет, но категорически удобно =)
$0 = "$exe - CHILD - $line";
my $result;
# Здесь обрабатываем нашу задачу и пишем в пайп ридеру
# ...
# ...
$result = sprintf("%-128s", $result);
syswrite(PARENT_WTR,$result,128);
$0 = "$exe - CHILD";
# ну это, думаю, понятно =)
$work--;
}
}
sub readerProcess
{
# Это процесс ридера
$SIG{INT} = sub {
exit;
};
open(F,">result.txt");
select F;
$|=1;
my $count;
my $work = 1;
# Читаем данные из пайпа, пишем в файл
while($work){
$count++;
# Ридер рассказывает скока он уже обработал
$0 = "$exe - READER - reading... ".$count;
my $bytes = sysread(CHILD_RDR, my $data, 128);
$data=~s/.*?\x00//;
$data=~s/\s+?$//;
$data=~s/\s+//g;
last if $data eq 'EXIT';
# Пишем
print F "$data\n";
# Можно проверить не сдох ли родительский процесс.
# Если вдруг он загнулся (а такое может случиться), то выйти.
last unless kill(0, $master_pid);
}
close(F);
}
sub checkChildren
{
my $hash = shift;
for my $pid(keys %{$hash}){
if(!kill(0, $pid)){
delete ${$hash}{$pid};
}
}
return scalar keys %{$hash};
}
Варианты распараллеливания:
1.На каждую задачу выделяется один процесс. Вариант хорош тем, что каждое задание изолировано в отдельном процессе - не будет проблем с утечкой памяти и прочими заморочками (особенно когда юзаются сторонние модули).
2.Родить необходимое количество процессов и выдавать им задания.
3.Оптимальный вариант- принцип работы Апача. Основной процесс запускает заданное количество дочерних. Каждый дочерний выполняет установленное количество задач и умирает.
|
|
|

14.04.2009, 01:39
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
С нами:
9023100
Репутация:
395
|
|
Сижу в маил агенте ищу девушку... лазию по мирам и просто бесит когда тебе пишут мол доступ ограничен.... вот теперь доступ не ограничен! хехе
Код:
<html>
<head>
<title>Мой мир@Mail.ru - Доступ не ограничен</title>
</head>
<body>
<form onsubmit="show_big_image(linkz.value);return false;">
Ссылка на фотку, которую хочешь посмотреть:<br><input type=text id=linkz style='width:100%'>
</form>
<img src='' alt="тут будет фотка" id=srcimg>
<script language="javascript">
function show_big_image(str)
{
//----------------------------------------------------------------------
// (c)oded by Gar|k - достало меня видеть этот доступ ограничен гргргр
//
// exp link: http://my.mail.ru/mail/gar.i.k/photo/52.html?mode=
//----------------------------------------------------------------------
var re=/http\:\/\/(?:.*)\/(.*\/.*)\/.*\/(.*?).html(?:.*)/;
srcimg.src=str.replace(re,"http://content.foto.my.mail.ru/$1/_myphoto/i-$2.jpg");
}
</script>
</body>
</html>
Если лень копипастить заходи сюда
Последний раз редактировалось Gar|k; 14.04.2009 в 02:07..
|
|
|

19.04.2009, 01:15
|
|
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
С нами:
9798086
Репутация:
999
|
|
Простой хостинг картинок. Очень быстро работает
PHP код:
<style>*{overflow-x: hidden; overflow-y: hidden;}
table{text-align:center;}form{width:500px;margin-top:90px;padding:5px;background-color:#fff;border:1px solid #ccc;}</style>
<CENTER>
<FORM method="POST" action="index.php" enctype="multipart/form-data">
<TABLE align="center">
<TR>
<TD></TD>
<TD><B>Бесплатный хостинг картинок</B></TD>
<TD></TD>
</TR>
<TR>
<TD>Choose a file to upload: </TD>
<TD><input name="uploadedfile" type="file" /></TD>
<TD><INPUT TYPE="submit" value="Upload File"></TD>
</TR>
</TABLE>
<?php
$upload=$_FILES["uploadedfile"];
$max_size=600000; // Byte
$serv="http://".$_SERVER["HTTP_HOST"]."/img/";
$dir=$_SERVER["DOCUMENT_ROOT"];
$dir=$dir."/img/uploaded/";
$allow=array("image/png","image/jpeg","image/gif","image/bmp");
if($upload){
//name
$type=$upload["type"];
$name=$upload["name"];
$tmp =$upload["tmp_name"];
$size=$upload["size"];
if($size==$max_size or $size<$max_size and $tmp){
if(in_array($type,$allow)){
$get=get($type);
$l=md5(microtime()*time());
$link=$l[0].$l[1].$l[2].$l[3].$l[4].$l[5].$l[6].$l[7];
$dir=$dir.$link.$get;
$md5=md5(file_get_contents($tmp));
$scan=scan($md5);
if($scan){
$link=$scan;
$get="";
}else{
copy($tmp,$dir);
}
$link=$serv."uploaded/".$link.$get;
}else{
$error="Такое разрешение - запрещено :-(";
}
}else{
$error="Слишком большой размер или отсутствует файл...";
}
if($error){echo "<B>Ошибка:</B><font color=red>$error</font><BR>\n";}else{
echo "<B>Успешно:</B> <font color=green>$link</font><BR>"."<A HREF=\"$link\">$link</A><BR>\n".
"<INPUT TYPE=\"text\" NAME=\"msg\" size=\"55\" value=\"$link\" style=\"text-align:center;background:#2B2F34;color: #DDDDDD;font-family:Tahoma, sans-serif;size:2;border:none;\"><BR>\n".
"<INPUT TYPE=\"text\" NAME=\"msg\" size=\"55\" value=\"[img]".$link."[/img]\" style=\"text-align:center;background:#2B2F34;color: #DDDDDD;font-family:Tahoma, sans-serif;size:2;border:none;\"><BR>\n";}
}
?>
</FORM>
</CENTER>
<?php
function scan($md5){
global $dir;
$dirs=scandir("uploaded/");
foreach($dirs as $v){
if($v!=="." and $v!==".."){
$md=md5(file_get_contents("uploaded/$v"));
if($md==$md5){return $v;}
//echo $v."<br>";
}
}
}
function get($type){
global $allow;
foreach($allow as $v){
if($type==$v){
list($t,$ext)=explode("/",$v);
return ".".$ext;
}
}
}
?>
|
|
|

20.04.2009, 13:45
|
|
Новичок
Регистрация: 27.06.2008
Сообщений: 22
С нами:
9406198
Репутация:
19
|
|
Можете скинуть парсер ников для phpBB или IPB?
|
|
|

20.04.2009, 14:05
|
|
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
С нами:
9561436
Репутация:
462
|
|
IPB:
Код:
#!/usr/bin/perl
use LWP::UserAgent;
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (A, ">>nicknames.txt");
$count = 0;
while ($count <= $page) {
$url=$adr."index.php?act=members&st=".$count ++."0";
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"http:.*index.*?showuser=.*\">(.*)[^Просмотреть .*]<\/a>/g;
print A join "\n", @nicknames;}
phpBB:
Код:
#!/usr/bin/perl
use LWP::UserAgent;
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 500
> );
$page=<STDIN>;
chomp($page);
open (A, ">>nicknames.txt");
$count = 0;
while ($count <= $page) {
$url=$adr."memberlist.php?start=".$count."0";
$count ++,$count ++,$count ++,$count ++,$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\".*?mode=viewprofile.*\" class=\"gen\">(.*)<\/a>/g;
print A join "\n", @nicknames;}
Последний раз редактировалось ph1l1ster; 20.04.2009 в 14:16..
|
|
|

20.04.2009, 17:33
|
|
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,205
С нами:
10016425
Репутация:
1257
|
|
Ретрекер демоноида, для забаненых украинцев:
http://mrthe.name/2009/04/retracker-demonoid/
да, я пиарю свой блог.
|
|
|

20.04.2009, 18:27
|
|
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
С нами:
9561436
Репутация:
462
|
|
Forums Nicknames Grabber
#============================
#Forums nicknames grabber
#C0ded by ph1l1ster
#ICQ: 612-672
#============================
Граббер неймов с форумов:
Код:
1 - vBulletin
2 - phpBB
3 - IPB
4 - SMF
5 - MyBB
6 - Woltlab Burning Board
7 - PunBB
8 - XMBForum
9 - FUDforum
10 - Ikonboard
граббит по дефолтным настройкам, не настроен на хаки типа html страниц. если неграббится: проверьте url, http://site.ru/forum/ (полный путь до форума, со всеми слэшами)
Enter numbers of page witch users - это колличество страниц с именами. (для непонятливых)
Сохраняет всё в тхт.
Код:
#!/usr/bin/perl
use LWP::UserAgent;
system('cls');
print qq(
#============================#
# Forums nicknames grabber #
# C0ded by ph1l1ster #
# ICQ: 612-672 #
#============================#\n
Forum for parsing?\n\n1 - vBulletin\n2 - phpBB\n3 - IPB
4 - SMF\n5 - MyBB\n6 - Woltlab Burning Board\n7 - PunBB
8 - XMBForum\n9 - FUDforum\n10 - Ikonboard\n\n> );
$do = <STDIN>;chomp($do);
#vbulletin
if ($do == 1){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (VB, ">>vbulletin_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."memberlist.php?do=getall&order=asc&sort=username&page=".$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"member.*?u=.*\">(.*)<\/a>/g;
print VB join "\n", @nicknames;}}
#phpbb
if ($do == 2){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 500
> );
$page=<STDIN>;
chomp($page);
open (PHPBB, ">>phpbb_nicknames.txt");
$count = 0;
while ($count <= $page) {
$url=$adr."memberlist.php?start=".$count."0";
$count ++,$count ++,$count ++,$count ++,$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\".*?mode=viewprofile.*\" class=\"gen\">(.*)<\/a>/g;
print PHPBB join "\n", @nicknames;}}
#ipb
if ($do == 3){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (IPB, ">>ipb_nicknames.txt");
$count = 0;
while ($count <= $page) {
$url=$adr."index.php?act=members&st=".$count ++."0";
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"http:.*index.*?showuser=.*\">(.*)[^Просмотреть .*]<\/a>/g;
print IPB join "\n", @nicknames;}}
#smf
if ($do == 4){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 500
> );
$page=<STDIN>;
chomp($page);
open (SMF, ">>smf_nicknames.txt");
$count = 0;
while ($count <= $page) {
$url=$adr."index.php?action=mlist;start=".$count."0";
$count ++,$count ++,$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"http:.*index.*?action=profile.*\" title=\".*\">(.*)<\/a>/g;
print SMF join "\n", @nicknames;}}
#mybb
if ($do == 5){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (MYBB, ">>mybb_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."memberlist.php?page=".$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"member.*?action=profile.*\">(.*)<\/a>/g;
print MYBB join "\n", @nicknames;}}
#Woltlab Burning Board
if ($do == 6){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (WBB, ">>wmm_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."index.php?page=MembersList&pageNo=".$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"http.*index.*?page=User.*\" title=\".*\">(.*)<\/a><\/p><p class=\"/g;
print WBB join "\n", @nicknames;}}
#PunBB
if ($do == 7){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (PUNBB, ">>punbb_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."userlist.php?p=".$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"profile.*?id=.*\">(.*)<\/a><\/td>/g;
print PUNBB join "\n", @nicknames;}}
#XMB
if ($do == 8){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (XMB, ">>xmb_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."misc.php?action=list&page=".$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"member.*?action=viewpro.*member=.*\">(.*)<\/a>/g;
print join "\n", @nicknames;}}
if ($do == 9){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (XMB, ">>xmb_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."index.php?t=finduser&&&start=".$count."0";
$count ++,$count ++,$count ++,$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"index.*usrinfo.*id=.*\">(.*)<\/a><\/td>/g;
print join "\n", @nicknames;}}
#Ikonboard
if ($do == 10){
system('cls');
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page witch users:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (IKB, ">>ikb_nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."memberlist.cgi?page=".$count++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"profile.*action=show.*member=.*\"><b>(.*)<\/b><\/a>/g;
print IKB join "\n", @nicknames;}}
|
|
|

20.04.2009, 18:34
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
php криптор от KALLISTO v1.2
PHP код:
<pre><?
// 2:52 27.07.2007
#######################################
#######################################
######## PHPCrypt ####### public
######## Ver. 1.2 #######
#######################################
#######################################
######## KALLISTO #######
######## 98009800 #######
#######################################
#######################################
$jsCrypt = 0; // 1 - on, 0 - off ява крипт
$input = "1.php"; // файл который надо криптануть
$output = "index.php"; // выходяший криптованный файл
#################################
///
$f=join("", file($input));
$key = rand(1,100);
$find = 0;
$start_pos = strpos($f, "<?php");
if($start_pos === false )
{
$start_pos = strpos($f, "<?");
if($start_pos !== false )
{
$find=1;
$f= substr($f, $start_pos+2, strlen($f));
}
}
else
{
$find=1;
$f= substr($f, $start_pos+5, strlen($f));
}
if($find==0) exit("Крипт скрипта неполучится.");
$start_pos = strrpos($f, "?>");
if(is_int($start_pos))$f=substR($f, 0, $start_pos);
$new = '';$len=strlen($f);
for($i=0;$i<$len;$i++)
{
$new .= chr(ord($f[$i]) ^ $key);
}
$new = str_replace("<?", "[t1]", $new);
$new = str_replace("'", "[t3]", $new);
$jsPre='';
$jsAfter='';
if($jsCrypt == 1)
{
$jsPre="
function jsCrypt(\$buffer)
{
\$return = \$buffer;
\$new = '';
for(\$i=0;\$i<strlen(\$buffer);\$i++)
{
\$tmp = ord(\$buffer[\$i]);
if(\$tmp<100) \$tmp = \"0\".\$tmp;
if(\$tmp<10) \$tmp = \"0\".\$tmp;
\$new .= \$tmp;
}
\$return = \"<script>
var len = \".strlen(\$buffer).\";
var str = '\$new';
var tmp = '';
for(i=0;i<len;i++)
{
// String.fromCharCode(str.substr(i*3, 3) )
document.write( String.fromCharCode(str.substr(i*3, 3) ) );
}
</script>\";
return \$return;
}
ob_start(\"jsCrypt\");";
$jsAfter="ob_end_flush();";
}
$code = "<?
$jsPre
\$key=$key;
\$res ='$new';
\$str=str_replace(\"[t1]\", \"<?\", \$res);
\$str=str_replace(\"[t3]\", \"'\", \$str);
\$len=strlen(\$str);
\$ev='';
for(\$i=0;\$i<\$len;\$i++)
\$ev .= chr(ord(\$str[\$i]) ^ \$key);
eval(\$ev);
$jsAfter;
?>";
@fwrite( fopen($output, "w"), $code) or die("Не удалось создать файлик...");
?>
</pre>
|
|
|

21.04.2009, 00:44
|
|
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами:
9851426
Репутация:
1676
|
|
Скрипт для рассылки по контакт листу mail.ru agent. Особо не тестил, ибо нет аккаунтов.
http://kaimi.ru/wp-content/uploads/2009/04/mrim.rar
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|