最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 通過郵件控制實現(xiàn)遠(yuǎn)程控制電腦操作

 更新時間:2020年03月16日 10:03:25   作者:Clannad_niu  
這篇文章主要介紹了python 通過郵件控制電腦實現(xiàn)遠(yuǎn)程控制操作,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

0x00 思路

之前在博客上看到了使用python通過微信的接口,與微信交互的方式來控制電腦的攝像頭、開關(guān)機等。但是這種方式需要首先在python上登錄自己的微信才可以,同時微信端也會有已經(jīng)在網(wǎng)頁端登錄的字樣,很顯眼。因此想到了另外一種交互方式,通過郵件進(jìn)行交互。

通過郵件的方式不要求用戶實時在線,只需要程序隔一段時間掃描一下郵箱的新郵件即可。這種交互方式更為方便。其次,這種方式也更為隱蔽,不會干擾微信的使用。

0x01 需要用到的庫

主要是python的一些用于收發(fā)郵件的庫

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 具體實現(xiàn)

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

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

def email_init():
 email = 'xxxxx@qq.com' #登錄的郵箱賬號
 password = 'xxxxx' # 注意這里不是郵箱密碼 是要登錄的郵箱的授權(quán)碼
 pop3_server = 'pop.qq.com'
 
 # 連接到POP3服務(wù)器:
 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

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

隨后就可以將進(jìn)行郵件的讀取了。

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參數(shù)傳入到讀取函數(shù)中,通過遞歸調(diào)用查詢郵件內(nèi)容并解碼。其中涉及到遞歸調(diào)用中的輸出問題,我再上一篇文章中有提到:http://m.fzitv.net/article/182761.htm

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

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

在郵件中讀取相關(guān)命令后,就是對命令執(zhí)行,然后在通過郵件的形式反饋命令結(jié)果了。

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

def send_result(kind, result):
 # 第三方 SMTP 服務(wù)
 mail_host = "smtp.163.com"
 mail_user = "@163.com" #發(fā)送信息的郵箱 這里我是用的163郵箱
 mail_pass = "xxxxxxx" # 郵箱的授權(quán)碼
 
 sender = 'xxxxxx@163.com' #發(fā)送方地址
 receivers = ['xxxxx@qq.com'] #收件地址
 
 if kind == 1: # 第一方式 反饋屏幕截圖
 print('Sending screenshot.')
 # 創(chuàng)建一個帶附件的實例
 message = MIMEMultipart()
 message['From'] = '<hacker_center@163.com>'
 message['To'] = '<niu5512@qq.com>'
 subject = 'Hacker Center reply'
 message['Subject'] = Header(subject, 'utf-8')
 
 # 郵件正文內(nèi)容
 message.attach(MIMEText('Hacker Server replay', 'plain', 'utf-8'))
 
 if os.path.exists("./screenshot.jpg"):
 # 構(gòu)造附件1,傳送當(dāng)前目錄下的 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發(fā)信, 端口一般是465
 smtpObj.login(mail_user, mail_pass) # 登錄驗證
 smtpObj.sendmail(sender, receivers, message.as_string()) # 發(fā)送
 print("mail has been send successfully.")
 except smtplib.SMTPException as e:
 print(e)
 
 if kind == 2: #第二種方式 返回dos命令結(jié)果
 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.")

其中執(zhí)行dos命令的函數(shù)如下:

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

傳入的cmd參數(shù)就是解析出的郵件內(nèi)容,通過判斷郵件內(nèi)容來進(jìn)行郵件反饋。

0x03 實驗結(jié)果

發(fā)送郵箱查詢本機ip地址

收到的反饋如下:

總結(jié)

到此這篇關(guān)于python 通過郵件控制電腦實現(xiàn)遠(yuǎn)程控制電腦操作的文章就介紹到這了,更多相關(guān)python郵件遠(yuǎn)程控制電腦內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python入門教程(三十四)Python的文件處理

    Python入門教程(三十四)Python的文件處理

    這篇文章主要介紹了Python入門教程(三十四)Python的文件處理,在Python中處理文件的主要是open()函數(shù),接下來我們就來一起看看open()函數(shù)的用法吧,需要的朋友可以參考下
    2023-05-05
  • python導(dǎo)入坐標(biāo)點的具體操作

    python導(dǎo)入坐標(biāo)點的具體操作

    在本篇文章里小編給大家分享了關(guān)于python導(dǎo)入坐標(biāo)點的具體操作步驟和圖解,有需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • 對Python中plt的畫圖函數(shù)詳解

    對Python中plt的畫圖函數(shù)詳解

    今天小編就為大家分享一篇對Python中plt的畫圖函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 使用Python神器對付12306變態(tài)驗證碼

    使用Python神器對付12306變態(tài)驗證碼

    這篇文章主要介紹了使用Python神器對付12306變態(tài)驗證碼的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • python編程冒泡排序法實現(xiàn)動圖排序示例解析

    python編程冒泡排序法實現(xiàn)動圖排序示例解析

    這篇文章主要介紹了python編程中如何使用冒泡排序法實現(xiàn)動圖排序的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • pyQt4實現(xiàn)俄羅斯方塊游戲

    pyQt4實現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了pyQt4實現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python3中urlopen()的用法解讀

    Python3中urlopen()的用法解讀

    這篇文章主要介紹了Python3中urlopen()的用法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • python套接字socket通信

    python套接字socket通信

    這篇文章主要介紹了python套接字socket通信,python標(biāo)準(zhǔn)庫中內(nèi)置了底層網(wǎng)絡(luò)接口socket,以下代碼均默認(rèn)from?socket?import?*,下文很多詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • 巧用Python裝飾器 免去調(diào)用父類構(gòu)造函數(shù)的麻煩

    巧用Python裝飾器 免去調(diào)用父類構(gòu)造函數(shù)的麻煩

    巧用Python裝飾器 免去調(diào)用父類構(gòu)造函數(shù)的麻煩,需要的朋友可以參考下
    2012-05-05
  • 從局部變量和全局變量開始全面解析Python中變量的作用域

    從局部變量和全局變量開始全面解析Python中變量的作用域

    無論是以類為基礎(chǔ)的面相對象編程,還是單純函數(shù)內(nèi)部變量的定義,變量的作用域始終是Python學(xué)習(xí)中一個必須理解掌握的環(huán)節(jié),下面我們從局部變量和全局變量開始全面解析Python中變量的作用域,需要的朋友可以參考下
    2016-06-06

最新評論

吉林省| 元江| 宁河县| 满洲里市| 东阿县| 合水县| 云梦县| 尤溪县| 米泉市| 贵溪市| 临湘市| 电白县| 淳化县| 临夏县| 安阳县| 连州市| 平乐县| 南充市| 罗江县| 新余市| 台湾省| 长泰县| 清苑县| 冕宁县| 巩义市| 读书| 嘉义市| 乐陵市| 宣汉县| 永年县| 怀集县| 兴化市| 囊谦县| 陆良县| 邹城市| 新巴尔虎左旗| 汝阳县| 贵阳市| 阿克陶县| 郯城县| 简阳市|