Netstalking FTP scanner/parser/grabber https://t.me/netstalking_ftp2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Jan e588f6eee5 Изменить 'client/install.sh' 2 years ago
client Изменить 'client/install.sh' 2 years ago
server prod updates 2 years ago
shared moved from gitlab 2 years ago
tests moved from gitlab 2 years ago
.gitignore moved from gitlab 2 years ago
README.md Изменить 'README.md' 2 years ago

README.md

Netstalking FTP parser

Концепция

Парсер состоит из двух частей: сервера и клиента.

Клиентов может быть неограниченное количество, они сканируют сеть с помощью Masscan и отдают результаты серверу.

Сервер один, он хранит в себе информацию о просканированных IP-адресах, раздаёт списки IP для сканирования клиентам, скачивает изображения и загружает их в канал в Telegram.

Разделение было произведено для простоты установки, исключения повторений и поддержания всей системы в работоспособности:

  • логика генерации "случайных" IP в одном месте, поэтому повторов минимум;
  • для увеличения количества результатов достаточно скачать и установить клиент, в конфиге прописан сервер по умолчанию.

Ниже приведены инструкции по установке.

Клиент

Директория client.

Если вы собрались себе устанавливать сканер, то читать с этого момента.

Установка

Скачать архив с исходнным кодом: ссылка.

Распаковать, зайти в директорию client в консоли.

Если у вас debian-like операционная система, то выполнить скрипт:

sudo ./install.sh

Он устанавливает masscan и прописывает текущему пользователю разрешения для запуска masscan под root (чтобы работать с сырыми пакетами). Также скрипт устанавливает Python3 и pip.

Если у вас другая ОС, то необходимо выполнить эти шаги самостоятельно, в будущем инструкция может быть дополнена.

Затем необходимо установить библиотеки Python под текущего пользователя:

pip3 install -r requirements.txt

Запуск

./main.py

Все настройки по умолчанию прописаны в config.py, они рабочие. При необходимости можно скорректировать, руководствуясь комментариями в файле.

Как читать консоль

[/] FOUND 100/2, CHECK 3/4, CONN/SCAN 20/4, CACHE 1%

Пример выше означает, что:

  • на текущем диапазоне нашлось 100 IP с открытым 21 портом
  • всего за время работы программы нашлось 2 изображения
  • 3 IP только что попало в проверку
  • 4 IP в очереди на отправку на сервер для проверки, что они уже сканились
  • с 20 IP сейчас происходит попытка соединения по 21 порту
  • 4 FTP-сервера сейчас сканируются на наличие изображений
  • 1% кэша в клиенте заполнен

Сервер

Директория server.

Установка

Установить docker и docker-compose по официальной документации.

После этого:

git clone https://git.netwhood.online/NIAC/ftp_grabber.git

cd server && docker-compose build

Приватный ключ для Tor-хоста, который будет веб-интерфейсом сервера, сгенерируется автоматически при первом запуске. При этом название хоста отобразится в консоли контейнера tor в строке вида Entrypoint INFO web: qwertyuiop.onion:80.

Также ключ можно сгенерировать для своего хоста и положить вручную в файл server/tor/web/private_key.

Смену пароля необходимо производить в config.py и docker-compose.yml.

Внимание: контейнер web, из которого производится постинг в Telegram, не ожидает блокировок.

Запуск

docker-compose up [-d]

После этого в контейнере mongo необходимо создать пользователя следующими командами:

use ftp
db.createUser({ user: 'root', pwd: 'so95hg%835w!ij', roles: [ { role: "readWrite", db: "ftp" } ] })

Другое

Восстановить права на директорию tor (например, для пересборки образа):

sudo chown $(whoami) tor -R

Тестирование

pytest

TODO

  • Batch Mongo check + local cache

  • Ручка для обновления конфига сервером

  • Прокидывание постинга через контейнер Tor

  • Скачивание пикчи через Tor

  • Автоматическое обновление клиентов