ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Администрирование > AntiDDos - АнтиДДОС
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

АНТИДДОС скрипты
  #1  
Старый 11.08.2009, 14:45
Аватар для ReduKToR
ReduKToR
Постоянный
Регистрация: 05.01.2009
Сообщений: 684
Провел на форуме:
3281634

Репутация: 485


Отправить сообщение для ReduKToR с помощью ICQ
По умолчанию АНТИДДОС скрипты

И так ,скрипты "спасающие" от ддоса прошу выкладывать только здесь!


1.Каждый второй скажет что скриты, темболее на php неспасут от настоящего ддоса.
-Это естественно, но от среднего HTTP Флуда они спасти смогут.

1.Vbulletin antidd0s(1.2)
Обязательно создайте каталог tmp с правами 777

-
VB_antiddos

Ставить на ветки 3.7.х \3.8.х
___________________________________

2.IPB antidd0s(1)
Обязательно создайте каталог tmp с правами 777


-
IPB_antiddos

Ставить на IPB 2.1.7 И аналоги
___________________________________
-
IPB_antiddos

Ставить на IPB 2.3.5 И аналоги


Ну вообем это опять для тех кто сам собрать несможет..... Тех кто умеет гуглить и умеет некривые руки прошу некоментировать типа: и че ты сделал? типа любой так неможет......



Если кому надо на другие системы то либо стучим ко мне в аську, либо собираем сами.....
1.В самое начало index.php ставим это:
<?
include $_SERVER['DOCUMENT_ROOT'].'/antiddos.php';
?>

2.Файлы из архива в корень и права на tmp -777

Ну вот и все.... сильно непинать...сделано для новичков.....Скачать

Последнее обновление ссылок: 04.11.09

Последний раз редактировалось ReduKToR; 04.11.2009 в 21:05..
 
Ответить с цитированием

  #2  
Старый 12.08.2009, 12:10
Аватар для freelsd
freelsd
Участник форума
Регистрация: 25.10.2007
Сообщений: 177
Провел на форуме:
551782

Репутация: 58
Отправить сообщение для freelsd с помощью ICQ
По умолчанию

Команды ANTI-DDOS:

Сколько апачей:
Код:
    ps aux | grep httpd  |wc -l
Cколько коннектов на 80 порт:
Код:
    netstat -na | grep ":80\ " | wc -l
SYN
Код:
    netstat -na | grep ":80\ " | grep syn
Пример SYN-флуда:
Код:
netstat -na | grep ":80\ " | grep SYN | wc -l
767
Посмотреть много ли разных ай-пи:
Код:
    netstat -na | grep ":80\ " | grep SYN | sort  -u | more
На какой домен чаще всего идут запросы:
Код:
    tcpdump -npi eth0 port domain
Статус апача:
Код:
    apachectl status
Посмотреть откуда IP:
Код:
    whois xxx.xxx.xxx.xxx
или
Код:
    jwhois xxx.xxx.xxx.xxx
где xxx.xxx.xxx.xxx IP атакующего

Просниферить траф идущий на domain.ru (атакуемый домен) с записью в файл output.txt:
Код:
    tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host domain.ru
dst также можно поменять на src:
Код:
    tcpdump -n -i eth0 -s 0 -w output.txt src port 80 and host domain.ru
Допустим нашли IP (xxx.xxx.xxx.xxx) с которого много запросов:
tcpdump и там где был атакуемый домен вводим этот IP:
Код:
    tcpdump -n -i eth0 -s 0 -w output.txt src port 80 and host xxx.xxx.xxx.xxx
С какого IP сколько запросов:
Код:
    netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
или просто
Код:
    netstat -na | grep :80 | sort | uniq -c | sort -nr | more
Посмотреть на какие порты:
Код:
    netstat -na | grep xxx.xxx.xxx.xxx
где xxx.xxx.xxx.xxx IP атакующего

и блочить начиная с тех, где больше коннектов.

