概述
在网上偶然看到一个远程控制的小项目,就突发奇想 借题发挥,自己搞一搞,利用Python实现微信远程控制电脑(自己的或者他人的当然你要在别人电脑登陆你的微信)
废话不说进入正题
实现功能
简单地说就是你通过微信发给你挂在py上的微信一个特定消息的时候,我会自动处理这段特定的消息:
(关机,600,******),如果符合要求,就执行指令,比如让计算机关机、重启、打开某个文件之类的。
当然有人就会说好麻烦,我还不如自己在桌面点一点不就完事儿了吗
其实不然,当你传入的消息是一个指示无限重启的时候,那么你就相当于电脑中了病毒,也蛮有意思,我不多说,大家自己探索。
准备事项
需要的库有:time、os、wxpy
这里我需要介绍一下wxpy这个库,wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。 wxpy详细用法传送门.
代码展示
下面是两个分开的py文件,因为第一个程序要embed()一直执行下去不断获取消息,第二个程序是获得相应消息,进行解析,如果满足要求就会执行相应cmd指令。
我的消息格式是“指令,多少秒后执行,执行密码” eg:(关机,600,******)
消息的获取
from wxpy import *
导入强大的wxpy
bot = Bot(cache_path = True)
#这一步是扫码登陆阶段(建议小号),当你扫完码之后一段时间会有缓存,下次运行不用扫码即可登录
myself = bot.self
bot.enable_puid('wxpy_puid.pkl')
my_friend = bot.friends().search('你的要发送消息的微信的昵称')[0]
# print(my_friend)
@bot.register(my_friend,[TEXT,PICTURE])
# 注册函数,发送内容仅限于文本与图片(可以扩展更多内容)
def get_message(msg):
# 获取消息并将消息保存存在command.txt(该txt用于下一个消息处理py文件的持续查询)的函数
print(msg)
command = msg.text
with open("D:\\...路径自己选择l\\command.txt",'w+') as f:
f.write(command)
f.seek(0)
print(f.read())
f.close()
return msg.text
# 你会回复同样的内容
# 如果你不想做出任何回复就只写return
embed()
# 程序进入交互命令行模式
# 你可以看到发来的消息和解析成列表的消息列表
消息的处理
import time
import os
def progressing_bar():
# 让程序不过于单调,加入了简易进度条
print("ATTENTION!",end='')
for i in range(10):
time.sleep(1)
print(i*'!',end='')
def Get_Command():
# 获取指令
while True:
# 查询
time.sleep(5)
# 为了不让查询过快,让程序暂停片刻
progressing_bar()
with open("D:\\...\\command.txt",'r+') as ff:
ff.seek(0)
# 回到文件开头开始read
if ff.read() != '':
ff.seek(0)
command_str = ff.read()
ff.seek(0)
time.sleep(3)
print("\nGet the command: " + command_str)
Execute_Command(command_str)
ff.truncate()
time.sleep(2)
def Execute_Command(command_str):
# 执行指令函数
dic_command={
"关机":"shutdown -s -t ",
"重启":"shutdown -r -t ",
"word":"C:\\...\\xxx.docx"
}
execute_password = "******"
# 权限密码随意设定
command_ls = command_str.split(",")
if len(command_ls) >= 3:
print("Executing command.")
if command_ls[0] == "关机" or command_ls[0] == "重启":
if int(command_ls[1]) <= 120:
command_ls[1] = "120"
else:
pass
if command_ls[2] == execute_password:
command_cmd = dic_command[command_ls[0]] + command_ls[1]
os.system(command_cmd)
else:
print("execute_password is wrong,No permission!")
elif command_ls[0] == "word":
if command_ls[2] == execute_password:
command_cmd = dic_command[command_ls[0]]
os.system(command_cmd)
else:
print("execute_password is wrong,No permission!")
Get_Command()
注意事项
- 在执行消息处理py的时候,要注意一下command.txt要先清空一下
- 登陆机器人最好用小号,以免造成不必要的麻烦
- 在尝试关机操作的时候,注意要保存电脑重要文件,以免丢失 在cmd中输入shutdown -a也可以注销刚刚的关机操作
拓展延伸
- 要想把程序伪装一下,也十分简单,用PyInstaller把他做成一个可执行文件,然后再把可执行文件进行后缀修改,就会变成一个看似正常的软件。
- 想要执行除了关机、重启、打开文件之外的操作都可以尝试,cmd指令大全等着你!
- 当然,发送消息的方式有很多,比如邮件、QQ、微信等等,这些都可以用来进行远程控制,之前我在网上看到的是一位大佬自己写的Getmail的包,这个包只需要一个开通POP3的邮箱及密码,就可以实现邮件内容的获取及处理,后续我们仅需要调用他这个库即可。大家如果想要源代码的话,可以关注私信我取。