FRP内网穿透


前言

政府就是政府,网络安全要做到第一位,分配的服务器都要在堡垒机之下才能访问,所以得想招给代理出来,也给自己方便不是。
既然要反代理,就选的FRP,开源。。。。(不花钱)

FRP服务器搭建

下载对应版本的frp(包括服务端和客户端):大型同性交友网站

window客户端+服务端Linux客户端+服务端arm客户端+服务端
0.51.3frp_0.51.3_windows_amd64.zipfrp_0.51.3_linux_amd64.tar.gzfrp_0.51.3_linux_arm64.tar.gz
0.38.0frp_0.38.0_windows_amd64.zipfrp_0.38.0_linux_arm64.tar.gz

具体服务端配置文件信息frps.ini:

[common]
bind_port = 7000
#dashboard 用户名
dashboard_user = user1
#dashboard 密码
dashboard_pwd = user1
#dashboard 端口,启动成功后可通过浏览器访问如http://ip:7500
dashboard_port = 7500
token = 8d262f2b-6dba-4a8d-857e-8a53d1d439e2

运行服务端至后台

[root@w7 frp_0.33.0_linux_amd64]# nohup /root/frp/frp_0.33.0_linux_amd64/frps -c frps.ini &
2020/06/09 22:28:59 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/06/09 22:28:59 [I] [service.go:277] Dashboard listen on 0.0.0.0:7500
2020/06/09 22:28:59 [I] [root.go:209] start frps success

运行之后可访问http://IP:7500
微信截图_20200609223912.png

FRP客户端(linux)

具体的客户端配置文件信息:

[common]
# 配置服务端对外的ip地址
server_addr = xxx.xxx.xxx.xxx
#配置服务端监听的端口
server_port = 7088

#如果服务端配置token,将服务端配置的token复制到此处
token = 8d262f2b-6dba-4a8d-857e-8a53d1d439e2
pool_count = 5

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7122

[ftp]
type = tcp
local_ip = 127.0.0.1
local_port = 21
remote_port = 7121

运行客户端端至后台

[root@localhost frp_0.33.0_linux_amd64]# nohup /root/frp/frp_0.33.0_linux_amd64/frpc -c frpc.ini &
[1] 26153
[root@localhost frp_0.33.0_linux_amd64]# nohup: 忽略输入并把输出追加到'nohup.out'

[root@localhost frp_0.33.0_linux_amd64]# ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  nohup.out  systemd
[root@localhost frp_0.33.0_linux_amd64]# cat nohup.out 
2020/06/09 10:55:56 [I] [service.go:282] [0d80fe0bb829cc87] login to server success, get run id [0d80fe0bb829cc87], server udp port [0]
2020/06/09 10:55:56 [I] [proxy_manager.go:144] [0d80fe0bb829cc87] proxy added: [ssh ftp]
2020/06/09 10:55:56 [I] [control.go:179] [0d80fe0bb829cc87] [ssh] start proxy success
2020/06/09 10:55:56 [I] [control.go:179] [0d80fe0bb829cc87] [ftp] start proxy success

linux systemctl方式进程守护

/etc/systemd/system下新建frpc.service文件,内容如下:

[Unit]
Description=Frp client
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini

[Install]
WantedBy=multi-user.target

FRP客户端(window)

具体的客户端配置文件信息:

[common]
# 配置服务端对外的ip地址
server_addr = xxx.xxx.xxx.xxx
#配置服务端监听的端口
server_port = 7088

#如果服务端配置token,将服务端配置的token复制到此处
token = 8d262f2b-6dba-4a8d-857e-8a53d1d439e2
pool_count = 5

[mstsc]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7133

创建一个文件run.vbs

Set ws = CreateObject("Wscript.Shell") 
   ws.run "cmd /c C:\frp_0.33.0_windows_amd64\frpc.exe -c C:\frp_0.33.0_windows_amd64\frpc.ini",vbhide  (这里注意要改为你的文件位置)

运行以下vbs文件就可以了

这样就大功告成,访问服务端的7122就相当于访问内网被隔离的机器22端口


树莓派使用vlmcsd自建KMS服务~一句命令激活windows/office


为了廉价,又用的树莓派,说真的,我家的树莓派真的惨。。。。
win10下载地址:https://www.microsoft.com/zh-cn/software-download/windows10
好了,正题开始
vlmcsd是用c写的开源KMS模拟器,效率高且安全可靠。可用来替代旧的python版和闭源版服务。
已经有不少x64平台的镜像,但ARM平台的机器是不能直接拿来用的,所以我弄了支持ARM机器的镜像。
目前支持架构:

