国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python實現(xiàn)微信遠(yuǎn)程控制電腦

python實現(xiàn)微信遠(yuǎn)程控制電腦

2021-01-16 00:43Wlain Python

這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)微信遠(yuǎn)程控制電腦的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先,我們要先看看微信遠(yuǎn)程控制電腦的原理是什么呢?

我們可以利用Python的標(biāo)準(zhǔn)庫控制本機(jī)電腦,然后要實現(xiàn)遠(yuǎn)程的話,我們可以把電子郵件作為遠(yuǎn)程控制的渠道,我們用Python自動登錄郵箱檢測郵件,當(dāng)我們發(fā)送關(guān)機(jī)指令給這個郵箱的時候,若Python檢測到相關(guān)的指令,那么Python直接發(fā)送本機(jī)的相關(guān)命令。

下面來分析一下該項目:

1.需求分析

1.范圍:用Python開發(fā)一個遠(yuǎn)程操控電腦的項目。

2.總體要求:

2.1 總體功能要求:能夠通過該軟件遠(yuǎn)程控制該軟件所在的電腦的重啟或關(guān)機(jī)操作。
2.2 系統(tǒng)要求:開發(fā)語言使用Python,并且開發(fā)出來的程序能在Windows運行。

2.設(shè)計

首先,我們可以利用Python的標(biāo)準(zhǔn)庫控制本機(jī)電腦,然后要實現(xiàn)遠(yuǎn)程的話,我們可以把電子郵件作為遠(yuǎn)程控制的渠道,我們用Python自動登錄郵箱檢測郵件,當(dāng)我們發(fā)送關(guān)機(jī)指令給這個郵箱的時候,若Python檢測到關(guān)機(jī)的指令,那么Python直接發(fā)送本機(jī)的關(guān)閉。

3.編寫

本項目的流程圖如下

python實現(xiàn)微信遠(yuǎn)程控制電腦

第一步,需要注冊一個新浪郵箱。然后點擊新浪郵箱點擊右上角設(shè)置如圖

python實現(xiàn)微信遠(yuǎn)程控制電腦

選擇“客戶端pop/imap/smtp”

python實現(xiàn)微信遠(yuǎn)程控制電腦

打開新浪郵箱的SMTP與POP3功能

python實現(xiàn)微信遠(yuǎn)程控制電腦

具體實現(xiàn)代碼:
配置文件config.ini

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[Slave]
pophost = pop.sina.com
smtphost = smtp.sina.com
port = 25
username = XXX@sina.com
password = XXX
 
[Boss]
mail = XXX@qq.com
timelimit = 2
 
[Command]
shutdown=shutdown -f -s -t 100 -c closing...
dir=dir
 
 
[Open]
music = F:Masetti - Our Own Heaven.mp3
video = F:Jai Waetford - Shy.mp4
notepad = notepad

excutor.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import os
import win32api
from mccLog import mccLog
 
class executor(object):
 def __init__(self,commandDict,openDict):
  '''
  創(chuàng)建方法
  :param commandDict:
  :param openDict:
  '''
  self.mccLog = mccLog()
  self.commandDict = commandDict
  self.openDict = openDict
 def execute(self,exe,mailHelper):
  self.mailHelper = mailHelper
  subject = exe['subject']
  # self.mccLog.mccWriteLog(u'開始處理命令')
  print u'start to process'
  if subject !='pass':
   self.mailHelper.sendMail('pass','Slave')
   if subject in self.commandDict:
    # self.mccLog.mccWriteLog(u'執(zhí)行命令!')
    print u'start command'
    try:
     command = self.commandDict[subject]
     os.system(command)
     self.mailHelper.sendMail('Success','Boss')
     # self.mccLog.mccWriteLog(u'執(zhí)行命令成功!')
     print u'command success'
    except Exception,e:
     # self.mccLog.mccError(u'執(zhí)行命令失敗'+ str(e))
     print 'command error'
     self.mailHelper.sendMail('error','boss',e)
   elif subject in self.openDict:
    # self.mccLog.mccWriteLog(u'此時打開文件')
    print u'open the file now'
    try:
     openFile = self.openDict[subject]
     win32api.ShellExecute(0,'open',openFile,'','',1)
     self.mailHelper.sendMail('Success','Boss')
     # self.mccLog.mccWriteLog(u'打開文件成功!')
     print u'open file success'
    except Exception,e:
     # self.mccLog.mccError(u'打開文件失敗!' + str(e))
     print u'open file error'
     self.mailHelper.sendMail('error','Boss',e)
   elif subject[:7].lower() =='sandbox':
    self.sandBox(subject[8:])
   else:
    self.mailHelper.sendMail('error','Boss','no such command!')
 
 def sandBox(self,code):
  name = code.split('$n$')[0]
  code = code.split('$n$')[1]
  codestr = '\n'.join(code.split('$c$'))
  codestr = codestr.replace('$',' ')
  with open(name,'a') as f:
   f.write(codestr)
  os.system('python' + name)

configReader.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*-coding:utf-8-*-
import ConfigParser
import os,sys
 
class configReader(object):
 def __init__(self,configPath):
  configFile = os.path.join(sys.path[0],configPath)
  self.cReader = ConfigParser.ConfigParser()
  self.cReader.read(configFile)
 
 def readConfig(self,section,item):
  return self.cReader.get(section,item)
 
 def getDict(self,section):
  commandDict = {}#字典
  items = self.cReader.items(section)
  for key,value in items:
   commandDict[key] = value
  return commandDict

日志文件mccLog.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*-coding:utf-8-*-
import logging
from datetime import datetime
 
class mccLog(object):
 def __init__(self):
  logging.basicConfig(
   level=logging.DEBUG,
   format='%(asctime)s %(levelname)s %(message)s',
   datefmt='%Y-%m-%d %H:%M:%S',
   filename=datetime. now().strftime('%Y%m%d%H%M%S') + '.log',
   filemode='a'
  )
 
 def mccWriteLog(self,logContent):
   logging.info(logContent)
 
 def mccError(self,errorContent):
   logging.error(errorContent)

mailHelper.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from email.mime.text import MIMEText
from configReader import configReader
from mccLog import mccLog
import poplib
import smtplib
import re
 
class mailHelper(object):
 CONFIGPATH = 'config.ini'
 
 def __init__(self):
  '''
  初始化郵件
  '''
  self.mccLog = mccLog()
  cfReader = configReader(self.CONFIGPATH)
  self.pophost = cfReader.readConfig('Slave','pophost')
  self.smtphost = cfReader.readConfig('Slave','smtphost')
  self.port = cfReader.readConfig('Slave','port')
  self.username = cfReader.readConfig('Slave','username')
  self.password = cfReader.readConfig('Slave','password')
  self.bossMail = cfReader.readConfig('Boss','mail')
  self.loginMail()
  self.configSlaveMail()
 
 def loginMail(self):
  '''
  驗證登陸
  :return:
  '''
  self.mccLog.mccWriteLog('start to login the E-mail')
  print 'start to login e-mail'
  try:
   self.pp = poplib.POP3_SSL(self.pophost)
   self.pp.set_debuglevel(0)#可以為0也可以為1,為1時會顯示出來
   self.pp.user(self.username)#復(fù)制
   self.pp.pass_(self.password)
   self.pp.list()#列出賦值
   print 'login successful!'
   self.mccLog.mccWriteLog('login the email successful!')
   print 'login the email successful!'
  except Exception,e:
   print 'Login failed!'
   self.mccLog.mccWriteLog('Login the email failed!')
   exit()
 
 def acceptMail(self):
  '''
  接收郵件
  :return:
  '''
  self.mccLog.mccWriteLog('Start crawling mail!')
  print 'Start crawling mail'
  try:
   ret = self.pp.list()
   mailBody = self.pp.retr(len(ret[1]))
   self.mccLog.mccWriteLog('Catch the message successfully')
   print 'Catch the message successfully'
   return mailBody
  except Exception,e:
   self.mccLog.mccError('Catch the message failed' + e)
   print 'Catch the message failed'
   return None
 
 def analysisMail(self,mailBody):
  '''
  正則分析郵件
  :param mailBody:
  :return:
  '''
  self.mccLog.mccWriteLog('Start crawling subject and sender')
  print 'Start crawling subject and sender'
  try:
   subject = re.search("Subject: (.*?)',",str(mailBody[1]).decode('utf-8'),re.S).group(1)
   print subject
   sender = re.search("'X-Sender: (.*?)',",str(mailBody[1]).decode('utf-8'),re.S).group(1)
   command = {'subject':subject,'sender':sender}
   self.mccLog.mccWriteLog("crawling subject and sender successful!")
   print 'crawling subject and sender successful'
   return command
  except Exception,e:
   self.mccLog.mccError("crawling subject and sender failed!" + e)
   print 'crawling subject and sender failed!'
   return None
 
 def sendMail(self,subject,receiver,body='Success'):
  '''
  發(fā)送郵件
  :param subject:
  :param receiver:
  :param body:
  :return:
  '''
  msg = MIMEText(body,'plain','utf-8')
  #中文需要參數(shù)utf-8,單字節(jié)字符不需要
  msg['Subject'] = subject
  msg['from'] = self.username
  self.mccLog.mccWriteLog('Start sending mail' + 'to' +receiver)
  print 'Start sending mail'
  if receiver == 'Slave':
   try:
    self.handle.sendmail(self.username,self.username,msg.as_string())
    self.mccLog.mccWriteLog('Send the message successfully')
    print 'Send the message successfully'
   except Exception,e:
    self.mccLog.mccError('Send the message failed' + e)
    print 'Send the message failed'
    return False
  elif receiver == 'Boss':
   try:
    self.handle.sendmail(self.username,self.bossMail,msg.as_string())
    self.mccLog.mccWriteLog('Send the message successfully')
    print 'Send the message successfully'
   except Exception,e:
    self.mccLog.mccError('Send the message failed!' + e)
    print 'Send the message failed!'
    return False
 
 def configSlaveMail(self):
  '''
  配置郵件
  :return:
  '''
  self.mccLog.mccWriteLog('Start configuring the mailbox')
  print 'Start configuring the mailbox'
  try:
   self.handle = smtplib.SMTP(self.smtphost, self.port)
   self.handle.login(self.username, self.password)
   self.mccLog.mccWriteLog('The mailbox configuration is successful')
   print 'The mailbox configuration is successful'
  except Exception, e:
   self.mccLog.mccError('The mailbox configuration is failed' + e)
   print 'The mailbox configuration is failed'
   exit()
 
