声明:<TEST安全>公众号分享的安全工具、漏洞复现和项目均来源于网络,仅供安全研究与学习之用,
如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。
大部分开源微x机器人项目非常复杂,且很难嵌入到自己的项目中而WeChatFerry可定制化非常高,整个代码使用也比较简单,下面介绍一款笔者正在使用的一款机器人,相比源代码稍微做了一些修改,同时本次也会讲到跨几门编程语言开发方式,WeChatFerry使用Python开发,也就是如果你熟悉Python可以直接使用Python直接开发,如果你不熟悉Python也可以使用Go语言进行开发,当然你可以可以使用易语言进行开发,本套源码里面我会提供Python源码、go语言开发Demo、易语言开发Demo方便开发者直接开发,可以选择你熟悉的编程,当然稍作修改你也可以实现使用php进行开发,该框架目前是完全免费的,近期测试大量机器人框架,最后选定这款,当然也有其他收费的框架,但是这款框架的功能完全足够使用,你只需要参照作者文章即可实现自己的机器人开发。
1、需要安装指定版本3.9.10.27,下面提供两个下载地址,任选其一,下载完成后直接安装
https://www.xsssql.com/wp-content/uploads/2024/10/WeChatSetup-3.9.10.27.zip
https://github.com/lich0821/WeChatRobot/releases/tag/v39.2.4.0
安装python安装 Python>=3.9(Python 12 需要自己编译依赖,慎选,本文使用的是例如 3.10.11 ,下载地址如下
https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe
然后解压源码 主程序源码
# 升级 pip
python -m pip install -U pip
# 安装必要依赖
pip install -r requirements.txt
# ChatGLM 还需要安装一个 kernel
ipython kernel install --name chatglm3 --user
安装完成后需要先启动Demo,如果你是go语言开发则直接在其他程序联合开发Demogo语言目录运行
go run main.go
然后直接运行main.py
然后扫码登录,登录成功后需要把自动更新功能取消
运行main.py后go语言可以得到如下提示
此时直接使用微信发消息测试,私聊可发送 任意文字,将收到回复如图
群聊可以发送 hello 或 你好 或@你登录的微信 将收到如图回复
争对go语言具体逻辑可在下面的代码片段自行开发即可
// 处理接收到的数据
func handleData(conn net.Conn, data []byte) {
messageStr := string(data)
parts := strings.Split(messageStr, "=_^||^_=")
if len(parts) < 5 { // 如果成员不足 5 个则打印并返回
fmt.Println("Invalid data received:", messageStr)
return
}
// 创建 Message 结构体并赋值
message := Message{
PrimaryCmd: parts[0],
SecondaryCmd: parts[1],
WeChatGroupID: parts[2],
WeChatID: parts[3],
WeChatMsg: parts[4],
}
replyMsg := Message{
PrimaryCmd: "发送消息",
WeChatGroupID: message.WeChatGroupID,
WeChatID: message.WeChatID,
}
// 处理不同类型的消息
switch message.PrimaryCmd {
case "收到闲聊":
replyMsg.MsgType = 0
replyMsg.WeChatMsg = "来自Go的回复,我收到一个闲聊信息,你好啊"
sendData(conn, replyMsg)
case "收到群聊":
replyMsg.MsgType = 1
switch message.WeChatMsg {
case "hello":
replyMsg.WeChatMsg = "来自Go的回复,你好啊,我现在在群里呢"
case "你好":
replyMsg.WeChatMsg = "666"
}
if replyMsg.WeChatMsg != "" {
sendData(conn, replyMsg)
}
case "群聊被艾特":
replyMsg.MsgType = 2
replyMsg.WeChatMsg = "有什么事吗?"
sendData(conn, replyMsg)
}
// 打印结构体内容
fmt.Printf("Parsed Message: %+vn", message)
}
如果你是python用户可在"主程序源码"robot.py文件 下面代码片段直接开发相关功能
def processMsg(self, msg: WxMsg) -> None:
"""当接收到消息的时候,会调用本方法。如果不实现本方法,则打印原始消息。
此处可进行自定义发送的内容,如通过 msg.content 关键字自动获取当前天气信息,并发送到对应的群组@发送者
群号:msg.roomid 微信ID:msg.sender 消息内容:msg.content
content = "xx天气信息为:"
receivers = msg.roomid
self.sendTextMsg(content, receivers, msg.sender)
"""
testinput = msg.roomid+"/"+msg.sender
self.LOG.info("-----------------当接收到消息的时候,会调用本方法 @---------AAAAAAAAAAAA-----------"+testinput)
# 群聊消息
if msg.from_group():
# 如果在群里被 @
if msg.roomid not in self.config.GROUPS: # 不在配置的响应的群列表里,忽略 收到正常的群聊消息
self.LOG.info("-----------------在群里被 @---------777777777777-----------")
tcpbotsend.tcp_send_data("收到群聊","",msg.roomid,msg.sender,msg.content) #将收到的数据通过TCP发送出去
return
if msg.is_at(self.wxid): # 被@
self.LOG.info("-----------------在群里被 @---------888888888888-----------")
#self.toAt(msg) 被@接入机器人
tcpbotsend.tcp_send_data("群聊被艾特","",msg.roomid,msg.sender,msg.content) #将收到的数据通过TCP发送出去
else: # 其他消息
self.LOG.info("-----------------在群里被 @---------999999999999-----------")
tcpbotsend.tcp_send_data("收到群聊", "",msg.roomid,msg.sender, msg.content) # 将收到的数据通过TCP发送出去
self.toChengyu(msg)
return # 处理完群聊信息,后面就不需要处理了
# 非群聊信息,按消息类型进行处理
if msg.type == 37: # 好友请求
self.autoAcceptFriendRequest(msg)
tcpbotsend.tcp_send_data("好友请求", "", msg.roomid, msg.sender, msg.content) # 将收到的数据通过TCP发送出去
elif msg.type == 10000: # 系统信息
self.sayHiToNewFriend(msg)
tcpbotsend.tcp_send_data("系统信息", "", msg.roomid, msg.sender, msg.content) # 将收到的数据通过TCP发送出去
elif msg.type == 0x01: # 文本消息
# 让配置加载更灵活,自己可以更新配置。也可以利用定时任务更新。
self.LOG.info("-----------------收到文本消息--------------------111")
if msg.from_self():
if msg.content == "^更新$":
self.config.reload()
self.LOG.info("已更新")
else:
#self.toChitchat(msg) # 闲聊 收到用户发送的普通文本消息 接入机器人处理
self.LOG.info("----------------闲聊----------A444444444444----------")
tcpbotsend.tcp_send_data("收到闲聊","",msg.roomid,msg.sender,msg.content) #将收到的数据通过TCP发送出去
如果你是易语言用户可在下面代码片段直接开发相关功能
.版本 2
.支持库 EThread
.子程序 TCP_收到数据
.参数 pSender, 整数型
.参数 dwConnID, 整数型
.参数 pData, 整数型
.参数 iLength, 整数型
.局部变量 局部_DATA, 字节集, , , UTF8数据
.局部变量 局部_队列, TCP队列
.局部变量 局部_收到数据分割, 字节集, , "0"
.局部变量 bot, 机器人消息
进入许可区 (全局_许可证_机器人)
全局_dwConnID = dwConnID
退出许可区 (全局_许可证_机器人)
局部_队列.TCP数据 = 到字节集 (“”)
局部_DATA = 指针到字节集 (pData, iLength)
局部_队列.TCP数据 = 局部_DATA
局部_队列.是否已处理 = 假
提示 (#换行符 + “收到TCP数据:” + 编码_Utf8到Ansi_通用 (局部_DATA) + #换行符)
局部_收到数据分割 = 分割字节集 (局部_DATA, 编码_Ansi到Utf8_通用 (“=_^||^_=”), )
.如果真 (取数组成员数 (局部_收到数据分割) ≥ 5)
bot.一级指令 = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [1])
bot.二级指令 = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [2])
bot.微信群ID = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [3])
bot.微信ID = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [4])
bot.微信消息 = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [5])
bot.微信消息 = 删首尾空 (子文本替换 (bot.微信消息, “?”, “”, , , 真))
.如果真 (bot.一级指令 = “收到闲聊”)
提示 (“机器人一级指令:” + bot.一级指令)
bot.消息类型 = 0 ' 0=收到闲聊 1=收到群聊 2=群聊被@
回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “来自易语言的回复,我收到一个闲聊信息,你好啊”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事
返回 ()
.如果真结束
.如果真 (bot.一级指令 = “收到群聊”)
提示 (“机器人一级指令:” + bot.一级指令)
bot.消息类型 = 1 ' 0=收到闲聊 1=收到群聊 2=群聊被@
.如果真 (bot.微信消息 = “hello”) ' 只有收到hello的时候才回复
回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “你好啊,我在群里的”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事
.如果真结束
.如果真 (bot.微信消息 = “你好”) ' 在群里面收到你好的时候 回复 666
回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “666”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事
.如果真结束
返回 ()
.如果真结束
.如果真 (bot.一级指令 = “群聊被艾特”)
提示 (“机器人一级指令:” + bot.一级指令)
bot.消息类型 = 2 ' 0=收到闲聊 1=收到群聊 2=群聊被@
' 当在群里有人@你时 回复 有什么事吗?
回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “有什么事吗?”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事
返回 ()
.如果真结束
如果你不会go语言或python可直接使用易语言进行开发提示,运行 机器人发送信息Demo.e 如图 点击发送消息给用户即可发送想要的消息,然后具体逻辑自行开发
最后由于时间关系,文章没有写java用户demo,java或其他编程用户,只需在本机监听TCP监听8866端口后运行main.py,即可接收到用户发来的消息,如果需要给用户发送消息可以使用TCP按照如下连接字符串发送即可
发送消息=_^||^_=null=_^||^_=群IDl=_^||^_=微信id=_^||^_=要发送的内容=_^||^_=
参考资料
https://github.com/lich0821/WeChatFerry
https://github.com/lich0821/wcf-client-rust
https://github.com/lich0821/WeChatRobot
https://github.com/microsoft/vcpkg/releases
https://mp.weixin.qq.com/s/CGLfSaNDy8MyuyPWGjGJ7w
https://github.com/CliffHan/wechat-bot
关注公众号<TEST安全>回复机器人即可获取下载地址,欢迎添加作者交流
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...