用Docker部署KMS服务器(支持ARM平台)

arm64v8:64位ARM平台,如树莓派3b群晖DS218play,威联通TS-212P3等
arm32v7:32位ARM平台,如树莓派2,树莓派3等
amd64:x64平台,如群晖DS218+等

宝塔操作就简单了,之后可能会写个源码安装docker

1.首先后去镜像
命令行:docker pulln mjysci/vlmcsd:arm64v8
宝塔直接拉取:mjysci/vlmcsd:arm64v8
2.新建容器:
命令行:docker run -dn -p 1688:1688 --restart=on-failure:5 --name vlmcsd mjysci/vlmcsd:arm64v8
宝塔直接创建容器:端口添加1688其他默认就好
QQ截图20200604214246.jpg

激活windows

VL版本的镜像一般内置GVLK key,可以直接省略第一步和第二步。
kms激活的前提是你的系统是批量授权版本,即VL版,一般企业版都是VL版,专业版有零售和VL版,家庭版旗舰版OEM版等等那就肯定不能用kms激活。一般建议从msdn上面下载系统.
VL版本的镜像一般内置GVLK key,用于kms激活。如果你手动输过其他key,那么这个内置的key就会被替换掉,这个时候如果你想用kms,那么就需要把GVLK key输回去。首先,到微软中获取key获取你对应版本的KEY

slmgr /upk
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr /skms kms.bug-maker.com
slmgr /ato

激活office

OFFICE必须是VOL版本

PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /inpkey:NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
<Product key installation successful>
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /act
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
LICENSE NAME: Office 19, Office19ProPlus2019VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 19, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: 6MWKP
ERROR CODE: 0xC004F074
ERROR DESCRIPTION: The Software Licensing Service reported that the product could not be activated. No Key Management Service (KMS) could be contacted. Please see the Application Event Log for additional information.
To view the activation event history run: cscript ospp.vbs /dhistorykms
NOTICE: A KB article has been detected for activation failure: 0xC004F074
FOR MORE INFORMATION PLEASE VISIT: https://support.microsoft.com/kb/2870357#Error0xC004F074
---------------------------------------
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /sethst:kms.bug-maker.com
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
Successfully applied setting.
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /act
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
LICENSE NAME: Office 19, Office19ProPlus2019VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 19, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: 6MWKP
<Product activation successful>
---------------------------------------
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /dstatus
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
PRODUCT ID: 00414-50000-00000-AA844
SKU ID: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
LICENSE NAME: Office 19, Office19ProPlus2019VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 19, VOLUME_KMSCLIENT channel
BETA EXPIRATION: 1601/1/1
LICENSE STATUS:  ---LICENSED---
ERROR CODE: 0x4004F040 (for information purposes only as the status is licensed)
ERROR DESCRIPTION: The Software Licensing Service reported that the product was activated but the owner should verify the Product Use Rights.
REMAINING GRACE: 180 days  (259200 minute(s) before expiring)
Last 5 characters of installed product key: 6MWKP
Activation Type Configuration: KMS
        DNS auto-discovery: KMS name not available
        KMS machine registry override defined: kms.bug-maker.com:1688
        Activation Interval: 120 minutes
        Renewal Interval: 10080 minutes
        KMS host caching: Enabled
---------------------------------------
---------------------------------------
---Exiting-----------------------------

跨平台密码管理器-bitwarden_rs安装与使用


前言

有人用过1password,但是对于贫穷的我来说真的很贵,那咱就找找开源,免费,跨平台,安全,好管理,好用,能自动填充密码的密码管理解决方案。LastPass和Bitwarden就是开源方案的代表,但是LastPass的跨平台体验较差,使我最终选择Bitwarden。

bitwarden_rs安装教程

对应网站:
官网:https://bitwarden.com/
第三方开源项目:https://github.com/dani-garcia/bitwarden_rs

Bitwarden官方推荐使用Docker镜像安装,但是Bitwarden 服务器使用 .Net 开发,如果使用 Docker 来部署,镜像体积过大;此外它使用 MSSQL 数据库,部署这个数据库对服务器配置要求比较高。

而bitwarden_rs是第三方开发的Bitwarden安装镜像。bitwarden_rs采用 Rust 实现了 Bitwarden服务器,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。测试在1024MB内存上机子完美运行bitwarden_rs。

硬件要求

本人准备把bitrs放在家里的树莓派中,4h1g的树莓派3b+,本人家里有公网ip,外网80等端口也可访问,主要是为了降低成本,所以直接再树莓派中安装。

软件要求

树莓派安装的宝塔,一切就变得简单了,首先是需要一个docker,在宝塔的插件中安装docker
(由于是树莓派,安装是真的慢)

安装步骤

直接拉取bitwardenrs/server:raspberry的docker镜像
微信截图_20200528110615.png
或者
具体的命令行就需要操作这两行,因为再宝塔中创建的容器参数不能调整,所以用命令行。

sudo docker pull mprasil/bitwarden:raspberry
sudo docker run -d --restart=always --name bitwarden -v /bw--data/:/data/ -p 8880:80 mprasil/bitwarden:raspberry

代理

其实安装完容器就已经能用了,但是还是需要个域名,那咱就再宝塔中新建个站点来代理访问
首先创建个空白的静态站,然后在申请个ssl,在设置中设置代理就ok了
微信截图_20200528105142.png

使用

经过初始化和设置最终进入网页版后台:
微信截图_20200528105645.png

在chrome上安装扩展之后的使用

微信截图_20200528111527.png

效果

具体的把还得自己感觉舒服才叫好,我就上个自己用的图把。
微信截图_20200528125622.png


QQ群Hook机器人API


妈耶,QQ群出了个机器人的hook,那不得赶紧的用上,想想都美滋滋啊,这样以后通知啥的用hook不就完事了。
这部扎心了么,今天突然退群了,完了 hook是不是用不了了啊

<?php

/**
 * Class QQ_HOOK_ROBOT
 * author 猪在天上飞
 * date 2020/04/13
 * update 2020/04/13
 */
class QQ_HOOK_ROBOT
{
    public static $_instance;
    public static $httpApi;
    public static $message;

    /**
     * @param $array
     */
    public static function setApi($array)
    {
        //hookrobot_api build
        self::$httpApi = $array["api"] . "?" . http_build_query($array["query"]);
        self::init();
    }

    /**
     * 初始化
     * 看腾讯hookrobot后续会新加啥
     */
    public static function init()
    {
        //这样是为了兼容后续腾讯hookrobot会增加参数
        self::$message = array(
            "content" => array()
        );
    }

    /**
     * 设置单实例
     * @param QQ_HOOK_ROBOT $hook
     */
    public static function set(QQ_HOOK_ROBOT $hook)
    {
        self::$_instance = $hook;
    }

    /**
     * 获取单实例
     * @return QQ_HOOK_ROBOT
     */
    public static function get()
    {
        if (empty(self::$_instance)) {
            die("Exception: Single instance is not set");
        }
        return self::$_instance;
    }

    /**
     * @param $msg
     * @param int $type 目前是0,可能后续腾讯hookrobot会有新增加
     */
    public static function setMsg($msg, $type = 0)
    {
        self::$message["content"][] = array(
            "type" => $type,
            "data" => $msg
        );
    }

    /**
     * 发送
     * 第一个是http代号,测试出一直是500
     * 第二个是api返回的内容,现在一直是null
     * @return array
     */
    public static function send()
    {
        $json = json_encode(self::$message);
        // encode 后,就初始化msg
        self::init();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, self::$httpApi);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER,
            array(
                'Content-Type: application/json; charset=utf-8',
                'Content-Length: ' . strlen($json)
            )
        );
        ob_start();
        curl_exec($ch);
        $return_content = ob_get_contents();
        
        ob_end_clean();
        return array(
            curl_getinfo($ch, CURLINFO_HTTP_CODE),
            $return_content
        );
    }
}

// hookrobot  new 对象,set 单实例
$hook = new QQ_HOOK_ROBOT();
$hook->setApi(
    array(
        //hookrobot_api
        "api" => "https://app.qun.qq.com/cgi-bin/api/hookrobot_send",
        //这样做是为了后续腾讯hookrobot更新的新参数
        "query" => array(
            // 这里是 key,自己改成自己群hook的key
            "key" => "a8ce943a6fd7d48626538a306a74fea1e8fdf9ba"
        )
    )
);
QQ_HOOK_ROBOT::set($hook);

//调用方法 1

//这里添加消息内容  可以多次调用
QQ_HOOK_ROBOT::setMsg("test 1");
QQ_HOOK_ROBOT::setMsg("test 2");

// 最后,添加消息完后,发送
//QQ_HOOK_ROBOT::send();

//或则 打印返回的内容
var_dump(QQ_HOOK_ROBOT::send());


//调用方法 2
// 可以获取hookrobot单实例,类比上面的set
$hook = QQ_HOOK_ROBOT::get();
$hook->setMsg("get test 1");
$hook->setMsg("get test 2");
$hook->send();