Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.LINUX
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.LINUX с датами от 24 Jan 02 06:01:34 до 23 Aug 24 12:51:58, всего сообщений: 8555
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 3817 из 8555 ========================================= RU.LINUX =
От   : Maxim Romanenkov                 2:5020/570.35      01 Feb 17 07:29:40
Кому : All                                                 01 Feb 17 07:29:40
Тема : помогите с SQL-запросом
FGHI : area://RU.LINUX?msgid=2:5020/570.35+58916ee9
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.LINUX?msgid=2:5030/1957+58919073
Ответ: area://RU.LINUX?msgid=2:5031/43+589495fe
==============================================================================
Привет, All!

Hикак не соображу как составить запрос в postgres-е.
Дано:
таблица "swedro" примерно следующего содержания
         rt          |   gw    |       ad       |  pt   |      dtst
---------------------+---------+----------------+-------+-----------------
 2016-09-27 15:01:13 | SO70PUB | 0.0.0.0        |  5678 | 08:10:02.118134
 2016-09-27 14:56:17 | SO70PUB | 0.0.0.0        |     0 | 08:10:02.118134
 2016-09-27 14:59:13 | SO70PUB | 0.0.0.0        |  5678 | 08:10:02.118134
 2016-09-27 14:57:15 | SO70PUB | 0.0.0.0        |     0 | 08:10:02.118134
 2016-09-27 14:59:33 | SO70PUB | 0.0.0.0        |     0 | 08:10:02.118134
 2016-09-27 14:55:11 | SO70PUB | 10.100.100.121 |  1221 | 08:10:02.118134
 2016-09-27 14:57:14 | SO70PUB | 10.100.100.121 |  1221 | 08:10:02.118134
Пояснение:
это отпарсеные строки сислогов маршрутизатора, а именно адреса атаковавших "хакеров" и порты которые они искали.

Требуется:
найти порты которые сканировал конкретный адрес, и если каждый раз это был один и тот же 23-й порт - положить в другую таблицу

Этап решения:
Адреса и порты я сгруппировал, количесво портов посчитал, а вот последний шаг - "выбрать если кол-во=1 И порт=23" не могу. Последняя мысль - сделать это через array_agg():
select
test.ad, test.freq, test.numz
from
  (
  select list.ad,count(list.pt) as freq,array_agg(list.pt) as numz
  from
   (
   select ad,pt
   from swedro
   group by ad,pt
   ) as list
  group by ad
  ) as test
where test.freq=1 AND test.numz[1]=23
order by ad;

Однако мне кажется такое решение крайне корявым, замороченным, а главное низкопроизводительным. Как составить правильный запрос?

P.S.:Полученые из этого запроса адреса планирую скармливать агентом nmap-у на предмет открытого порта 9527 (это китайский DVR) и класть в третью таблицу.

С наилучшими пожеланиями, Maxim.

--- -Natural gas is hemispheric.
* Origin: We're concerned about AIDS in our White House... (2:5020/570.35)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.063740 секунды