Спамеры атакуют - как за раз убить или перенести все посты с одного IP? Тема решена

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

Доброго времени суток!
Какой-то недоброжелатель напостил спаму в мой форум. Сообщений триста, все с одного IP.
С помощью phpMyAdmin я полезла в таблицу phpbb_posts и нашла там все спамные сообщения.
Я попробовала менять у этих сообщений topic_id и forum_id, чтобы перенести сообщения в специальную ветку (назовём эту специальную ветку "накопительной").
При таком способе возникают следующие проблемы:
1. Если есть спамный топик с одним спамным сообщением, то топик остаётся, но когда в него заходишь, то сообщений нет. То есть остаётся "фантомный" топик без постов внутри.
2. В накопительной ветке спамное сообщение с изменённым topic_id и forum_id появляется, но оно замещает собой последнее сообщение в этой ветке.
Например: в накопительной ветке было 25 сообщений. Переносим в эту ветку спамное сообщение, изменив topic_id и forum_id. В накопительной ветке спамное сообщение встаёт на 25-е место, а предыдущего 25-го сообщения не видно, оно как бы замещается на спамное сообщение.
При изменении topic_id и forum_id всё правильно возвращается на место.
Подскажите пожалуйста, как быстро и корректно перенести постинги в нужную ветку?
Спасибо!
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 4 месяца
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение владимир1983 »

Используй штатные средства для очистки форума после атаки. Админ раздел > Пользователи и группы > Очистка списка пользователей
Можно удалить всех пользователей за определенное время с их сообщениями.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

Вариант первый и правильный. Удалите пользователя, выбрав при удалении опцию Удалить сообщения
Вариант второй, хлопотный. В модераторском разделе выбрать в теме ненужные сообщения и удалить их.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

Господа, вопрос в том, как удалить посты с IP-адреса!

Штатными средствами нельзя - у меня на форуме разрешены анонимные сообщения без регистрации на форуме с капча-защитой.

Нужен способ нормально всё удалить SQL-запросом напрямую в базе.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

Одним запросом это невозможно.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

Одним запросом можно запросто перенести все посты в нужную тему!
Однако возникает проблема - смотри два вопроса из первого поста.
Для меня не проблема в текстовом редакторе подготовить нужные запросы.
Вопрос - в каких таблицах и что ещё нужно крутить?
Например, в таблице phpbb_topics я могу убить "фантомные" топики по topic_id. Этого будет достаточно?
Кто знает, в каких таблицах и что надо крутить?
Исходный пункт: я фильтрую все посты из таблицы phpbb_posts по IP-адресу и получаю post_id, topic_id и forum_id спамных сообщений.
Спасибо!
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

Проще написать скрипт, который вычислит все сообщения по определенному IP, и потом удалит их, использую встроенную функцию phpBB delete_post()
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

Скрипты для phpBB - для меня тёмный лес. Более менее дружу с phpMyAdmin и SQL запросами.

Но нужно точно знать, как записаны данные в таблицах phpBB.

Возвращаясь к моим пунктам:

1. Если есть спамный топик с одним спамным сообщением, то топик остаётся, но когда в него заходишь, то сообщений нет. То есть остаётся "фантомный" топик без постов внутри.

Тут вроде могу удалить из таблицы phpbb_topics известные topic_id. Не знаю, будет ли этого достаточно...

2. В накопительной ветке спамное сообщение с изменённым topic_id и forum_id появляется, но оно замещает собой последнее сообщение в этой ветке.

А что с этим делать, пока совсем непонятно.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

servina писал(а): но оно замещает собой последнее сообщение в этой ветке
Потому что при штатном удалении затрагивается еще и таблица forums, поля
  • forum_last_post_id
  • forum_last_poster_id
  • forum_last_post_subject
  • forum_last_post_time
  • forum_last_poster
и др
Таблица topicsменяются
  • topic_last_post_id
  • topic_last_poster_id
  • topic_last_poster_name
и др.
То есть это нужно вычислять и менять. Вручную это не так-то просто.
Sheer писал(а): Проще написать скрипт
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

На сколько я понимаю, эти все last_post_id только для косметического эффекта - чтобы в списке тем и форумов показывать аннотацию на последний топик, кто его написал и т.д.
Но вот почему
2. В накопительной ветке спамное сообщение с изменённым topic_id и forum_id появляется, но оно замещает собой последнее сообщение в этой ветке.

???
Отправлено спустя 4 минуты 44 секунды:
Хорошо, а как написать phpbb-скрипт и куда его засунуть?
Я могу определить все неугодные мне post_id.
Потом мне надо сделать что-то типа move_post(post_id, накопительная_тема_topic_id)
Как это сделать?
Более того, я могу даже не писать циклы, а тупо в текстовом редакторе сделать триста строк с вызовом move_post(...) и как-то вызвать скрипт.
Как это сделать и есть ли функция move_post()?
Спасибо.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

servina писал(а): эти все last_post_id только для косметического эффекта
Нет. Это чтобы не было такого эффекта.
servina писал(а): оно замещает собой последнее сообщение в этой ветке
Ну и статистика должна правильно отображаться. Поэтому вносятся изменения еще и в таблицу config
И прекратите пихать пустые абзацы. Задолбался править я ваши посты :evil:
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

Не понимаю логики использования.
У поста есть post_id, topic_id и forum_id
Значит по селекту всегда можно показать все посты из одной темы. Зачем ему знать, например, last_post_id, чтобы показать все посты темы?
К тому же, если бы выборка постов к теме ограничивалась по last_post_id, то спамное сообщение в накопительном топике не появлялось бы вообще. А оно появляется, да ещё и заменяет оригинальное последнее сообщение из топика.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

Женская логика - дело смутное.
servina писал(а): Хорошо, а как написать phpbb-скрипт и куда его засунуть?
В корневую папку. Начните для начала так

Код: Выделить всё

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$ip = '127.11.0'; // Use needed IPs

$sql = 'SELECT post_id, topic_id, forum_id
    FROM ' . POSTS_TABLE . '
    WHERE poster_ip LIKE \'' . $ip . '\'';

$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result))
{
    $rowset[] = $row;
}
$db->sql_freeresult($result);
print "<pre>"; print_r($rowset);print "</pre>"; 
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

О спасибочки!
Как я поняла, этот скрипт выведет мне список всех post_id, topic_id, forum_id с заданным IP?
Куда поместить скрипт? В каталог, куда phpbb установлен?
В корневую папку не могу. Форум находится в /home/servina/forum.
Писать могу максимум в /home/servina/.

Отправлено спустя 8 минут 57 секунд:
Так Вы имели ввиду php-скрипт! На php я раньше немного делала, но всё забыла :) Интересно, что в оригинальных скриптах написано:
$user->setup('viewforum');
а вы мне предлагаете просто
$user->setup();
Сейчас попробую запустить.

Отправлено спустя 6 минут 12 секунд:
Ну отличненько всё получилось:

Код: Выделить всё

Array
(
    [0] => Array
        (
            [post_id] => 10807
            [topic_id] => 576
            [forum_id] => 7

и т.д.
Отправлено спустя 8 минут 8 секунд:
Теперь видимо надо циклик соорудить и переместить все найденные post_id в нужный topic_id.
Не поможете, пожалуйста?
Последний раз редактировалось Sheer 31.10.2015 18:00, всего редактировалось 1 раз.
Причина: bb-код
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

Предварительно отключите конференцию и сделайте полную резервную копию базы данных!!!

Код: Выделить всё

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$ip = '127.11.0'; // Use needed IPs
$rowset = array();
$sql = 'SELECT
    f.forum_id,
    t.topic_first_post_id, t.topic_last_post_id,t.topic_replies_real, t.topic_approved, t.topic_type,
    p.post_id, p.topic_id, p.post_time, p.poster_id, p.post_postcount, p.post_reported, p.post_postcount, p.post_approved
    FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f, ' . USERS_TABLE . ' u
    WHERE p.poster_ip LIKE \'' . $ip . '\'
    AND t.topic_id = p.topic_id
    AND u.user_id = p.poster_id
    AND f.forum_id = t.forum_id';

$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result))
{
    $rowset[] = $row;
}
$db->sql_freeresult($result);
if (sizeof($rowset))
{
    foreach($rowset as $data)
    {
        delete_post($data['forum_id'], $data['topic_id'], $data['post_id'], $data);
        print "Post " . $data['post_id'] . " deleted<br />";
    }
}
else
{
    print "Posts from IP $ip not found<br />";
}
Отправлено спустя 1 минуту 26 секунд:
servina писал(а): $user->setup('viewforum');
Так помимо языкового файла common.php подключается еще viewforum.php
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Вернуться в «Поддержка phpBB 3.0.х»