Согласно требованиям безопасности, да и просто здравой логике, любые мало-мальски важные данные нужно прятать под матрас шифровать, а пренебрежительное отношение, как показывает практика, касательно приватности данных приводит пусть и не к самым суровым репрессиям, но все же последствиям весьма неприятным; это — простительно рядовым пользователям, но никак не системным администраторам, программистам и уж тем более специалистам с именем — как ни как на кону репутация.
А началось все с изучения API не нуждающегося в представлении сервиса VirusTotal, с которым стал интегрировать некоторые из своих утилит Марк Руссинович. Прочтя документацию, мне стало любопытно насколько защищен ключ «вшиваемый» Руссиновичем в свои утилиты. Но к моему удивлению и разочарованию одновременно ключ никак не защищен.
>>> from os import name, path, system
>>> #просто для удобства
>>> def cls(): system('cls' if name == 'nt' else 'clear')
...
>>> #где сидит фазан?
>>> sig = path.abspath('sigcheck.exe')
...
>>> from re import compile, findall
>>> with open(sig, 'rb') as fs:
... buf = fs.read()
...
>>> #длина ключа 64 символа
>>> for i in compile('[\x20-\x7E]{64,}').findall(buf.decode('ascii', 'replace')): print(i)
...
Вообще, идея проверить наличие незашифрованного ключа по его длине была спонтанной. С другой стороны, можно ли однозначно утверждать, что:
>>> key = compile('[\x20-\x7E]{64,}').findall(buf.decode('ascii', 'replace'))[3]
и есть ключ? Просто проверяем подстановкой.
>>> cls()
...
>>> from urllib.parse import urlencode
>>> from urllib.request import urlopen
>>>
>>> par = {'resource':'habrahabr.ru', 'apikey':key}
>>> with urlopen('http://ift.tt/19OIsAw', bytes(urlencode(par), 'utf8')) as req:
... json = req.read()
...
>>> #парсим полученные данные
>>> from json import loads
>>> loads(str(json, 'utf8'))['positives']
1
Да ладно! Глянем результаты сканирования.
>>> res = loads(str(json, 'utf8'))['scans']
>>> for i in sorted(res): print("%-27s%s" % (i, res[i]['result']))
...
Впрочем, я отвлекся от основной темы.
Со всем этим я обратился к самому господину Руссиновичу, но никакой реакции, за исключением деактивации возможности оставлять комментарии к результатам сканирования с данного ключа, не последовало. Что в общем-то логично: какой смысл шифровать уже вскрытый ключ? Впрочем, даже смена ключа ни к чему не обязывает, если вникнуть в то, как именно он генерируется, но это уже тема отдельного разговора.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий