Python для хакеров. Нетривиальные задачи и проекты - Ли Воган - E-Book

Python для хакеров. Нетривиальные задачи и проекты E-Book

Ли Воган

0,0

Beschreibung

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

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 416

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Ли Воган
Python для хакеров. Нетривиальные задачи и проекты
2023

Переводчик Д. Брайт

Ли Воган

Python для хакеров. Нетривиальные задачи и проекты. — СПб.: Питер, 2023.

ISBN 978-5-4461-2968-3

© ООО Издательство "Питер", 2023

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

Посвящается моему дяде, Кеннету П. Вогану. Ты всегда и везде нес свет

Об авторе

Ли Воган — программист, поклонник поп-культуры, консультант, автор книги «Impractical Python Projects»1 (No Starch Press, 2018). За десятилетия работы научным руководителем в компании ExxonMobil он занимался проектированием и анализом компьютерных моделей, разрабатывал и тестировал программное обеспечение и, кроме того, обучал геофизиков и инженеров.

Обе свои книги, «Непрактичный Python» и «Python для хакеров», он написал для тех, кто самостоятельно изучает Python и хочет отточить свое мастерство, выполняя увлекательные и нетривиальные проекты.

 

1 «Непрактичный Python. Занимательные проекты для тех, кто хочет поумнеть».

О научных редакторах

Крис Крен (Chris Kren) окончил Университет Южной Алабамы со степенью магистра в сфере информационных систем. Сейчас он занимается кибербезопасностью и часто использует Python для отчетов, анализа данных и автоматизации.

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

Благодарности

Команда No Starch Press работала над книгой во время пандемии — и совершила очередной трудовой подвиг. Их можно смело назвать профессио­налами, которым нет равных, и эта книга появилась на свет лишь благодаря их усилиям. Выражаю всем сотрудникам свою глубочайшую признательность и уважение.

Также благодарю Криса Крена и Эрика Эвенчика (Eric Evenchick) за их ревью кода, Джозефа Б. Пола (Joseph B. Paul), Сару и Лору Воган — за их энтузиазм в косплее, а также Ханну Воган — за полезные фотографии.

Отдельное спасибо Эрику Т. Мортенсону за его подробную научную рецензию, содержащую множество полезных идей и дополнений. Эрик предложил добавить главу, посвященную байесовскому правилу, и предоставил множество практических проектов, а также дополнительных задач, включая применение к байесовским моделям методов Монте-Карло, подведение итогов романа по главам, моделирование взаимосвязей между Луной и «Аполлоном-8», просмотр Марса в 3D, вычисление кривой блеска для экзопланеты, обладающей луной, и некоторые другие. Благодаря его усилиям эта книга стала намного лучше.

В завершение выражаю благодарность участникам с ресурса stackoverflow.com. Одна из лучших особенностей Python заключается в его обширном и многогранном сообществе пользователей. Неважно, какой вопрос у вас возникнет, кто-нибудь на него обязательно ответит. Неважно, насколько странную задачу вы решаете, кто-нибудь наверняка уже делал что-то подобное. И всех этих людей вы можете найти на Stack Overflow.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Введение

Если вы освоили основы работы с Python, то уже готовы писать полноценные программы для решения настоящих задач. В книге «Python для хакеров. Нетривиальные задачи и проекты» вы напишете такие программы, чтобы победить в лунной гонке на «Аполлоне-8», помочь Клайду Томбо открыть Плутон, выбрать посадочные места на Марсе, обнаружить экзопланеты, отправить суперсекретные сообщения друзьям, сразиться с ужасными мутантами, спасти моряков после кораблекрушения, убежать от зомби и сделать еще много другого — и все это с помощью языка программирования Python. Вы будете применять мощные техники компьютерного зрения, обработку естественного языка и научные модули, такие как OpenCV, NLTK, NumPy, pandas, matplotlib, а также многие другие библиотеки, созданные для облегчения жизни программистов.

Для кого эта книга?

Можно рассматривать эту книгу как пособие по Python для второкурсников. Это не руководство по основам языка, а возможность продолжить обучение, работая над реальными проектами. Таким образом, вам не придется тратить деньги и место на полке, только чтобы освежить в памяти уже известные принципы. Но я все равно буду объяснять каждый этап проекта, давать подробные инструкции по использованию библиотек и модулей, включая их установку.

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

Почему Python?

Python — это высокоуровневый интерпретируемый язык общего назначения. Он свободно распространяемый, интерактивный и совместимый со всеми ведущими платформами, а также микроконтроллерами, например с Raspberry Pi. Python поддерживает и функциональное, и объектно-ориентированное программирование, а также способен взаимодействовать с кодом, написанным на других языках, например на C++.

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

План книги

Итак, краткий обзор глав этой книги. Вам не обязательно изучать их все последовательно, но я буду объяснять новые модули и техники более подробно при их первом упоминании.

