По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Мы продолжаем изучать один из важнейших протоколов IP телефонии H.323 и в сегодняшней статье рассмотрим возможные сценарии установления соединения, а также углубимся в суть сигнальных сообщений, использующихся в данном протоколе. Итак, что же происходит прежде чем Вы слышите в трубке голос собеседника, когда соединяетесь по H.323? Давайте рассмотрим временную диаграмму установления и разъединения связи между парой терминалов под управлением привратника. Для простоты восприятия, сигнальные сообщения протоколов выделены разными цветами. Как видно из диаграммы на первом этапе установления соединения (SETUP) работают протоколы RAS (Registration, Admission, Status) и H.225.0 . Терминал 1 по протоколу RAS посылает Привратнику сообщение ARQ (Admission Request), которое содержит информацию о вызываемом абоненте и требования к пропускной способности будущей сессии. Привратник отвечает сообщением ACF (Admission Confirmation), содержащее номер порта TCP для будущего сигнального канала. Получив номер порта, Терминал 1 инициирует установление TCP-сессии, и, по протоколу H.225.0, посылает сообщение SETUP Терминалу 2. Стоит напомнить, что SETUP, как и все остальные сообщения протокола H.225.0, является разрешенным для использования в VoIP сообщением протокола Q.931, использующегося в ISDN. SETUP содержит такую информацию как IP адрес, порт и alias, вызываемого абонента. Alias – это адрес по формату напоминающий e-mail адрес, в первой части которого находится уникальный идентификатор терминала, а во второй имя домена, которому он принадлежит, например: alex@merionet.ru или 192.168.1.32@merionet.ru . Терминал 2 отвечает сообщением CALL PROCEEDING, означающее, что все данные получены. Для того, что бы взаимодействовать с Привратником Терминал 2 также проходит процедуру регистрации, обмениваясь сообщениями ARQ и ACF. Наконец, по протоколу H.225 (Q.931 ) Терминал 2 посылает вызывающей стороне сообщение ALERTING. В этот момент вызывающий абонент слышит контроль посылки вызова. Согласование Далее начинается фаза согласования дополнительных параметров с использованием протокола H.245, информация которого передаются внутри сообщений FACILITY протокола H.225.0. Протокол H.245 осуществляет следующие процедуры: Определение ведущего и ведомого сессии (Master/Slave Determination). Данное определение выявляет какой из терминалов будет решать потенциальные разногласия. Например в случае несогласования какого-либо параметра ведущий (Master) может этот параметр отклонить. Согласование функциональных возможностей терминалов (Terminal Capability Set) Терминалы обмениваются списком поддерживаемых аудио и видео кодеков. Ведущий выбирает по какому кодеку будет проходить вызов. Открытие логических каналов (Open Logical Channel) Окончательное согласование всех необходимых параметров будущей RTP – сессии перед ее непосредственным открытием. После того как все параметры согласованы и абонент Терминала 2 принимает вызов, в сторону вызывающего терминала отсылается сообщение CONNECT. На этом фаза установления соединения заканчивается и начинается фаза разговора. Между терминалами устанавливается RTP/RTCP – сессия и начинается обмен речевой информацией. Далее абонент Терминала 2 инициирует завершение соединения, посылкой сообщений CloseLogicalChannel и EndSessionCommand, на что получает соответствующие CLC ACK и ESC ACK от Терминала 1. Далее по протоколу H.225.0 соединение закрывается окончательно сообщением RELEASE COMPLETE. Терминалы, по протоколу RAS, извещают Привратник об освобождении ресурсов сообщениями DRQ Disenagae Request. Привратник подтверждает освобождение полосы пропускания сообщением Disengage Confirmation. H.323 был одним из первых протоколов IP – телефонии, поэтому понимание принципов его работы является крайне важным фактором при изучении более новых и современных протоколов VoIP.
img
Начиная с 2013 года по планете Земля начали свое победное шествие программы шифровальщики, требующие выкуп. Начал этот злостный хайп шифровальщик Cryptolocker, а затем были слышны такие громкие имена как Petya, NotPetya, WannaCry и иже с ними. Мы хотели бы показать и объяснить механизмы работы подобного вида зловредного ПО, так как первичный источник заражения в организации обычно одинаковый и являет собой спам письмо – ниже, в последовательных шагах объясним, как, почему и зачем ОНО это делает. Само заражение, подробно и без приукрас. Конечный пользователь получает письмо как-будто бы от его начальника, в котором находится ссылка на популярный облачный сервис - Битрикс24, Salesforce, ZenDesk и так далее. По ссылке открывается окно браузера и направляет пользователя на сайт, который выглядит вполне нормально и являет собой лэндинг для эксплойт кита. До загрузки страницы, веб-сервер, на котором находится эксплойт-кит, начинает коммуникацию с компьютером жертвы и пытается понять какая версия Java используется для использования эксплойта в уязвимой версии. Когда кто получает подтверждение уязвимости конкретной версии, эксплойт начинает свою работу и, в случае успеха, он загружает на рабочую станцию некий .EXE файл, и он начинает выполняться. Экзешник создаёт дочерний процессы, который включает в себя процесс vssadmin.exe (теневую копию). Данный процесс удаляет имеющиеся теневые копии на компьютере жертвы и создаёт новые. Теневые копии, создаваемые самой ОС Windows, позволяют восстановить информацию - и поэтому WannaCry всеми силами пытается снизить вероятность восстановления файлов. Далее WannaCry использует исполняемый PowerShell файл для распространения своих копий по системе и запускает шифрование файлов с определенными расширениями. Дочерний процесс powershell.exe создает ещё три копии оригинального зловредного кода - сначала в директории AppData, затем в Start и в корневом каталоге диска C: . Данные копии используются совместно с модификациями регистра для автоматического перезапуска WannaCry после перезагрузки системы и различных событий. После шифрования файлов на компьютере, малварь отправляет ключ шифрования и другую информацию в командный центр (C2). Далее жертва получает сообщение, причем это может быть как банальное информирование пользователя о шифровке файлов и инструкций о передаче выкупа, так и установке другого зловредного ПО, например для кражи учётных данных. Как правило, для усиления эффекта, на экране компьютера появляется таймер обратного отсчёта с указанием дедлайна, когда нужно отправить выкуп. Если не отправить вовремя, ключ для расшифровки будет уничтожен - то есть больше не останется шансов на восстановление вашей информации. Обычно, оплата выкупа означает то, что вам пришлют ключ для расшифровки - но это совершенно точно не означает, что сам зловредный файл тоже удалится с машины жертвы. Обычно, в таких случаях нужно привлечь вашу службу ИБ или ИТ. И, как уже было сказано выше, очень часто шифровальщики используются как некая маскировка более глубокой атаки на организацию - то есть кража учётных записей, персональных данных и прочие. Наш посыл прост – не открывайте подозрительных ссылок! Особенно, если они пришли по электронной почте от людей, от которых не должно подобное приходить – руководитель компании и так далее. Старайтесь более ответственно относится к времяпрепровождению в Интернете, и тогда ИТ-службе (а это скорее всего вы и есть) будет гораздо спокойнее жить.
img
В этой статье мы расскажем как интегрировать Python c Excel и Word, чтобы без проблем создавать автоматические отчеты. Microsoft Excel и Microsoft Word – это, без доли сомнений, две наиболее широко используемые программы как в мире бизнеса, так и в некорпоративной сфере. Они практически являются синонимами слову «работа». Как правило, не проходит и недели, чтобы мы тем или иным способом не воспользовались их преимуществами. И хотя для обычных повседневных задач автоматизация не требуется, бывают случаи, когда она может стать необходимостью. А именно, когда у вас есть множество диаграмм, рисунков, таблиц и отчетов, которые необходимо сделать, это может стать очень утомительным занятием, если все это выполнять вручную. А это не должно быть так. На самом деле существует способ создать конвейер в Python, где можно будет легко интегрировать эти программы для создания электронных таблиц в Excel, а затем передавать результаты в Word для создания отчета практически мгновенно. Openpyxl Познакомьтесь с Openpyxl, возможно, одной из самых универсальных привязок в Python, которая превращает взаимодействие с Excel буквально в прогулку по парку. Используя этот пакет, вы сможете читать и записывать все новые и старые форматы Excel, то есть .xlsx и .xls. Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D- и 3D-диаграммы, маркировать оси и заголовки, а также имеет множество других возможностей, которые могут пригодиться. Однако здесь наиболее важно то, что этот пакет позволяет вам перебирать бесконечное количество строк и столбцов Excel, тем самым избавляя вас от всех этих утомительных вычислений и построения графиков, которые вам приходилось делать ранее самим. Python-docx А затем появляется Python-docx – пакет для Word – то же, что Openpyxl для Excel. Если вы все еще не изучили их документацию, то вам все же стоит на нее взглянуть. Python-docx – без преувеличения один из самых простых и понятных наборов инструментов, с которыми я работал с тех пор, как начал работать с Python. Он позволяет автоматизировать создание документов, автоматически вставляя текст, заполняя таблицы и отображая изображения в отчете без каких-либо усилий. Без лишних церемоний давайте создадим наш собственный автоматизированный конвейер. Запустите IDE по вашему выбору и установите следующие пакеты: pip install openpyxlpip install python-docx Автоматизация Microsoft Excel Для начала загрузим уже созданную книгу Excel (как показано ниже): workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] Затем мы пройдемся по всем строкам в нашей электронной таблице для того, чтобы вычислить и вставить значение мощности, которую мы получим, умножив ток на напряжение: for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power Как только мы сделаем это, то мы сможем использовать рассчитанные значения мощности для построения линейной диаграммы, которая будет вставлена в указанную ячейку, как показано ниже: values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') Извлечение диаграммы Теперь, когда мы построили нашу диаграмму, нам нужно ее извлечь в формате изображения для того, чтобы мы могли использовать ее в нашем отчете Word. Для начала объявим точное местоположения нашего файла Excel, а также место, куда мы хотим сохранить изображение получившейся диаграммы: input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" Затем необходимо получить доступ к таблице, используя следующий метод: operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) И далее вы можете перебрать все диаграммы в таблице (если их больше одной) и сохранить их в указанном месте: for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True) operation.Quit() Автоматизация Microsoft Word Теперь, когда у нас есть изображение диаграммы, мы должны создать шаблон документа, который представляет собой обычный документ Microsoft Word (.docx), сформированный именно так, как нам необходимо, чтобы наш отчет имел определенный тип и размер шрифта, нужное форматирование и структуру страницы. Далее, все, что нам необходимо сделать, это создать заполнители для нашего автоматизированного содержимого, то есть значений таблиц и изображений, и объявить их с переменными, как показано ниже. Внутри двойных фигурных скобок {{variable_name}} может быть объявлен любое автоматизированное содержимое, включая текст и изображения. Для таблиц вам необходимо создать таблицу с шаблонной строкой, в которую включены все столбцы, а затем вам необходимо добавить еще одну строку выше и одну строку ниже со следующими обозначениями: Первая строка: {%tr for item in variable_name %} Последняя строка: {%tr endfor %} На рисунке выше указаны следующие имена переменных: table_contents для словаря Python, в котором будут храниться наши табличные данные. Index для ключей словаря (первый столбец). Power, Current и Voltage для значений словаря (второй, третий и четвертый столбцы). Затем мы импортируем наш документ-шаблон в Python и создаем словарь, в котором будут храниться значения нашей таблицы: template = DocxTemplate('template.docx') table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) Далее мы импортируем изображение диаграммы, которое ранее мы создали в Excel, и создаем еще один словарь для создания экземпляров всех переменных-заполнителей, объявленных в документе-шаблоне: image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } И, наконец, мы отображаем отчет с нашей таблицей значений и изображением диаграммы: template.render(context) template.save('Automated_report.docx') Заключение И вот, мы получили автоматически созданный отчет Microsoft Word с числами и диаграммами, созданными в Microsoft Excel. При этом у вас есть полностью автоматизированный конвейер, который можно использовать для создания любого количества таблиц, диаграмм и документов. Исходный код программы import openpyxl as xl from openpyxl.chart import LineChart, Reference import win32com.client import PIL from PIL import ImageGrab, Image import os import sys from docx.shared import Cm from docxtpl import DocxTemplate, InlineImage from docx.shared import Cm, Inches, Mm, Emu import random import datetime import matplotlib.pyplot as plt ######## Generate automated excel workbook ######## workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') ######## Extract chart image from Excel workbook ######## input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') pass workbook_2.Close(True) operation.Quit() ######## Generating automated word document ######## template = DocxTemplate('template.docx') #Generate list of random values table_contents = [] for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) #Import saved figure image = InlineImage(template,'chart.png',Cm(10)) #Declare template variables context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } #Render automated report template.render(context) template.save('Automated_report.docx')
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59