Закрыть доступ для целой подсети IP (xxx.xxx.xxx.xxx), на конкретный протокол(-p) порт(–destination-port) в конкретном направлении(-d или -s:
В одном направлении (-d):
Код:
    iptables -A INPUT -d xxx.xxx.0.0/16 -p tcp --destination-port http -j DROP
В другом направлении (-s):
Код:
    iptables -A INPUT -s xxx.xxx.0.0/16  -p tcp --destination-port http -j DROP
Тоже самое, но для конкретного IP (xxx.xxx.xxx.xxx)
Код:
    iptables -A INPUT -s xxx.xxx.xxx.xxx  -p tcp --destination-port http -j DROP
    iptables -A INPUT -d xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP
Блокировка по всем протоколам и портам, в направления -s и -d:
Код:
    iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
    iptables -A INPUT -d xxx.xxx.xxx.xxx -j DROP
Если установлен файрвол APF, можно блочить с его помощью:
Код:
    apf -d xxx.xxx.xxx.xxx
Где xxx.xxx.xxx.xxx IP атакующего.
 
Ответить с цитированием

  #3  
Старый 19.11.2009, 07:38
Аватар для ReduKToR
ReduKToR
Постоянный
Регистрация: 05.01.2009
Сообщений: 684
Провел на форуме:
3281634

Репутация: 485


Отправить сообщение для ReduKToR с помощью ICQ
По умолчанию

AntiOverload *FIX*

Цитата:
Модуль предназначен для ограничения доступа к сайту или к страницам, где он включён.
Принцип работы в том, что запоминается ip-адрес и время обращения с этого адреса. И если в течение заданного времени происходит обращение с того же адреса, то ему выдаётся ошибка 503.Т.е Если вы нажмёте кнопку обновить 3 раза подарят,вам выдаст это сообщение

Установка:
*Качаем antiOverload.txt
*В корне сайта создаем папку tmp и выдаём права 777(Если папка есть,то не чего создовать не надо.)
*Открываем index.php и перед:
<?php
PHP код:
<?php
/*
*--------------------------------------------------------
* Модуль antioverload
*--------------------------------------------------------
* Модуль предназначен для ограничения доступа к сайту или 
* к страницам, где он включён.
* Принцип работы в том, что запоминается ip-адрес и время
* обращения с этого адреса. И если в течение заданного
* времени происходит обращение с того же адреса, то ему
* выдаётся ошибка 503.
* Модуль необходимо подключать к скрипту самым первым.
* Этим обеспечивается быстрота его работы.
*--------------------------------------------------------
*/

/* Время задержки в секундах */
$ad_delay=2;
/* Путь к папке с временными файлами. Должен существовать */
$ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp';

/*
*---------------------------------------------------------
* Список поисковых роботов.
* Очень не хорошо, если поисковый робот будет натыкаться
* на ошибки на сайте. Ему это может сильно не понравиться.
* Поэтому пишем список юзер-агентов роботов; добавляем или
* удаляем, что нужно.
*---------------------------------------------------------
*/
$ad_Robots_UserAgent=array(
   
'aipbot',
   
'Aport',
   
'eStyleSearch',
   
'Gigabot',
   
'Gokubot',
   
'Google',
   
'MJ12bot',
   
'msnbot',
   
'PlantyNet_WebRobot',
   
'StackRambler',
   
'TurtleScanner',
   
'Yahoo',
   
'Yandex',
   
'YaDirectBot',
);
/*
*---------------------------------------------------------
* Список доверенных IP.
*---------------------------------------------------------
*/
$ad_good_ip = array(
    
'217.107.36.73',
);

/*
*----------------------------------------------------------
* Функция создаёт в указанной директории файл, начинающийся
* с буквы a (для отличия от других возможных файлов) и
* содержащий в имени ip-адрес клиента.
*----------------------------------------------------------
*/
function ad_WiteIP($dir){
   
$f=fopen($dir.'/a'.$_SERVER['REMOTE_ADDR'], 'w');
   
fclose($f);
}
/*
*----------------------------------------------------------
* Проверка на наличие в поле HTTP_USER_AGENT чего-нибудь из
* вышенаписанного списка.
*----------------------------------------------------------
*/
$ad_IsRobot=false;
foreach (
$ad_Robots_UserAgent as $match){
   if (
strstr($_SERVER['HTTP_USER_AGENT'], $match)){
      
$ad_IsRobot=true;
      break;
   }
}
if( 
in_array($_SERVER['REMOTE_ADDR'], $ad_good_ip) ) {
     
$good_ip true;
} else {
     
$good_ip false;
}
/*
*---------------------------------------------------------
* Поисковые роботы не любят, когда к адресу страницы
* добавляется переменная сессии. Поэтому, если на сайте
* используются сессии, то их лучше включать, если агент -
* не робот.
* Если сессии не используются, то этот кусок можно убрать.
*---------------------------------------------------------
*/
if (!$ad_IsRobot AND !$good_ip){
   
session_start();
}

if (!
$ad_IsRobot AND !$good_ip){
   
/*** Чтение каталога и удаление старых файлов ***/
   
$ad_dir      =opendir($ad_DirName)
      or die(
'Отсутствует директория для временных файлов');
   
$ad_now      =time();
   
$ad_forbid   =$ad_now-$ad_delay;
   
/* IP-адрес в имени файла, начинающегося на букву a, 
      а время обращения - время изменения файла */
   
while (false!==($ad_FName=readdir($ad_dir))){
      if (
ereg('^a[1-9]',$ad_FName)
         && (@ 
filemtime($ad_DirName.'/'.$ad_FName)<$ad_forbid)){
         @ 
unlink($ad_DirName.'/'.$ad_FName);
      }
   }
   
closedir($ad_dir);
   
/*** Проверка на существование пометки
      о недавнем обращении с данного ip-адреса ***/
   
if (file_exists($ad_DirName.'/a'.$_SERVER['REMOTE_ADDR'])){
      
/* Если обращение было недавно, то выводим сообщение об ошибке */
      
header('HTTP/1.0 503 Service Unavailable');
      
header('Status: 503 Service Unavailable');
      
header('Retry-After: '.$ad_delay*3);
?>
<!doctype html public "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Ошибка 503</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
</head>
<body>
<h1>Ошибка 503 (Service Unavailable)</h1>
<p>Сервер не может в данный момент выдать запрашиваемую Вами страницу.
Попробуйте вызвать эту страницу позже (клавиша F5).</p>
</body>
</html>
<?php
      ad_WiteIP
($ad_DirName);   // Перед выходом записываем ip
      
exit;
   }else{
      
ad_WiteIP($ad_DirName);
   }
}
?>
 
Ответить с цитированием

  #4  
Старый 30.11.2009, 20:42
Аватар для Root-access
Root-access
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме:
2223440

Репутация: 648
Отправить сообщение для Root-access с помощью ICQ
По умолчанию

Вот хороший антиддос-скрипт от S(ript'а, админа xaknet.ru:

PHP код:
<?php
/*
.##.....##....###....##....##.##....##.########.########
..##...##....##.##...##...##..###...##.##..........##...
...##.##....##...##..##..##...####..##.##..........##...
....###....##.....##.#####....##.##.##.######......##...
...##.##...#########.##..##...##..####.##..........##...
..##...##..##.....##.##...##..##...###.##..........##...
.##.....##.##.....##.##....##.##....##.########....##...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@comment - При использовании кусков или полного исходного кода, авторство указывать обязательно
@author - S(r1pt
@version - 1.2
@date - 27.11.2009
*/
class antiDdos
{
    
// дебаг
    
public $debug false;
    
// директория для хранения файлов индефикации запросов
    
public $dir '_bots/';
    
// номер icq администратора
    
public $icq '123456';
    
// сообщение при выключенном сайте
    
public $off_message 'Временные неполадки, пожалуйста, подождите.';
    
// индивидуальный индефикатор
    
private $indeficator null;
    
// сообщение при бане, работают шаблоны, можно использовать - {ICQ}, {IP}, {UA}, {DATE}
    
public $ban_message 'Вы были заблокированы antiddos системой.
                           Если это ошибка обратитесь к администратору, icq of admin: {ICQ}
                           <hr>(c)XakNet antiddos module, ваш IP - {IP}(<i>{UA}</i>), date - {DATE}'
;
    
// команда выполнения бана в файрволле
    
public $exec_ban 'iptables -A INPUT -s {IP} -j DROP';
    
// тип защиты от ддоса:
    /* Возможные значения $ddos 1-5: 
    | 1. Простая проверка по кукам, по умолчанию(рекомендую)   
    | 2. Двойная проверка через $_GET antiddos и meta refresh   
    | 3. Запрос на авторизацию WWW-Authenticate   
    | 4. полное отключение сайта, боты не блокируются!!!   
    | 5. выключать сайт если нагрузка слишком большая на сервере, боты не блокируются!!!   
    */ 
    
var $ddos 1;
    
// часть домена поисковых ботов, см strpos()
    
private $searchbots = array('googlebot.com''yandex.ru''ramtel.ru''rambler.ru''aport.ru''sape.ru''msn.com''yahoo.net');
    
// временная переменные нужные для работы скрипта
    
private $attack false;
    private 
$is_bot false;
    private 
$ddosuser;
    private 
$ddospass;
    private 
$load;
    public 
$maxload 80;
    
    function 
__construct($debug)
    {
        @
session_start() or die('session_start() filed!');
        
$this->indeficator md5(sha1('botik' strrev(getenv('HTTP_USER_AGENT'))));
        
$this->ban_message str_replace(array('{ICQ}''{IP}''{UA}''{DATE}'), 
                                         array(
$this->icq$_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'], date('d.m.y H:i')),
                                         
$this->ban_message
                                        
);
        if (
eregi(ip2long($_SERVER['REMOTE_ADDR']), file_get_contents($this->dir 'banned_ips')))
            die(
$this->ban_message);
        
$this->exec_ban str_replace('{IP}'$_SERVER['REMOTE_ADDR'], $this->exec_ban);
        
$this->debug $debug;
        if(!
function_exists('sys_getloadavg'))
        {
            function 
sys_getloadavg()
            {
                return array(
0,0,0);
            }
        }
        
$this->load sys_getloadavg();
        if(!
$this->sbots())
        {
            
$this->attack true;
            
$f fopen($this->dir ip2long($_SERVER["REMOTE_ADDR"]), "a"); 
            
fwrite($f"query\n"); 
            
fclose($f); 
        }
    }
    
    
/**
    * Старт работы антиддоса
    **/
    
function start()
    {
        if(
$this->attack == false)
            return;
        switch(
$this->ddos)
        {
            case 
1:
                
$this->addos1();
                break;
            case 
2:
                
$this->addos2();
                break;
            case 
3:
                
$this->ddosuser substr(ip2long($_SERVER['REMOTE_ADDR']), 04);
                
$this->ddospass substr(ip2long($_SERVER['REMOTE_ADDR']), 4strlen(ip2long($_SERVER['REMOTE_ADDR'])));
                
$this->addos3();
                break;
            case 
4:
                die(
$this->off_message);
                break;
            case 
5:
                if (
$this->load[0] > $this->maxload
                {
                    
header('HTTP/1.1 503 Too busy, try again later'); 
                    die(
'<center><h1>503 Server too busy.</h1></center><hr><small><i>Server too busy. Please try again later. Apache server on ' $_SERVER['HTTP_HOST'] . ' at port 80 with <a href="http://forum.xaknet.ru/">ddos protect</a></i></small>'); 
                } 
                break;
            default:
                break;
        }
        if (
$_COOKIE['ddos'] == $this->indeficator
            @
unlink($this->dir ip2long($_SERVER["REMOTE_ADDR"])); 
    }
    
    
/**
    * Функция проверяет не является ли клиент поисковым ботом
    **/
    
function sbots()
    {
        
$tmp = array();
        foreach(
$this->searchbots as $bot)
        {
            
$tmp[] = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), $bot) !== false;
            if(
$tmp[count($tmp) - 1] == true)
            {
                
$this->is_bot true;
                break;
            }
        }
        return 
$this->is_bot;
    }
    
    
/**
    * Функция бана
    **/
    
private function ban()
    {
        if (! 
system($this->exec_ban))
        { 
            
$f fopen($this->dir 'banned_ips'"a"); 
            
fwrite($fip2long($_SERVER['REMOTE_ADDR']) . '|'); 
            
fclose($f); 
        }
        die(
$this->ban_message); 
    }
    
/**
    * Первый тип защиты
    **/
    
function addos1()
    {
        if (empty(
$_COOKIE['ddos']) or !isset($_COOKIE['ddos'])) 
        { 
            
$counter = @file($this->dir ip2long($_SERVER["REMOTE_ADDR"]));
            
setcookie('ddos'$this->indeficatortime() + 3600 24 356); // ставим куки на год.
            
if (count($counter) > 10) { 
                if (! 
$this->debug)
                    
$this->ban(); 
                else 
                    die(
"Блокированы."); 
            } 
            if (! 
$_COOKIE['ddos_log'] == '1'
            { 
                if (! 
$_GET['antiddos'] == 1
                { 
                    
setcookie('ddos_log''1'time() + 3600 24 356); //чтоб не перекидывало постоянно рефрешем. 
                    
if(headers_sent())
                        die(
'Header already sended, check it, line '.__LINE__);
                    
header("Location: ./?antiddos=1"); 
                } 
            } 
        } elseif (
$_COOKIE['ddos'] !== $this->indeficator
        { 
            if (! 
$this->debug
                
$this->ban(); 
            else 
                die(
"Блокированы."); 
        } 
    }
    
    
/**
    * Второй тип защиты
    **/
    
function addos2()
    {
        if (empty(
$_COOKIE['ddos']) or $_COOKIE['ddos'] !== $this->indeficator
        {
            if (empty(
$_GET['antiddos'])) 
            { 
                if (! 
$_COOKIE['ddos_log'] == '1'
                    
//проверям есть ли запись в куках что был запрос 
                    
die('<meta http-equiv="refresh" content="0;URL=?antiddos=' $this->indeficator '" />'); 
            } elseif (
$_GET['antiddos'] == $this->indeficator
            { 
                
setcookie('ddos'$this->indeficatortime() + 3600 24 356); 
                
setcookie('ddos_log''1'time() + 3600 24 356); //типо запрос уже был чтоб не перекидывало постоянно рефрешем. 
            

            else 
            { 
                if (!
$this->debug
                    
$this->ban(); 
                else 
                { 
                    echo 
"May be shall not transform address line?"
                    die(
"Блокированы."); 
                } 
            } 
        } 
    }
    
    
/**
    * Третий тип защиты
    **/
    
function addos3()
    {
        if (! isset(
$_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] !== $this->ddosuser || $_SERVER['PHP_AUTH_PW'] !== $this->ddospass
        { 
            
header('WWW-Authenticate: Basic realm="Vvedite parol\':  ' $this->ddospass ' | Login: ' $this->ddosuser '"'); 
            
header('HTTP/1.0 401 Unauthorized'); 
            if (! 
$this->debug
                
$this->ban(); 
            else  
                die(
"Блокированы."); 
            die(
"<h1>401 Unauthorized</h1>"); 
        }
    }
}
/*
// Exmaple
$ad = new antiDdos(false);
$ad->dir = 'bots/';
$ad->ddos = 2;
$ad->start();
*/
?>
 
Ответить с цитированием

НЕкие скрипты для защиты !
  #5  
Старый 05.01.2010, 21:13
Аватар для SoftLive
SoftLive
Познающий
Регистрация: 20.12.2009
Сообщений: 33
Провел на форуме:
206864

Репутация: 40
Отправить сообщение для SoftLive с помощью ICQ
По умолчанию НЕкие скрипты для защиты !

В этом топике постараюсь вам показать несколько скриптов, которые способны защитить от среднего HTTP флуда.


Начнём.

Первый, самый лёгкий скрипт, но даёт результат:

Код:
### security protection ::: ANTIDDOS ###

$google=false;
if(eregi("googlebot",$_SERVER['HTTP_USER_AGENT']))$google=true;
if(eregi("yandexbot",$_SERVER['HTTP_USER_AGENT']))$google=true;

$nn = md5("837sgsa".$_SERVER['REMOTE_ADDR']);
if (!isset($_COOKIE[$nn]) && FILE!=="/announce.php" && $google==false)
{
	if (isset($_POST[$nn])){
		setcookie($nn, "yes");
		header("Location: http://google.com".$_SERVER['REQUEST_URI']);exit;
	}
	echo "<html><body><form id=\"f\" action=\"http://google.com".$_SERVER['REQUEST_URI']."\" method=\"post\"><input type=\"hidden\" name='".$nn."' value='a'><script>document.getElementById('f').submit();</script><input type=\"submit\" value='Continue'></form></body></html>";
	die();
}
### security protection ::: ANTIDDOS ###

Скрипты будут ещё выкладываться.

Этот скрипт защищает немного сайт.. Пробовал ддосить сайт с обычной проги ламерской, не прошло
 
Ответить с цитированием

  #6  
Старый 05.01.2010, 21:34
Аватар для zythar
zythar
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме:
1595333

Репутация: 291


Отправить сообщение для zythar с помощью ICQ
По умолчанию

Цитата:
eregi(...)
относится как к eregi, так и к ereg:

Цитата:
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
 
Ответить с цитированием

  #7  
Старый 19.02.2010, 14:34
Аватар для ReanimatoR
ReanimatoR
Участник форума
Регистрация: 27.08.2006
Сообщений: 223
Провел на форуме:
2154209

Репутация: 341
Отправить сообщение для ReanimatoR с помощью ICQ
По умолчанию

http://www.vbulletin.org/forum/showthread.php?t=221739
Vbulletin antiddos.
 
Ответить с цитированием

  #8  
Старый 18.03.2010, 22:53
Аватар для CuCbKa
CuCbKa
Познающий
Регистрация: 14.02.2010
Сообщений: 95
Провел на форуме:
297862

Репутация: 49
Отправить сообщение для CuCbKa с помощью ICQ
По умолчанию

пользы от них 000, если честно!
 
Ответить с цитированием

  #9  
Старый 06.05.2010, 19:56
Аватар для Dark~Angel
Dark~Angel
Новичок
Регистрация: 25.04.2010
Сообщений: 16
Провел на форуме:
40951

Репутация: 0
По умолчанию

Цитата:
Сообщение от CuCbKa  
пользы от них 000, если честно!
Если руки прямые то польза есть!Ибо мой сервер ддосили раза 4 и провал!!!
 
Ответить с цитированием

  #10  
Старый 21.05.2010, 04:44
Аватар для ReduKToR
ReduKToR
Постоянный
Регистрация: 05.01.2009
Сообщений: 684
Провел на форуме:
3281634

Репутация: 485


Отправить сообщение для ReduKToR с помощью ICQ
По умолчанию

Цитата:
Сообщение от CuCbKa  
пользы от них 000, если честно!
Цитата:
Сообщение от Dark~Angel  
Если руки прямые то польза есть!Ибо мой сервер ддосили раза 4 и провал!!!
Смотря, что ты понимаешь под пользой.Если систему,которая будет блокировать сильно активные IP адреса и недопускать их до всего сайта, то очень даже хорошо помогают.

А если ты ожидал,что одним скриптиком упасаешься от 100м\бит'ной Ddos атаки, то видимо тебе они и вправду некчему.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Услуги-Цены детские option О Работе 17 10.05.2009 20:35
PHP скрипты любой сложности, модули, компоненты для CMS, Верстка. DIAgen О Работе 1 18.02.2009 17:31
не работают скрипты zeppe1in PHP, PERL, MySQL, JavaScript 6 19.08.2006 20:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