• Глава 1. Спасение моряков с помощью теоремы Байеса.Используем теорему Байеса, чтобы эффективно направить береговую охрану для поиска и спасения моряков у мыса Python. Набираемся опыта в применении OpenCV, NumPy и модуля itertools.

• Глава 2. Установление авторства с помощью стилометрии.Используем обработку естественного языка для определения автора романа «Затерянный мир» — был ли это сэр Артур Конан Дойл или же Герберт Джордж Уэллс? Практикуемся в работе с NLTK, matplotlib и такими стилометрическими техниками, как стоп-слова, части речи, лексическое богатство и коэффициент Жаккара.

• Глава 3. Суммаризация текста с помощью обработки естественного языка.Делаем скрапинг известных речей из интернета и автоматическое обобщение их важных моментов. Преобразуем текст романа в аннотацию для рекламы или промоматериала. Расширяем навыки работы с BeautifulSoup, Requests, regex, NLTK, Collections, wordcloud и matplotlib.

• Глава 4. Отправка суперсекретных сообщений с помощью книжного шифра.Делимся невзламываемыми шифрами с друзьями путем цифрового воссоздания метода «одноразового блокнота», использованного в шпионском романе Кена Фоллетта «Ключ к Ребекке». Учимся работать с модулем Collections.

• Глава 5. Поиск Плутона.Воссоздаем блинк-компаратор, с помощью которого Клайд Томбо открыл Плутон в 1930 году. Затем используем современное компьютерное зрение для автоматического поиска и отслеживания слаборазличимых транзиентов, таких как кометы и астероиды, перемещающихся относительно звездного поля. Получаем опыт работы с OpenCV и NumPy.

• Глава 6. Победа в лунной гонке с помощью «Аполлона-8».Принимаем участие в приключении и помогаем США победить в лунной гонке, первыми достигнув Луны на корабле «Аполлон-8». Составляем и реализуем грамотный план обратного полета, который в ретроспективе убедил NASA отправиться в полет на год раньше и по факту нанес удар по советской космической программе. Набираемся опыта в использовании модуля turtle.

• Глава 7. Выбор мест высадки на Марсе.Оцениваем потенциальные места посадки для марсохода на основе реальных задач миссии. Отображаем предполагаемые точки на карте Марса вместе с их сводной статистикой. Совершенствуем навыки работы с OpenCV, Python Imaging Library, NumPy и tkinter.

• Глава 8. Обнаружение далеких экзопланет.Моделируем проход экзопланеты на фоне ее солнца, отображаем график итоговых изменений относительной яркости и оцениваем диаметр этой планеты. В завершение симулируем прямое наблюдение экзопланеты с помощью нового телескопа Джеймса Уэбба, включая оценку длительности ее дня. Используем OpenCV, NumPy и matplotlib.

• Глава 9. Как различить своих и чужих.Программируем роботизированную пушку-стража на визуальное распознавание космических пехотинцев и злых мутантов. Применяем OpenCV, NumPy, playsound, pyttsx и datetime.

• Глава 10. Ограничение доступа по принципу распознавания лиц.Реализуем ограничение доступа в секретную лабораторию через распознавание лиц. Используем OpenCV, NumPy, playsound, pyttsx и datetime.

• Глава 11. Создание интерактивной карты побега от зомби.Создаем карту плотности популяции, которая поможет выжившим в ТВ-шоу «Ходячие мертвецы» выбраться из Атланты на безопасную территорию Запада США. Совершенствуемся в работе с pandas, bokeh, holoviews и webbrowser.

• Глава 12. Находимся ли мы в компьютерной симуляции?Определяем способ для симулированных существ — возможно, это мы сами — отыскать свидетельства того, что они живут в компьютерной симуляции. Используем для этого turtle, statistics и perf_counter.

Каждая глава завершается как минимум одним практическим или усложненным проектом. Их решения вы найдете в приложении или онлайн. Учтите, что эти решения не единственные и не обязательно лучшие. Так что, возможно, вам удастся придумать что-то более эффективное.  

Что же касается усложненных проектов, то здесь все зависит только от вас. В них я реализую принцип «плыви или тони», который здорово помогает в обучении. Надеюсь, моя книга сможет мотивировать вас на создание собственных проектов, а такие задачи играют роль триггеров, которые взбудоражат ваше воображение.  

Можете скачать весь код книги, включая решения к практическим проектам, с сайта https://nostarch.com/real-world-python/. Там же я публикую список опечаток и всевозможные будущие обновления.

Невозможно написать подобную книгу без недочетов. Если вы обнаружите, что в книге что-то не так, пожалуйста, отправьте описание проблемы издателю по адресу [email protected]. Мы будем вносить все необходимые правки в список опечаток и включим исправление в переиздания, а вы получите вечное признание и славу.

Версия Python, платформа и IDE

Все проекты этой книги я создавал на Python v3.7.2 в Microsoft Windows 10. Если вы используете другую операционную систему, то это не проблема: там, где необходимо, я предлагаю совместимые модули для других платформ.

