@Goold

Настройка обновлений для nod32 по http?

Как создать сайт обновлений для nod32

В интернете есть много сайтов но они постоянно отваливаются, хотелось бы создай свой.
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
сайты обновлений это просто зеркала нодовского сайта.

Как то я писал програмку для поиска ключей в инете и подбора их на сайт обновлений
Программа зеркала обновлений nod32
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

try:
	from urllib.request import Request, urlopen  # Python 3
except:
	from urllib2 import Request, urlopen  # Python 2
import os,re, base64
from ConfigParser import ConfigParser

keys = {}
update = ConfigParser()
update_old = ConfigParser()
#Агент для поиска ссылок и ключей
BROWSER = "Mozilla/5.0 Gecko/20100101 Firefox/36.0"
NOD32 = ""
VER="/eset_upd/update.ver"#Файл обновлений
ESET = "http://update.eset.com"#сайт
PATH = "/opt/var/nod32"#локальное зеркало
TEMP="/opt/var/nod32/tmp"
ARCH = 'unrar e {} /opt/var/nod32/tmp'#программа для извлечения rar
def find_keys(s):
	urls = re.findall(r'href=[\'"]?(http[^\'" >]+)',urlopen(Request(s,None,{"User-Agent":BROWSER})).read()) #Поиск ссылок на сайты
	urls = [x for x in list(set(urls)) if ('nigma' not in x)and
		('yandex' not in x)and
		('mail' not in x)and
		('google' not in x)and
		('yahoo' not in x)and
		('bing' not in x)]#Фильтрация всех левых сайтов
	keys = []
	for x in urls:#Поиск ключей по ссылкам
		try:
			html = urlopen(Request(x,None,{"User-Agent":BROWSER})).read()
			keys.extend(re.findall(r'\s?Username\s?:\s?([A-Z]{3,5}-[0-9]{10})\s?<\w*\s?/?><?\w?/?>?\s?Password\s?:\s?([A-Za-z0-9]{10})\s?<?',html))
		except:
			print "Error in %s"%x
	new_keys = {}
	for x in keys: #Удаление дубликатов и перестройка массива
		if not new_keys.has_key(x[0]):
			new_keys[x[0]] = x[1]
	print "Found %d keys at %s"%(len(new_keys),s)
	return new_keys
def download_ver(keys):
	global update, update_old
	err = 0
	auth = ""
	if not os.path.isdir(os.path.dirname(PATH+VER)):
		os.makedirs(os.path.dirname(PATH+VER))
	if not os.path.isdir(TEMP):
		os.makedirs(TEMP)
	for x in keys:
		auth = base64.encodestring("%s:%s"%(x,keys[x])).replace("\n","")
		try:
			verfile = open(TEMP+"/update.rar","wb")
			verfile.write(urlopen(Request(ESET+VER,None,{"User-Agent":NOD32,"Authorization":"Basic %s"%auth})).read())
			verfile.close()
			if os.path.isfile(TEMP+"/update.ver"):
				if os.path.isfile(TEMP+"/old_update.ver"):
					os.remove(TEMP+"/old_update.ver")
				os.rename(TEMP+"/update.ver",TEMP+"/old_update.ver")
			os.system(ARCH.format(TEMP+"/update.rar"))
			if os.path.isfile(TEMP+"/update.ver"):
				update.read(TEMP+"/update.ver")
			if os.path.isfile(TEMP+"/old_update.ver"):
				update_old.read(TEMP+"/old_update.ver")
			if os.path.isfile(PATH+"/update.ver"):
				os.remove(PATH+"/update.ver")
			os.rename(TEMP+"/update.rar", PATH+"/update.ver")
			print "Worked KEY: %s, %s"%(x,keys[x])
			break
		except:
			err+=1
			auth=""
	return auth
def download(sec,src,auth):
	dst = PATH+src
	if not os.path.isdir(os.path.dirname(dst)):
		os.makedirs(os.path.dirname(dst))
	try:
		file = open(dst, "wb")
		print "Loading[%s]: %s"%(sec, src)
		file.write(urlopen(Request(ESET+src,None,{"User-Agent":NOD32,"Authorization":"Basic %s"%auth})).read())
		file.close
	except:
		print "Error loading %s with %s"%(src,auth)

search = ["http://nigma.ru/?s=nod32+keys+Username+Password",
		"http://yandex.ru/yandsearch?text=nod32+keys+Username+Password",
		"https://www.google.com/search?q=nod32+keys+Username+Password"]
for s in search:
	keys = find_keys(s)
	if len(keys) > 0:
		break
if len(keys) == 0:#если не нашлось - возьмем из файла
	if os.path.isfile(PATH+"/keys.txt"):
		keyfile = open(PATH+"/keys.txt", "r")
		for x in keyfile:
			k = x.replace('\r\n','').split(',')
			keys[k[0]] = k[1]
		keyfile.close()
	else:
		print "Create KEY file: %s \nUsername,Password"%(PATH+"/keys.txt")
else:
	keyfile = open(PATH+"/keys.txt", "w")
	for x in keys:
		keyfile.write("%s,%s\r\n"%(x,keys[x]))
	keyfile.close()
if len(keys) > 0:
	key = download_ver(keys)
	print "Downloading:"
	for n in update.sections(): #Скачивание файлов
		if (update.has_option(n,'file'))and(not update_old.has_section(n) or (update_old.has_section(n) and update.get(n,'file') != update_old.get(n,'file')) or (not os.path.isfile(PATH+update.get(n,'file'))))and(not update.has_option(n,'language') or update.get(n,'language') == '1049') :
			if (update_old.has_section(n) and (os.path.isfile(PATH+update_old.get(n,'file')))):
				os.remove(PATH+update_old.get(n,'file'))
				if os.path.isdir(os.path.dirname(PATH+update_old.get(n,'file'))) and len(os.listdir(os.path.dirname(PATH+update_old.get(n,'file')))) == 0:
					os.rmdir(os.path.dirname(PATH+update_old.get(n,'file')))
				print("Removing[%s]: %s"%(n,update_old.get(n,'file')))
			if not os.path.isfile(PATH+update.get(n,'file')):
				download(n, update.get(n,'file'), key)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы