发表上一遍博客《每个人都应该有属于自己的VPN协议》和相关代码之后,相继收到很多同学的评论和邮件——真没想到我的博客还有人来读啊……
关于pysectunnel.py的使用方法,现在这个小程序仅仅是刚好能用的状态,很丑,很低效。所以我决定还是闭关修炼一段时间,等小玩意儿完善一些了在正式发布吧。
敬请耐心等待。
strongpapa
发表上一遍博客《每个人都应该有属于自己的VPN协议》和相关代码之后,相继收到很多同学的评论和邮件——真没想到我的博客还有人来读啊……
关于pysectunnel.py的使用方法,现在这个小程序仅仅是刚好能用的状态,很丑,很低效。所以我决定还是闭关修炼一段时间,等小玩意儿完善一些了在正式发布吧。
敬请耐心等待。
strongpapa
既然有些技术是基于协议识别的和DPI的,为什么不自己创造一种VPN协议呢?
一个及其简单的原型,需要配合squid和国外VPS使用,欢迎来信索取使用方式。
#!/usr/bin/env python import sys import socket import threading import time help_msg =""" Info: pysectunnel forwards encrypted data from local_port to sink_port on sink_host. Usage: pysectunnel local_port sink_host sink_port """ LOGGING=0 LOG_LEVEL=1 def log(log_level, log_str): if LOGGING: if log_level <= LOG_LEVEL: print '%s:%s' % (time.ctime(), log_str) sys.stdout.flush() def encrypt_data(data): encrypted_data=[] for i in range(len(data)): encrypted_data.append( chr(ord(data[i]) ^ 0x17) ) return ''.join(encrypted_data) class TunnelThread(threading.Thread): def __init__(self, local_sc, sink_sc, encrypt_enable): threading.Thread.__init__(self) self.local_sc = local_sc self.sink_sc = sink_sc log(1, 'Creating new tunnel thread %s ( %s -> %s )' % ( self, self.local_sc.getpeername(), self.sink_sc.getpeername() ) ) def run(self): while True: try: data = self.local_sc.recv(1024) if not data: break encrypted_data = encrypt_data(data) self.sink_sc.sendall(encrypted_data) except: break log(1, 'Terminating tunnel thread %s' % self) class TunnelManager: def __init__(self, local_port, sink_host, sink_port): self.local_port = int(local_port) self.sink_host = sink_host self.sink_port = int(sink_port) print 'Initializing PySecTunnel...' def work(self): print 'PySecTunnel working...' manager_sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) manager_sc.bind(('0.0.0.0', self.local_port)) manager_sc.listen(5) while True: local_sc, address = manager_sc.accept() print 'Accepted connection from %s:%s' % address sink_sc = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) try: sink_sc.connect( ( self.sink_host, self.sink_port ) ) log (1, 'Creating new tunnel thread %s ( %s -> %s )' % (self, local_sc.getpeername(), sink_sc.getpeername() ) ) except: log(0, 'Error connecting') TunnelThread( local_sc, sink_sc, 0 ).start() TunnelThread( sink_sc, local_sc, 1 ).start() def main(): if len(sys.argv) != 4: print help_msg return 1 local_port = sys.argv[1] sink_host = sys.argv[2] sink_port = sys.argv[3] tunnel_manager = TunnelManager(local_port, sink_host, sink_port) tunnel_manager.work() return 0 if __name__=='__main__': sys.exit(main())
协议:PPTP
服务器地址:strongpapa.info
用户名:strongbaby
密码:strongbaby
WinXP配置教程:http://strongpapa.info/papa/?p=48
希望壮壮早点出院,全家团聚。
首先在开始菜单打开控制面板,然后在控制面板里找到“网络链接”。双击“网络链接”,得到如下图像:
如上图所示,单击“创建一个新的连接”,进入下图所示界面:
单击“下一步”按钮,进入下图所示界面:
如上图所示,选择“连接到我的工作场所的网络”,然后单击下一步,进入如下界面:
如上图所示,选择网络链接的类型为“虚拟专用网络链接”,然后单击下一步,进入下图所示界面:
如上图所示,输入公司名,即链接表示名称。此处输入“strongpapa.info”以表示对本站的敬仰,感谢我,哈哈。
单击“下一步”,进入下图所示界面:
如上图所示,选择“不初始连接”,然后单击下一步,进入下图所示界面:
如上图所示,此处输入PPTP VPN服务器的地址。本站地址为:strongpapa.info。这里不得不敬仰我啦。
单击下一步,进入下图所示界面:
单击完成,VPN链接就创建好啦。
然后在桌面上双击新建的VPN链接图标,如下图所示,输入用户名和密码就可以上网啦。如下图所示:
虽然不是什么大作,鉴于截图如此费劲,还是敬仰我一下吧,^_^。
My alpha.
William.