中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python怎么通過郵件控制遠程電腦

發布時間:2021-04-30 15:54:45 來源:億速云 閱讀:167 作者:Leah 欄目:開發技術

本篇文章為大家展示了使用python怎么通過郵件控制遠程電腦,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

python的數據類型有哪些?

python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。

主要是python的一些用于收發郵件的庫

import smtplib
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
import poplib
import pyautogui
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import os

0x02 具體實現

首先,實現郵件的讀取功能。讀取最新的一封郵件內容,這條內容中包含我們要做的事情,比如查詢ip地址、獲取屏幕截圖等。

在獲取內容之前,先將郵箱的登錄等做好初始化

def email_init():
 email = 'xxxxx@qq.com' #登錄的郵箱賬號
 password = 'xxxxx' # 注意這里不是郵箱密碼 是要登錄的郵箱的授權碼
 pop3_server = 'pop.qq.com'
 
 # 連接到POP3服務器:
 server = poplib.POP3_SSL(pop3_server, 995)
 server.set_debuglevel(0)
 server.user(email)
 server.pass_(password)
 resp, mails, octets = server.list()
 index = len(mails)
 resp, lines, octets = server.retr(index) # 這里index代表讀取最后一封郵件 也就是第一封
 msg_content = b'\r\n'.join(lines).decode('utf-8')
 msg = Parser().parsestr(msg_content)
 
 return msg, server

要注意密碼不是郵箱的密碼,是授權碼,具體獲取方式可以百度。

隨后就可以將進行郵件的讀取了。

def print_info(msg, indent=0):
 if indent == 0:
 for header in ['From', 'To', 'Subject']:
 value = msg.get(header, '')
 if value:
 if header == 'Subject':
 value = decode_str(value)
 else:
 hdr, addr = parseaddr(value)
 name = decode_str(hdr)
 value = u'%s <%s>' % (name, addr)
 print('%s%s: %s' % (' ' * indent, header, value))
 
 if msg.is_multipart():
 parts = msg.get_payload()
 for n, part in enumerate(parts):
 print('%spart %s' % (' ' * indent, n))
 print('%s--------------------' % (' ' * indent))
 return print_info(part, indent + 1)
 else:
 content_type = msg.get_content_type()
 if content_type=='text/plain' or content_type=='text/html':
 content = msg.get_payload(decode=True)
 charset = guess_charset(msg)
 if charset:
 content = content.decode(charset)
 print('%sText: %s' % (' ' * indent, content))
 return content
 else:
 print('%sAttachment: %s' % (' ' * indent, content_type))

將上一步得到的msg參數傳入到讀取函數中,通過遞歸調用查詢郵件內容并解碼。其中涉及到遞歸調用中的輸出問題,我再上一篇文章中有提到:https://www.jb51.net/article/182761.htm

另外,涉及的解析函數decode_str()如下

def decode_str(s):
 value, charset = decode_header(s)[0]
 if charset:
 value = value.decode(charset)
 return value

在郵件中讀取相關命令后,就是對命令執行,然后在通過郵件的形式反饋命令結果了。

這里以返回屏幕截圖以及執行dos命令為例

def send_result(kind, result):
 # 第三方 SMTP 服務
 mail_host = "smtp.163.com"
 mail_user = "@163.com" #發送信息的郵箱 這里我是用的163郵箱
 mail_pass = "xxxxxxx" # 郵箱的授權碼
 
 sender = 'xxxxxx@163.com' #發送方地址
 receivers = ['xxxxx@qq.com'] #收件地址
 
 if kind == 1: # 第一方式 反饋屏幕截圖
 print('Sending screenshot.')
 # 創建一個帶附件的實例
 message = MIMEMultipart()
 message['From'] = '<hacker_center@163.com>'
 message['To'] = '<niu5512@qq.com>'
 subject = 'Hacker Center reply'
 message['Subject'] = Header(subject, 'utf-8')
 
 # 郵件正文內容
 message.attach(MIMEText('Hacker Server replay', 'plain', 'utf-8'))
 
 if os.path.exists("./screenshot.jpg"):
 # 構造附件1,傳送當前目錄下的 test.txt 文件
 att1 = MIMEText(open('./screenshot.jpg', 'rb').read(), 'base64', 'utf-8')
 att1["Content-Type"] = 'application/octet-stream'
 # 這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字
 att1["Content-Disposition"] = 'attachment; filename="screenshot.jpg"'
 message.attach(att1)
 try:
 smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 啟用SSL發信, 端口一般是465
 smtpObj.login(mail_user, mail_pass) # 登錄驗證
 smtpObj.sendmail(sender, receivers, message.as_string()) # 發送
 print("mail has been send successfully.")
 except smtplib.SMTPException as e:
 print(e)
 
 if kind == 2: #第二種方式 返回dos命令結果
 message = MIMEText(result, 'plain', 'utf-8')
 message['From'] = '<hacker_center@163.com>'
 message['To'] = '<niu5512@qq.com>'
 subject = 'Hacker Center reply'
 message['Subject'] = Header(subject, 'utf-8')
 smtpObj = smtplib.SMTP_SSL(mail_host, 465)
 smtpObj.login(mail_user, mail_pass)
 smtpObj.sendmail(sender, receivers, message.as_string())
 print("mail has been send successfully.")

其中執行dos命令的函數如下:

def manage_cmd(cmd):
 print('The command is:%s' % cmd)
 kind = 0
 result = 'Nothing happen.'
 
 if 'screenshot' in cmd:
 img = pyautogui.screenshot()
 img.save('./screenshot.jpg')
 kind = 1
 
 if 'dos cmd' in cmd:
 dos_result = ''
 index = cmd.find(':')
 cmd = cmd[index+1:]
 
 if os.system(cmd):
 result = 'command err.'
 else:
 info = os.popen(cmd)
 
 for line in info:
 dos_result = dos_result + line
 kind = 3
 if dos_result != '':
 result = dos_result
 
 return kind, result

上述內容就是使用python怎么通過郵件控制遠程電腦,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西丰县| 安顺市| 娱乐| 松桃| 和平区| 永胜县| 怀集县| 崇阳县| 仁化县| 西吉县| 寿宁县| 吉木萨尔县| 武平县| 大兴区| 信阳市| 永年县| 平远县| 县级市| 桐庐县| 桐乡市| 集安市| 桓台县| 东莞市| 施甸县| 会同县| 荥阳市| 慈利县| 万宁市| 洞头县| 桓仁| 安康市| 苍梧县| 徐州市| 德令哈市| 大竹县| 富顺县| 祁门县| 福安市| 麻阳| 嘉善县| 从江县|