Skip to content

Instantly share code, notes, and snippets.

View bugparty's full-sized avatar
🎯
Focusing

Bowen Han bugparty

🎯
Focusing
View GitHub Profile
@ipepe
ipepe / install-chrome-headless.sh
Last active June 12, 2024 13:34
Installing headless chrome on Ubuntu.
#!/bin/bash
# from https://chromium.woolyss.com/
# and https://gist.github.com/addyosmani/5336747
# and https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:canonical-chromium-builds/stage
sudo apt-get update
sudo apt-get install chromium-browser
chromium-browser --headless --no-sandbox http://example.org/
@mangege
mangege / check_unicom_cache.rb
Last active August 8, 2017 17:32
检查有效的联通缓存服务器ip
require 'uri'
require 'net/http'
require 'timeout'
def check_server(ip)
uri = URI('http://ip.mangege.com/')
Timeout::timeout(3) do
Net::HTTP.start(ip, 80) do |http|
request = Net::HTTP::Get.new uri
@bishboria
bishboria / springer-free-maths-books.md
Last active June 8, 2024 06:39
Springer made a bunch of books available for free, these were the direct links
@klzgrad
klzgrad / Naive-VPN.md
Created November 17, 2014 00:43
朴素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

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <ctype.h>
#include "bencode.h"
#define MAX_ALLOC (((size_t) -1) / sizeof(struct bencode *) / 2)
@prife
prife / sth_about_struct_in_C.txt
Created October 2, 2012 07:26
ANSI C中struct型数据的内存布局与对齐问题
《ANSI C中struct型数据的内存布局与对齐问题》
楼主自述:本文是笔者的一篇读书笔记,原文见参考文献1。笔者从原文中获取了很多知识,并根据编译器输出做了进一步的总结。
下面是正文。
--------------------------------------------------------------------------------
在VS2005中,如果使用/zp指定了内存对齐的边界,将这个边界记为ZP
1. ANSI C标准规定结构体类型的对齐要求不能比它所有字段中要求最严格的那个宽松,可以更严格(但此非强制要求,VC7.1就仅仅是让它们一样严格)将struct所有字段中要求最严格的字段的对齐记为ST。
2. 如果没有指定ZP时,对结构体内的某个域(假设其基本数据类型为T)的对齐模数(也就是此域的对齐地址)就是T的大小,即sizeof(T)。如果指定了ZP,此时结构体每个feild的对齐地址为当前这个域的sizeof值与ZP的中较小的值。
@ichord
ichord / gist:2786290
Created May 25, 2012 06:59
SAE storage for Django
# -*- coding: utf-8 -*-
import os, time, random
from django.core.files.base import File
from django.core.files.storage import Storage
from django.conf import settings
from django.core.files import File
import sae.storage
try:
from cStringIO import StringIO
except ImportError:
// Answer to http://github.com/ry/http-parser/issues/#issue/1
// UNTESTED
struct line {
char *field;
size_t field_len;
char *value;
size_t value_len;
};