Skip to content
Permalink
Browse files

dump clipboard image

  • Loading branch information...
Y4er committed Jul 30, 2019
1 parent ea34833 commit 7f29fd50547ba30b60778d6618b2228c9e394e78
@@ -0,0 +1,88 @@
---
title: "使用powershell导出剪切板图片"
date: 2019-07-30T08:57:16+08:00
lastmod: 2019-07-30T08:57:16+08:00
draft: false
tags: ['powershell']
categories: ['瞎折腾']
comment: true
---

怎么导出QQ截图的图片到指定位置呢?powershell来帮你

<!--more-->
我是一个喜欢记笔记写文章的菜鸡,而使用markdown记笔记最蛋疼的就是图片的存储问题,刚开始使用的是[PicGo](https://github.com/Molunerfinn/PicGo),可以直接截图然后粘贴就是markdown的图片语法,但是使用的是第三方的图床。

而我自己原来用第三方图床也就是新浪的图床,后来新浪一波防盗链把我搞得~~骂骂咧咧~~措手不及,想了想,图片还是掌握在自己手中比较好,于是就有了本文。

# 借助PicGo搞插件?

刚好自己搭了一个图床http://static.chabug.org/ ,想着参考PicGo的思路,自己写一个插件,然后实现截图 快捷键 粘贴 一套操作,岂不是美滋滋?后来看到了PicGo需要装nodejs才能用插件,再想想nodejs的依赖和蛇皮语法,直接实力劝退,不了了之。

# python自己造轮子

国光师傅写过一篇[Python 编写一个免费简单的图床上传工具二](https://www.sqlsec.com/2018/06/img.html),但是编写思路是采用`xclip`来操作`ubuntu`下的剪切板,而苦逼windows党不配这样操作。随卒。

# 参考PicGo自己撸

研究到这一步,实际上最关键的问题在于win下怎么去导出剪切板中的图片。百度谷歌了很多文章,发现都是牛头不照马尾,在此过程中我把PicGo作者的博客翻烂了,发现PicGo作者获取剪切板的图片采用的是命令行调用 https://github.com/PicGo/PicGo-Core/blob/dev/src/utils/clipboard/windows10.ps1 这个脚本。在第一行定义了最关键的项目https://github.com/octan3/img-clipboard-dump。这个就是我们想要的东西!

那么我们的问题就解决了!

看下**dump-clipboard-png.ps1**

```powershell
Add-Type -Assembly PresentationCore
$img = [Windows.Clipboard]::GetImage()
if ($img -eq $null) {
Write-Host "Clipboard contains no image."
Exit
}
$fcb = new-object Windows.Media.Imaging.FormatConvertedBitmap($img, [Windows.Media.PixelFormats]::Rgb24, $null, 0)
$file = "{0}\clipboard-{1}.png" -f [Environment]::GetFolderPath('MyPictures'),((Get-Date -f s) -replace '[-T:]','')
Write-Host ("`n Found picture. {0}x{1} pixel. Saving to {2}`n" -f $img.PixelWidth, $img.PixelHeight, $file)
$stream = [IO.File]::Open($file, "OpenOrCreate")
$encoder = New-Object Windows.Media.Imaging.PngBitmapEncoder
$encoder.Frames.Add([Windows.Media.Imaging.BitmapFrame]::Create($fcb))
$encoder.Save($stream)
$stream.Dispose()
& explorer.exe /select,$file
```

首先获取剪切板的图片,如果没图片就exit,然后新建一个位图对象,新建一个file变量当作文件名,从环境变量中拿到MyPictures的路径,然后写入图片。

相对我们想实现的效果还差一步就是直接向剪切板写入markdown格式的图片链接。我在这放出来我修改之后的脚本。(注意修改路径)

```powershell
Add-Type -Assembly PresentationCore
$img = [Windows.Clipboard]::GetImage()
if ($img -eq $null) {
Write-Host "Clipboard contains no image."
Exit
}
$fcb = new-object Windows.Media.Imaging.FormatConvertedBitmap($img, [Windows.Media.PixelFormats]::Rgb24, $null, 0)
$filename = ((Get-Date -f s) -replace '[-T:]','')
$file = "E:/work/myblog/static/img/uploads/{0}.png" -f $filename
Write-Host ("`n Found picture. {0}x{1} pixel. Saving to {2}`n" -f $img.PixelWidth, $img.PixelHeight, $file)
$stream = [IO.File]::Open($file, "OpenOrCreate")
$encoder = New-Object Windows.Media.Imaging.PngBitmapEncoder
$encoder.Frames.Add([Windows.Media.Imaging.BitmapFrame]::Create($fcb))
$encoder.Save($stream)
$stream.Dispose()
$str = "![{0}](/img/uploads/{1}.png)" -f $filename,$filename
[Windows.Clipboard]::SetText($str)
```

然后把`dump-clipboard-png.cmd`改名为`png.cmd``png.ps1`放到环境变量里,截图,cmd运行`png`,那么你的剪切板就会写入一个markdown格式的图片咯。并且图片保存在了你的本地。
# 进一步操作
到现在我们基本的效果已经实现了,不过还是差一点,怎么去实现按下快捷键就导出图片到我们指定的位置呢?参考国光师傅的代码已经写的很清楚了。

https://github.com/sqlsec/imageMD/blob/master/imageMD.py

**文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。**
@@ -1,5 +1,5 @@
---
title: "内网渗透 Part1 初步认识内网拓扑"
title: "内网渗透 Part 1 初步认识内网拓扑"
date: 2019-07-29T10:39:00+08:00
lastmod: 2019-07-29T10:39:00+08:00
draft: false
@@ -14,9 +14,7 @@ comment: true

# 写在前面

> 近半个月 [@X1r0z](http://exp10it.cn/) 给团队里录了内网渗透的课,我看了之后学到的东西比较多,所以想把自己学到的和X1r0z讲到的写成文章,真真正正把X1r0z的东西学到自己肚子里。
[X1r0z](http://exp10it.cn/)是根据 [内网渗透精英集训班](https://college.360.cn/class2.html) 这门课来讲的,我准备从最基础的开始写,慢慢深入内网,扒光内网的衣服,达到一个由浅入深的效果。在阅读本文之前需要注意的是笔者也是一个小白,对于内网跟读者一样,也是从零开始的去学习,如果有错,欢迎各位大师傅斧正。
> 近半个月 [@X1r0z](http://exp10it.cn/) 给团队里录了内网渗透的课,我看了之后学到的东西比较多,所以想把自己学到的和X1r0z讲到的写成文章,真真正正把X1r0z的东西学到自己肚子里。在阅读本文之前需要注意的是笔者也是一个小白,对于内网跟读者一样,也是从零开始的去学习,如果有错,欢迎各位大师傅斧正。
# 初识IP协议

@@ -60,7 +58,7 @@ baidu.com的IP是220.181.38.148,360.cn的IP是111.13.66.226,他们都是公

再画一个图

![1564386368530](/img/uploads/1564386368530.png)
![20190729191414](/img/uploads/20190729191414.png)

nat技术通过将公网IP转化为内网IP以此实现拓展IP地址,减少IP地址浪费的效果。

@@ -0,0 +1,80 @@
---
title: "内网渗透 Part 2 虚拟机搭建内网环境"
date: 2019-07-29T18:35:52+08:00
lastmod: 2019-07-29T18:35:52+08:00
draft: true
tags: ['内网渗透']
categories: ['pentest']
comment: true
---

继上一篇文章,我们继续学习内网。

<!--more-->

> 近半个月 [@X1r0z](http://exp10it.cn/) 给团队里录了内网渗透的课,我看了之后学到的东西比较多,所以想把自己学到的和X1r0z讲到的写成文章,真真正正把X1r0z的东西学到自己肚子里。在阅读本文之前需要注意的是笔者也是一个小白,对于内网跟读者一样,也是从零开始的去学习,如果有错,欢迎各位大师傅斧正。
# VMware的网络模式

VMware安装完成之后,会在本地创建两个网络适配器当作虚拟机的虚拟网卡,分别为vmnet1和vmnet8,还有一个vmnet0。其中vmnet8用于nat模式链接网络。两张网卡的IP地址是随机生成的,而我们习惯上把虚拟网卡使用的网段“固定”,也就是修改一个好记的IP段。

打开虚拟机 - 编辑 - 虚拟网络编辑器,更改网卡需要管理员权限,点右下角的**更改设置**

然后将IP分配为如下,当然你也可以自己分配。

| 模式 | IP段 | 子网掩码 |
| :---------------: | :--------: | :-----------: |
| vmnet8 nat模式 | 172.16.1.0 | 255.255.255.0 |
| vmnet1 仅主机模式 | 172.16.0.0 | 255.255.255.0 |

如图

![](/img/uploads/20190729191415.png)

VMware有几种网络模式,分别是
- 桥接模式 Bridged
- NAT模式
- 仅主机模式 Host-Only

不同的网络模式有不同的作用,我们分别来讲一讲

## 桥接

桥接的时候,虚拟机会通过vmnet0直接连接到宿主机所在的网络,和宿主机在同一网段。

拓扑图

![](/img/uploads/20190729192019.png)

虚拟机使用桥接A,A1,A2,B可互访。

## nat
使用vmnet8,此时虚拟机单向通往其他物理机,其他物理机不能访问虚拟机,但宿主机可以访问虚拟机。

拓扑图

![](/img/uploads/20190729192458.png)

使用NAT方式,A1,A2可以访问B,但B不可以访问A1,A2。

A,A1,A2可以互访。

## 仅主机
使用Vmnet1,此时虚拟机只能与虚拟机、宿主机互访,不能上Internet,其网络拓扑如图所示

![](/img/uploads/20190729192711.png)

使用Host方式,A,A1,A2可以互访,但A1,A2不能访问B,也不能被B访问。











**文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。**

File renamed without changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 7f29fd5

Please sign in to comment.
You can’t perform that action at this time.