Архив рубрики: Публикации

Как комментировать в Python

При написании кода на Python всегда полезно делать код легко читаемым. Организация кода, присвоение переменным и функциям описательных имен — это несколько способов сделать это.

Еще один способ улучшить читабельность вашего кода — это использовать комментарии. Комментарий — это понятное человеку объяснение или аннотация, которая используется для объяснения кода. Например, если вы написали сложное регулярное выражение, вы добавите комментарий, описывающий, что делает код.

Добавление комментариев к вашему коду Python сэкономит вам много времени и усилий, если вы посмотрите на свой код в будущем. Допустим, вы хотите изменить сценарий, который вы написали несколько месяцев или лет назад. Скорее всего, вы не помните, почему вы написали какой-то сложный кусок кода, если вы не добавили комментарий. Комментарии также помогают другим разработчикам понять ваш код и его назначение.

Комментарии должны быть краткими и точными. Не объясняйте что-то очевидное для читателя.

В этой статье рассматриваются основы написания комментариев на Python.

 

Написание комментариев в Python

Python игнорирует все, что написано в строке после хеш-метки (#).

Комментарии могут быть добавлены в начале строки или встроены в другой код:

# Это комментарий Python.

print("Привет Мир") # Это встроенный комментарий Python.


Пробел после хеш-метки не обязателен, но он улучшит читабельность комментария.

Символ хеша внутри строкового литерала не указывает на начало строки комментария. Это просто хэш-символ:

paragraph = "# Хэш внутри кавычек-это не комментарий."



Комментарии должны быть на том же уровне отступа, что и код под ними:



```py

def factorial(n):

  if n == 0:

    return 1

  else:

    # Используйте функцию факториала

    return n * factorial(n-1)


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

Комментарии также полезны при отладке скрипта. Вместо удаления некоторых строк или блоков, вы можете закомментировать их:

# for fruit in fruits:

#   print(fruit)


Многострочные комментарии в Python (блоки комментариев)

В отличие от других популярных языков программирования, Python поддерживает только однострочные комментарии.

Самый простой способ написать многострочные комментарии в Python — добавить однострочные комментарии один за другим:

# Это первая строка.

# Это вторая строка.


Другой вариант — использовать строки документации.

Строки документации — это многострочные строковые литералы, которые используются для документирования того, что делает модуль, функция, класс или метод.

Строка документа начинается и заканчивается тройными двойными кавычками ( «»») и может занимать одну или несколько строк:

"""Это 

многострочная строка 

документа.

"""


Строки документации не являются технически комментариями. Когда строка документа встречается в качестве первого оператора в модуле, функции, классе или методе, она заканчивается в байт-коде и становится специальным атрибутом __doc__ этого объекта. Вы должны предпочесть использование обычных однострочных хеш-комментариев.

 

Python

Если вы читаете скрипты Python, вы можете заметить, что в некоторых из них первая строка начинается с символов #! и пути к интерпретатору Python:

#!/usr/bin/env python3


Эта последовательность символов вызывается shebang и используется для указания операционной системе, какой интерпретатор использовать для анализа остальной части файла. Скрипты, которые начинаются с shebang и являются исполняемыми, могут запускаться в терминале без ввода python перед именем скрипта.

Поскольку строка shebang начинается с символа хеша, она рассматривается как комментарий и автоматически игнорируется интерпретатором Python.

 

Вывод

Написание комментариев является хорошей практикой и помогает другим разработчикам, в том числе будущим, понять, что делает код. В Python все после хеш-метки ( #) и до конца строки считается комментарием.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-07-01T13:13:07
Python

rtorrent – терминальный торрент для Linux

Сегодня в статье рассмотрим небольшую утилиту rtorrent – терминальный торрент клиент для Linux систем. Использовать я буду Ubuntu Server 20.04 LTS. И так давайте начнем.

Читать

Microsoft Windows File Recovery для восстановления данных



























Rate this post

Microsoft выпустила программу для восстановления данных из памяти компьютера, «флешек» и других накопителей. Новая программа называется Microsoft Windows File Recovery — это надстройка для командной строки, которая позволяет восстановить множество разных файлов. Таким образом можно вернуть случайно удаленные фотографии с камеры или файлы из отформатированного накопителя.

Программа поддерживает большинство форматов фотографий, видео, документов и других файлов — MP3, MP4, PDF, JPEG, Word, Excel, Word, PowerPoint, архивы ZIP и многие другие. Восстановить данные можно с большинства накопителей, включая USB-карты, SD-карты, жесткие диски и SSD7.

В первую очередь программа работает с накопителями в файловой системе NTFS. Также поддерживает FAT, exFAT и ReFS, с ними восстановление работает медленнее.

Для восстановления документов, фотографий, видео и других файлов программа использует интерфейс командной строки, поэтому для взаимодействия с ней потребуются определённые навыки.

Поддерживается три режима работы, каждый из которых по-своему осуществляет восстановление данных.

При восстановлении файлов в режиме «По умолчанию» используется Master File Table, база данных, содержащая информацию о содержании тома с файловой системой NTFS. Этот режим хорошо работает, когда присутствует MFT и имеются сегменты файла (File Record Segment).

В режиме «Сегмент» не требуется наличие MFT, но нужны сегменты файла, представляющие собой набор данных, которые хранятся в MFT, если обрабатывается том с файловой системой NTFS.

В режиме «Подпись» утилите требуются только данные, а также указание определённого типа файлов, которые требуется восстановить. Попытаться восстановить файл на внешнем устройстве хранения, например, USB-накопителе, можно только в этом режиме.

Утилита Windows File Recovery распространяется бесплатно через магазин Microsoft Store. После установки она будет доступна в виде инструмента командной строки winfr.exe. Программа совместима с Windows 10 (19041) и более поздних версий. Для корректной работы утилиты требуется осуществить её запуск с правами администратора.


2020-06-29T20:11:18
Windows

Linux. Как узнать объёмы трафика сервера

Мониторинг нагрузки на устройства — это одна из самый востребованных задач IT бизнеса. Если вы не знаете насколько напрягаются ваши железки, то не сможете ни предугадать поломки, ни спрогнозировать расширение парка устройств. В этой статье расскажу как узнать объёмы трафика на Linux системах без каких-либо дополнительных программ. Читать

Разбор данных JSON в Python

JSON — это читаемый человеком текстовый формат данных. Он не зависит от языка и используется для обмена данными между приложениями.В этой статье мы объясним, как анализировать данные JSON в Python.

 

Python JSON

Модуль json позволяет кодировать и декодировать данные JSON является частью стандартной библиотеки Python.

JSON — это строка, представляющая данные. Кодирование или сериализация означает преобразование объекта Python в строку JSON, которую можно сохранить в файле или передать по сети. Декодирование или десериализация — обратный процесс кодирования, когда строка JSON преобразуется в объект Python.

Ниже приведена таблица, показывающая объекты Python и их эквивалентное представление JSON:











PythonJSON
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

 

Для работы с JSON просто импортируйте модуль вверху файла:

import json


 

Кодировка JSON в Python

Модуль json имеет два метода для кодирования объектов Python в JSON отформатированных строк: dump() и dumps().

Метод dump() отправляет вывод в файл-подобный объект. Он принимает два позиционных аргумента: объект, который должен быть закодирован, и объект в виде файла. Вот пример:

data = {

    "country": "Russia",

    "vehicle": {

        "name": "Volkswagen",

        "model": "T-Roc"

    }

}



with open("file.json", "w") as file:

    json.dump(data, file)


 

Если вы запустите скрипт, он создаст файл с именем file.json:

file.json

{"country": "Russia", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}


 

Метод dumps() работает так же, как и dump(), но вместо того, чтобы послать вывод в файл-подобный объект, он возвращает строку:

data = {

    "country": "Russia",

    "vehicle": {

        "name": "Volkswagen",

        "model": "T-Roc"

    }

}



json.dumps(data)


 

'{"country": "Russia", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'


 

Оба метода принимают одинаковые ключевые аргументы. Например, если вы анализируете или отлаживаете данные JSON, вы можете указать уровень отступа:

data = {

    "country": "Russia",

    "vehicle": {

        "name": "Volkswagen",

        "model": "T-Roc"

    }

}



print(json.dumps(data, indent=2))


 

{

  "country": "Russia",

  "vehicle": {

    "name": "Volkswagen",

    "model": "T-Roc"

  }

}


 

Расшифровка JSON в Python

Для того, чтобы преобразовать JSON закодированные данные в объекты Python, использовать методы load() и loads().

Метод load() считывает структуру JSON из файла типа объекта и преобразует его в объект Python.

Допустим, у нас есть следующий файл JSON:

file.json

[

  {

    "userId": 1,

    "id": 1,

    "title": "Meet with Lisa",

    "completed": true

  },

  {

    "userId": 1,

    "id": 2,

    "title": "Design a prototype",

    "completed": false

  }

]


 

Чтобы преобразовать данные JSON в представление Python, вы должны использовать что-то вроде этого:

import json



with open('file.json') as f:

  data = json.load(f)



type(data)


 

JSON преобразуется в список Python, который вы можете использовать в своем коде:

<class 'list'>


 

Метод loads() преобразует строку, содержащую документ JSON на объект Python:

import json



json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'



print(json.loads(json_str))


 

Строка преобразуется в словарь Python:

{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}


 

Вот более сложный пример, который показывает, как сделать запрос API и декодировать данные JSON:

import json

import requests



response = requests.get("https://jsonplaceholder.typicode.com/users")

users = json.loads(response.text)



print(users)


 

Вывод

Мы рассказали вам, как кодировать и декодировать данные JSON в Python.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-06-29T10:06:00
Python

Теоретические основы тестирования на проникновение (pentest) Часть I Введение

Что такое тестирование на проникновение?

Для начала предлагаем разобраться, что же такое тестирование на проникновение? В это статье  мы рассмотрим, что такое тестирование на проникновение или пентест и почему это важно. Затем мы рассмотрим различные типы тестов на проникновение и различные подходы, которые используются специалистами по информационной безопасности. Национальный институт безопасности и технологий определяет пентестинг,  как тестирование системы безопасности, в ходе которого эксперты имитируют реальные атаки для выявления методов обхода выстроенной системы безопасности приложения, инфраструктуры или сети. Это зачастую включает в себя использование реальных атак на системы, которые находятся в промышленной эксплуатации, а также атаки с целью получения доступа к конфиденциальной информации с помощью инструментов и методов, обычно используемых хакерами. Теперь, когда кибератаки становятся нормой, как никогда важно регулярно проводить сканирование уязвимостей и тестирование на проникновение, чтобы выявить уязвимости и убедиться, что выстроенная система информационной безопасности работает. Учитывая тот факт , что реальные атаки на системы в проде это не то, что будет выполняться ежемесячно или ежеквартально. Многие компании неохотно проводят пентест, например 1 раз в год , скажем так для галочки , игнорируя важность этих мероприятий для бизнеса.

Теперь, когда мы подсветили важность пентеста нам нужно опеределить различные подходы, которые мы можем использовать для проведения теста на проникновение. Один тест на проникновение в разных компаниях не даст нам одинаковый результат, потому что каждая компания использует разные инструменты, системы, приложения. Ключевой принцип здесь – это гибкость в своих подходах. Как известно, восемьдесят процентов атак происходит внутри компании, поэтому важно протестировать систему, в роли сотрудника или бывшего (возможно обиженного) сотрудником. Уже имея доступ к некоторым из информационных систем мы можем продвинуться дальше, чем, скажем, если бы мы были внешним хакером, который просто использовал бы наиболее популярные инструменты. Следующий подход-это просмотр веб-или мобильных приложений, . Эти методы обычно включают в себя проверку на безопасность кода и соответствия политике информационной безопасности. Существует множество попыток аутентификации и взлома паролей, не стоит забывать и про социальную инженерию. Сама по себе социальная инженерия создает направлена на психологические аспекты внутри кого-то, чтобы получить доступ к информации, которую вы обычно не получили бы. Исторически мы знаем социальную инженерию как фишинговые атаки по электронной почте, но атаки также могут быть телефонными звонками и др.

Часто это делается путем угроз, ультиматумов, дезинформации, создания ощущения срочности, эскалации и создания ситуации, в которой вы заставляете кого-то разглашать информацию или получать доступ к чему-то, к чему вы обычно не имеете доступа. Дальше идут беспроводные сети. Допустим, мы знаем, что большинство компаний будут иметь внутреннюю беспроводную сеть для всех своих сотрудников, поэтому очень важно, чтобы мы проверили ее и убедились, что она соответствует политике информационной безопасности. Поскольку каждый сотрудник подключается к этой внутренней сети, часто они пытаются использовать свои собственные устройства, будь то телефоны или ноутбуки. Таким образом, все они становятся объектами атак, которые мы можем проверить. Даже за пределами работы многие вещи на сегодняшний день подключены к интернету, будь то веб-камеры, термостаты или даже кофеварки. Другими словами, необходимо рассмотреть все различные подходы, которые мы имеем в своем распоряжении.

Промышленные системы управления исторически очень устарели со своими паролями, со своими операционными системами и очень восприимчивы к атакам с использованием социальной инженерии, потому что они часто используют дефолтные пароли и конфигурации по умолчанию. Сейчас системы управления промышленностью существуют не везде, а в основном в нефтяной, газовой и электрической отраслях. Но вы можете себе представить, что скомпрометированные промышленные системы могут принести очень большой ущерб как предприятию, так и стране, ее экологии и тд. и  в целом, несут за собой экономические, репутационные и др. убытки, поэтому наиболее важно проверять именно их.

Как я уже упоминал в первоначальном определении пентестинга, тесты на проникновение могут выполняться в различных приложениях, сетях и системах, а также на мобильные устройства и различные операционные системы. Хотя каждый из этих различных подходов может отличаться, методология, которую мы используем, остается  одной, так как, всегда будет начальная фаза — это планирования, когда вы пишите договор, соглашение с компанией, которое определит масштаб атаки, и поскольку вы атакуете реальную систему, очень важно, чтобы вы установили очень строгие границы и очень четко определили, что может произойти, а что нет. Как только у вас есть план, где прописано то, что вы хотите сделать, последует стадия разведки или обнаружения, где вы получите как можно больше информации, как активно, так и пассивно. Как только вы почувствуете, что у вас достаточно информации, вы перейдете к эксплутации уязвимостей. Затем, когда атака завершена или вы выполнили все, что вы намеревались выполнить на этапе планирования приходит время составления отчета, где чрезвычайно важным для заказчика является отражением того какие атаки были успешными, а какие нет.



2020-06-26T15:43:06
Аудит ИБ