Skip to content

Instantly share code, notes, and snippets.

View StoneMoe's full-sized avatar

Lake Chan StoneMoe

View GitHub Profile
@StoneMoe
StoneMoe / init.bat
Created April 12, 2017 15:49
Add to Cmder init.bat to support utf-8
@chcp 65001 > nul
@set PYTHONIOENCODING=utf-8
@StoneMoe
StoneMoe / Naive-VPN.md
Created March 19, 2017 12:25 — forked from klzgrad/Naive-VPN.md
朴素VPN:一个纯内核级静态隧道

朴素VPN:一个纯内核级静态隧道

由于路由管控系统的建立,实时动态黑洞路由已成为最有效的封锁手段,TCP连接重置和DNS污染成为次要手段,利用漏洞的穿墙方法已不再具有普遍意义。对此应对方法是多样化协议的VPN来抵抗识别。这里介绍一种太简单、有时很朴素的“穷人VPN”。

朴素VPN只需要一次内核配置(Linux内核),即可永久稳定运行,不需要任何用户态守护进程。所有流量转换和加密全部由内核完成,原生性能,开销几乎没有。静态配置,避免动态握手和参数协商产生指纹特征导致被识别。并且支持NAT,移动的内网用户可以使用此方法。支持广泛,基于L2TPv3标准,Linux内核3.2+都有支持,其他操作系统原则上也能支持。但有两个局限:需要root权限;一个隧道只支持一个用户。

朴素VPN利用UDP封装的静态L2TP隧道实现VPN,内核XFRM实现静态IPsec。实际上IP-in-IP隧道即可实现VPN,但是这种协议无法穿越NAT,因此必须利用UDP封装。内核3.18将支持Foo-over-UDP,在UDP里面直接封装IP,与静态的L2TP-over-UDP很类似。

创建一个朴素VPN

function ocr() {
var image = document.querySelector("#myimg6"); // 取验证码
var canvas = document.createElement('canvas');
var ctx = canvas.getContext("2d");
var numbers = [ //0-9和a-z的明暗值
"0",
"0",
"1100001111100000011110011000110011110011111111001111111001111111001111111001111111001111111001111111000000001100000000011111111111111111111111111111111111111111",
"1100001111000000011100111100111111110011111110001111000001111100000111111110001111111100111111110011000000011110000011111111111111111111111111111111111111111111",
"1111000111111100011111100001111111100111110010011110011001110011100111000000001100000000111111100111111000001111100000011111111111111111111111111111111111111111",
@StoneMoe
StoneMoe / .bashrc
Created February 24, 2017 15:23
my .bashrc
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
@StoneMoe
StoneMoe / tcp_bbr.sh
Created December 15, 2016 11:22
Enable tcp_bbr for your debian/ubuntu (tested on debian)
#Download 4.9-rc7 kernel
wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.9-rc7/linux-headers-4.9.0-040900rc7_4.9.0-040900rc7.201611271731_all.deb
wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.9-rc7/linux-headers-4.9.0-040900rc7-generic_4.9.0-040900rc7.201611271731_amd64.deb
wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.9-rc7/linux-image-4.9.0-040900rc7-generic_4.9.0-040900rc7.201611271731_amd64.deb
#Install kernel
sudo dpkg -i 'linux-headers-4.9*.deb' 'linux-image-4.9*.deb'
@StoneMoe
StoneMoe / git_autodeploy.sh
Last active June 4, 2017 20:50
Setup wizard for auto deploy your latest code via git
#!/usr/bin/env bash
# Tested on Debian 8.3
echo "============================================="
echo "Git auto deploy setup wizard"
echo "This script will create a auto-deploy project"
echo "============================================="
echo "Input a unique name for this project"
printf "This will also be directory name:"
@StoneMoe
StoneMoe / mongodb.gist
Created August 3, 2016 14:56
Mongodb manage commands gist
# Mongodb get collection key names
mr = db.runCommand({
"mapreduce" : "input_collection_name_here",
"map" : function() {
for (var key in this) { emit(key, null); }
},
"reduce" : function(key, stuff) { return null; },
"out": "input_collection_name_here" + "_keys"
});
@StoneMoe
StoneMoe / gulpfile.js
Created May 17, 2016 12:18
My gulp workflow file
var gulp = require('gulp');
var browserSync = require('browser-sync');
var less = require('gulp-less');
var autoprefixer = require('gulp-autoprefixer');
var minifyCSS = require('gulp-minify-css');
var notify = require('gulp-notify');
var gutil = require('gulp-util');
var cp = require('child_process');
var path = require('path');
var uglify = require('gulp-uglify');
@StoneMoe
StoneMoe / package.json
Last active May 17, 2016 12:17
My gulp workflow packages
{
"name": "general-gulp",
"version": "0.0.0",
"description": "StoneMoe's front-end workflow",
"main": "gulpfile.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "StoneMoe",
"devDependencies": {
@StoneMoe
StoneMoe / bash_telegram_bot_sendmsg.sh
Last active May 15, 2016 09:11
Linux login telegram bot alert
echo "Welcome, "$(whoami)
login_notice_id="" # admin's telegram id
login_notice_username=$(whoami)
login_notice_token="" # telegram bot token
curl --silent --data "chat_id=${login_notice_id}&text=${login_notice_username}&parse_mode=HTML&disable_web_page_preview=true" -o /dev/null https://api.telegram.org/bot$(login_notice_token)/sendMessage
printf "\n"