Примеры кода в книге взяты либо из текстового редактора Python IDLE, либо из интерактивной оболочки. IDLE (Integrated Development and Learning Environment) означает «интегрированная среда разработки и обучения». Это та же интегрированная среда разработки (IDE), но с добавленной L, которая делает акроним созвучным фамилии актера Eric Idle, участника творческой группы Monty Python. Интерактивная оболочка, также называемая интерпретатором, — окно, позволяющее вам мгновенно выполнять команды и тестировать код, не создавая файл.

У IDLE множество недостатков, например отсутствует нумерация строк, но при этом она бесплатна и связана с Python, что дает каждому доступ к ней. Вы можете без проблем использовать любую IDE по своему желанию. Среди наиболее популярных могу назвать Visual Studio Code, Atom, Geany (произносится «джини»), PyCharm и Sublime Text. Они работают в разных операционных системах, включая Linux, macOS и Windows. Еще одна IDE, PyScripter, работает только в Windows. Подробный список доступных редакторов Python и совместимых платформ вы найдете на https://wiki.python.org/moin/PythonEditors/.

Установка Python

Вы можете установить Python на свою машину через дистрибутив. Если же вы решите это сделать напрямую, то инструкции для вашей операционной системы вы найдете на https://www.python.org/downloads/. На машинах с Linux и macOS Python уже обычно предустановлен. С каждой новой версией языка некоторые возможности в него добавляются, а другие исключаются, поэтому я рекомендую обновить вашу версию, если она ниже v3.6.

Щелчок на кнопке скачивания на сайте Python (рис. 1) по умолчанию устанавливает 32-битный Python.

 

Рис. 1. Страница скачивания Python.org с удобной кнопкой для платформы Windows

Если же вам нужна 64-битная версия, то промотайте страницу вниз до списка конкретных версий (рис. 2) и щелкните на ссылке с тем же номером версии.

Откроется окно, показанное на рис. 3. Здесь щелкните по 64-битному исполняемому файлу, который запустит мастер установки. Следуйте инструкциям и соглашайтесь с настройками по умолчанию.

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

 

Рис. 2. Список версий на странице скачивания Python.org

 

Рис. 3. Список файлов для Python 3.8.2 на Python.org

К популярным дистрибутивам относится Anaconda от Continuum Analytics. Можете скачать его с https://www.anaconda.com/. Еще один интересный дистрибутив — Enthought Canopy, хотя бесплатной является лишь его базовая версия. Независимо от того, установите вы библиотеки Python отдельно или через дистрибутив, с проработкой проектов из книги не должно возникнуть проблем.

Запуск Python

После установки Python должен отобразиться в списке приложений операционной системы. При его запуске появится окно оболочки (показано на заднем плане рис. 4). Можете использовать эту интерактивную среду для запуска и тестирования сниппетов кода. Однако для написания более крупных программ вы будете использовать текстовый редактор, который позволяет сохранять код (рис. 4, на переднем плане).

 

Рис. 4. Окно оболочки Python (задний план) и текстовый редактор (передний план)

Для создания нового файла в редакторе IDLE щелкните FileNew File. Чтобы открыть существующий файл, щелкните FileOpen или FileRecent Files. Отсюда можно выполнять код через RunRun Module или нажатием F5 после выбора окна редактора. Обратите внимание, что ваша среда может выглядеть не так, как на рис. 4, если вы выбрали пакетный менеджер вроде Anaconda или IDE вроде PyCharm.

Программу Python также можно запускать, указав ее имя в PowerShell или Terminal. Для этого потребуется перейти в каталог, где эта программа расположена. Например, если вы не запустили Windows PowerShell из правильного каталога, то вам потребуется изменить путь каталога при помощи команды cd (рис. 5).

 

Рис. 5. Изменение каталогов и запуск программы Python в Windows PowerShell

Подробности можно узнать на https://pythonbasics.org/execute-python-scripts/.

Использование виртуальной среды

Ну и последнее. Вы можете устанавливать зависимости для каждой главы в отдельной виртуальной среде. В Python виртуальная среда — это самостоятельное дерево каталогов, включающее установку Python и ряд дополнительных пакетов. Такие среды полезны при работе с несколькими версиями Python, так как некоторые библиотеки могут быть совместимы с одной версией, но не с другими. Кроме того, это дает возможность работать с проектами, требующими разные версии одной библиотеки. Раздельное их хранение избавляет от проблем совместимости.

Проекты из книги не требуют использования виртуальных сред, и если вы будете следовать моим инструкциям, то установите необходимые библиотеки для всей системы. Однако если вам действительно нужно изолировать пакеты от операционной системы, то рассмотрите возможность установки отдельной виртуальной среды для каждой главы книги (подробнее — на https://docs.python.org/3.8/library/venv.html#module-venv и https://docs.python.org/3/tutorial/venv.html).

Вперед!

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

За 200 000 лет истории человечества только живущим в последние 45 лет дана привилегия использовать эти магические устройства и реализовывать немыслимые когда-то идеи.

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