Защита от подмены версии.

main
none 9 months ago
parent ea25db1c3e
commit e850abfc60

@ -5,7 +5,7 @@ from requests import get
import os import os
from random import randint from random import randint
# Работа с архивами # Работа с архивами
from shutil import unpack_archive from shutil import unpack_archive, copytree, rmtree
# Убираем ненужное (../some => some) # Убираем ненужное (../some => some)
from re import compile, sub from re import compile, sub
# Работа с БД и json # Работа с БД и json
@ -165,19 +165,39 @@ def client(port, op = "ping"):
else: else:
okay = verify(f"verify/{site}.zip", f"verify/{site}.pem", f"verify/{site}.sig") okay = verify(f"verify/{site}.zip", f"verify/{site}.pem", f"verify/{site}.sig")
# Распаковываем архив с сайтом
unpack_archive(f"verify/{site}.zip", f"verify/{site}")
# Вторичная проверка версии если сайт в кэше
# (мало ли какие гении нехорошие появятся)
if os.path.exists(f'cached/{site}'):
# Версия полученного
dest_conf = read(f"verify/{site}/config.json")
dest_ver = dest_conf["ver"]
# Версия нашего сайта
our_conf = read(f"cached/{site}/config.json")
our_ver = our_conf["ver"]
# Если версия не новее - злоумышленник
if our_ver >= dest_ver:
print("[!] Обнаружена подмена версии сайта.")
# Сохраняем ключ злоумышленника
os.replace(f"verify/{site}.pem", f"verify/{site}.pem.FAKE")
print(f"[!] Порт злоумышленника: {port}")
if okay: if okay:
# Перемещаем файлы, т.к. всё хорошо # Перемещаем файлы, т.к. всё хорошо
os.replace(f"verify/{site}.zip", f"cached/{site}.zip") os.replace(f"verify/{site}.zip", f"cached/{site}.zip")
os.replace(f"verify/{site}.sig", f"cached/{site}.sig") os.replace(f"verify/{site}.sig", f"cached/{site}.sig")
os.replace(f"verify/{site}.pem", f"cached/{site}.pem") os.replace(f"verify/{site}.pem", f"cached/{site}.pem")
# Распаковываем архив с сайтом # Переносим папку с файлами
unpack_archive(f"cached/{site}.zip", f"cached/{site}") copytree(f"verify/{site}", f"cached/{site}")
rmtree(f"verify/{site}")
else: else:
print("[!] Обнаружена подмена сайта.") print("[!] Обнаружена подмена сайта.")
# Сохраняем ключ злоумышленника # Сохраняем ключ злоумышленника
os.replace(f"verify/{site}.pem", f"verify/{site}.pem.FAKE") os.replace(f"verify/{site}.pem", f"verify/{site}.pem.FAKE")
print(f"[!] Порт злоумышленника: {port}") print(f"[!] Порт злоумышленника: {port}")
print(f"[!] Ключ злоумышленника сохранён в verify/{site}.pem.FAKE\n") print(f"[!] Ключ (вероятно) злоумышленника сохранён в verify/{site}.pem.FAKE\n")
# Удаляем фальшивые файлы # Удаляем фальшивые файлы
os.remove(f"verify/{site}.zip") os.remove(f"verify/{site}.zip")
os.remove(f"verify/{site}.sig") os.remove(f"verify/{site}.sig")

Loading…
Cancel
Save