#
# if __name__=='__main__':
#  mail = mailHelper()
#  body = mail.acceptMail()
#  print body
#  print mail.analysisMail(body)
#  mail.sendMail('OK','Slave')

weiChatControlComputer.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#-*-coding:utf-8-*-
 
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import time
import sys
from mailHelper import mailHelper
from excutor import executor
from configReader import configReader
 
__Author__ = 'william'
__Verson__ = 0.5
 
reload(sys)
sys.setdefaultencoding('utf-8')
 
class MCC(object):
 CONFIGPATH = 'config.ini'
 KEY_COMMAND = 'Command'
 KEY_OPEN = 'Open'
 KEY_BOSS = 'Boss'
 KEY_TIMELIMIT = 'timelimit'#掃描時間的頻率
 
 def __init__(self):
  self.mailHelper = mailHelper()
  self.configReader = configReader(self.CONFIGPATH)
  commandDict = self.configReader.getDict(self.KEY_COMMAND)
  openDict = self.configReader.getDict(self.KEY_OPEN)
  self.timeLimit = int(self.configReader.readConfig(self.KEY_BOSS,self.KEY_TIMELIMIT))
  self.excutor = executor(commandDict,openDict)
  self.toRun()
 
 def toRun(self):
  '''
  實現(xiàn)輪訓(xùn)操作
  :return:
  '''
  while True:
   self.mailHelper = mailHelper()
   self.run()
   time.sleep(self.timeLimit)
 
 def run(self):
  mailBody = self.mailHelper.acceptMail()
  if mailBody:
   exe = self.mailHelper.analysisMail(mailBody)
   if exe:
    self.excutor.execute(exe,self.mailHelper)
 
 
if __name__ == '__main__':
 mcc = MCC()

運行截圖:

python實現(xiàn)微信遠(yuǎn)程控制電腦

4.總結(jié)

在這個小項目的編寫過程中,知道了項目開發(fā)的基本流程并且走了一遍,通過項目管理的方式去開發(fā)項目,并且在這個小項目開發(fā)的過程中,復(fù)習(xí)了Python一些初級階段的基礎(chǔ)知識,并且更深刻體會到從項目的設(shè)計到項目的實施,以及項目的測試運維等步驟需要程序員深刻的理解,這樣才能在項目中逐漸完善自我。

待續(xù)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/qq_30070433/article/details/73731187

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品美女久久久久久久久久久 | 中文字幕乱码一区二区三区 | 色婷婷综合网 | 精品久 | 日韩在线免费观看视频 | 天天精品视频免费观看 | 91精品久久久久久久久久久久久久久 | 欧美成人精品欧美一级私黄 | 国产乱码精品一区二区三区av | 成人网av | 国产婷婷精品av在线 | 在线小视频 | 一区二区三区日韩 | 日韩一区在线视频 | 久草在线视频网 | 中文字幕在线观看免费 | 亚洲国产成人av | 欧美日韩精品综合 | 成人免费乱码大片a毛片软件 | 免费在线看a | 日韩欧美一区二区三区免费观看 | 一级做a爰片久久毛片免费陪 | 欧美一二区 | 亚洲国产精品一二三区 | 亚洲国产精品福利 | 色在线观看视频 | 99pao成人国产永久免费视频 | 精品一区视频 | 伊人在线 | 成人中文字幕在线观看 | 国产a级黄色毛片 | 日韩一区二区视频 | 99成人| www.久久99| 激情中文网 | 一区二区三区四区视频 | 81精品国产乱码久久久久久 | www一区二区 | 3p一区| 欧美精品欧美精品系列 | 伊人五月|