若要实现在 Linux 下的代理程序,方法有很多,比如看着 RFC 1928 来实现一个 socks5 代理并自行设置程序经过 socks5 代理等方式,下文是使用 Linux 提供的 tun/tap 设备来实现 UDP 代理隧道的大体思路和过程讲解. TUN 设备 tun / tap 是由 Linux (可能还有其他 *NIX 系统提供支持)提供的,可以用来实现用户态的网络路由等处理的虚拟网络接口.也就是说,它们允许用户态的程序直接管理这个网络接口,而不是让内核协议栈来处理网络包. 那么很明显…
There are a number of reasons to have a TCP proxy in your tool belt, bothfor forwarding traffic to bounce from host to host, but also when assessingnetwork-based software. When performing penetration tests in enterpriseenvironments, you'll commonly b…
动态代理的步骤: 创建一个实现了InvocationHandler接口的类,必须重写接口里的invoke()方法. 创建被代理的类和接口 通过Proxy的静态方法 newProxyInsatance(ClassLoader loader,Class[] interfaces,InvocationHandler,handler)来创建一个代理 通过代理来调用方法 简单的动态代理实例 package com.sean.zzzjvm; import java.lang.reflect.Invocati…
动态代理的步骤: 创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法. 创建被代理的类和接口 通过 Proxy 的静态方法 newProxyInsatance(ClassLoader loader,Class[] interfaces,InvocationHandler,handler) 来创建一个代理 通过代理来调用方法 简单的动态代理实例 package com.sean.zzzjvm; import java.lang.reflect.In…
1.服务器 #include<winsock2.h> //包含头文件#include<stdio.h>#include<windows.h>#pragma comment(lib,"WS2_32.lib") //连接套接字库int main(){WSADATA data; //定义结构体变量WORD w=MAKEWORD(2,0); //定义套接字版本char sztext[]="欢迎你\r\n"; //定义欢迎信息::WSASt…
Server端: package main import ( "fmt" "net" ) func main() { //创建udp地址 udpAddr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:8080") //服务端建立监听 serverConn, _ := net.ListenUDP("udp", udpAddr) defer func() { server…
代理是网络中的一项重要的功能,其功能就是代理网络用户去取得网络信息.形象的说:它是网络信息的中转站,对于客户端来说,代理扮演的是服务器的角色,接收请求报文,返回响应报文:对于web服务器来说,代理扮演的是客户端的角色,发送请求报文,接收响应报文. 代理具有多种类型,如果是根据网络用户划分的话,可以划分为正向代理和反向代理: 正向代理:将客户端作为网络用户.客户端访问服务端时,先访问代理服务器,随后代理服务器再访问服务端.此过程需客户端进行代理配置,对服务端透明. 反向代理:将服务端作为网络用户.…
自动 1.设置动态的user agent import urllib.request as ure import urllib.parse as upa import random from bs4 import BeautifulSoup # 动态设置user agent: def set_user_agent(): agent_list = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET…
location /aaaaa/ { proxy_pass http://localhost:8080/aaaaa/; } 经过配置,现在访问 http://localhost/aaaaa/   就会转到  http://localhost:8080/aaaaa/ 注意:正斜杠 和 分号  不能少 例子:在nginx中配置代理,就可以把服务器的8080端口关闭,通过代理内部访问 参考…
在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: ? 1 2 3 4 5…
在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: xxx@ubuntu:…
      在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: xxx@u…
最近真的比较忙,很久就想写了,可是一直苦于写点什么,今天脑袋灵光一闪,觉得自己再UDP方面还有些不了解的地方,所以要给自己扫盲. 好了,咱们进入今天的主题,先列一下提纲: 1. UDP是什么,UDP适用于什么场景? 2. 写一个小Demo来加深一下UDP的理解. 3. UDP和TCP的区别有哪些? 4. TCP建连和关闭的过程,为什么建立连接的时候是三次握手,断开连接的时候需要四次? 1. UDP是什么,UDP适用于什么场景? 相信很多同学都听过UDP,UDP的全称:User Datagrame…
前期知识 1.如何编写一个简单的Linux驱动(一)——驱动的基本框架 2.如何编写一个简单的Linux驱动(二)——设备操作集file_operations 前言 在上一篇文章中,我们编写设备驱动遇到了不少问题: (1) 注册设备时,设备号需要程序员给定,每次编写驱动时,程序员需要知道有哪些设备号是空闲的: (2) 加载驱动后,需要用户使用mknod命令手动生成设备节点: (3) 虽然用户程序调用了读写设备的函数,但是并没有数据传输. 在本篇文章中,我们会一次解决这三个问题. 要下载上一篇文章…
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个对象充当的就是一个数据容器,用C语言的话来说就是一个结构体,所有的业务方法都在一个无状态的Service类中实现,Service类仅仅包含一些行为.这是Java Web程序采用的最常用开发模型,你可能采用的就是这种方法,虽然可能不知道它有个“贫血模型”的称号,这要多亏Martin Flower(这个…
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已经介绍过 tap/tun 的原理和配置工具.这篇文章通过一个编程示例来深入了解 tap/tun 的程序结构. 01 准备工作 首先通过 modinfo tun 查看系统内核是否支持 tap/tun 设备驱动. [root@by ~]# modinfo tun filename: /lib/modul…
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章中,我们已经介绍了 tap/tun 的基本原理,本文将介绍如何使用工具 tunctl 和 ip tuntap 来创建并使用 tap/tun 设备. tunctl 安装 首先在 centos 的环境中安装 tunctl. [root@localhost ~]# vim /etc/yum.repos.d…
原文:https://www.cnblogs.com/bakari/p/10449664.html ---------------------------------------------------------- Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备   本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫.…
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但是有限制 Java中还有一个类RandomAccessFile,它没有这两个限制,既可以读,也可以写,还可以随机读写,它是一个更接近于操作系统API的封装类. 本节,我们介绍就来介绍这个类,同时,我们介绍它的一个应用,实现一个简单的键值对数据库,怎么实现数据库呢?我们先来看RandomAccessF…
写了一个简单的P2P传输程序,在P2P的圈子中传输文件,不过为了简便,这个程序没有真正的传输文件,只是简单的判断一下文件的位置在哪里.这个程序可以处理当有一个peer闪退的情况,在这种情况下,剩下的peer会自动再组成一个p2p圈.基于UDP和TCP协议各写了一个.代码在https://github.com/tian-jiang/P2P-Applications…
如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: https://github.com/Broglie/Oh-Shell 简单的分析 我们的shell不像bash那样复杂全面,只是实现其中的一小部分功能:命令历史,命令补全,支持IO重定向和管道.一共分成几个部分:主 函数文件,输出出错信息,解析命令等. 我们打开bash对照着做,首先bash有命令提示符,…
前言:还是看了一下国外的入门IOS文章:<Create a Simple App for Video Recording and Playback>,主要涉及视频录制和回放的功能的基本实现. iOS的API用于记录和播放视频的对刚入门IOS的新人有点混乱,因为有几个可用的选项.如果你只是想打一个视频,你可以用MediaPlayer的框架,它可以让我们发挥我们的设备本地存储的视频,或从远程位置.但是,如果你需要高级功能,如媒体资产管理,媒体编辑,跟踪管理,和其他人,你必须使用AVFoundati…
前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门文章的学习过程总结,难度不大,因为是入门.主要是入门UIImagePickerController这个控制器,那么这个控制器是干嘛的呢?就是调用设备摄像机功能用的.到后面可能需要您在真机上测试,因为iPhone模拟器无法支持摄像机功能,运行测试会崩溃的哦. 网址:http://www.appcoda.com/ios-programming-camera-iphone-app 其实我就按照这篇博文的讲解过程,自…
Apple Watch 和 watchOS 第一代产品只允许用户在 iPhone 设备上进行计算,然后将结果传输到手表上进行显示.在这个框架下,手表充当的功能在很大程度上只是手机的另一块小一些的显示器.而在 watchOS 2 中,Apple 开放了在手表端直接进行计算的能力,一些之前无法完成的 app 现在也可以进行构建了.本文将通过一个很简单的天气 app 的例子,讲解一下 watchOS 2 中新引入的一些特性的使用方法. 本文是我的 WWDC15 笔记中的一篇,在 WWDC15 中涉及到…
万事具备,只欠编码! 下面看一个简单的示例,这个示例验证Android手机自带的通讯录的添加联系人的操作是否成功.这个例子是Appium官网自带的示例,有兴趣的同学也可以自己下载来研究和学习,下载地址:示例代码下载 首先请看resource.txt文件的代码: *** Settings *** Library           AppiumLibrary *** Variables *** ${REMOTE_URL}     http://localhost:4723/wd/hub ${PLA…
原文网址:http://www.cnblogs.com/geneil/archive/2011/12/03/2272869.html 一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流的设备,常见的字符设备有鼠标.键盘.串口.控制台和LED设备等.2.块设备:是指可以从设备的任意位置读取一定长度数据的设备.块设备包括硬盘.磁盘.U盘和SD卡等.…
本文首先描述了一个可以实际测试运行的驱动实例,然后由此去讨论Linux下驱动模板的要素,以及Linux上应用程序到驱动的执行过程.相信这样由浅入深.由具体实例到抽象理论的描述更容易初学者入手Linux驱动的大门. 一.一个简单的驱动程序实例 驱动文件hello.c #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h>…
原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台   3.安装JDK   二.intellij idea新建Android工程 1.File->New-Project...   2.选择Android->Application Module,下一步 说明:建议选择这个项,建立的是一个可以运行的几乎是空的工程,是用ant进行构建的目录结构: gradle:And…
这是一个简单的appium脚本,测试amazon购物过程的,过程包括搜索商品,然后从结果列表中选取中意的商品,然后加入购物车,等等. 它是一个最原始的脚本,对测试元素.数据.报告等未作任何的封装,后面计划把它合并到现有的webdriver的web测试框架里去. 运行中终于到的问题: 1.genymotion模拟器上执行有点延迟,脚本命令发出后大概3秒模拟器上才有反应: 2.在输入搜索条件后,执行回车命令,执行的效果是退格键(backspace),百撕不得骑姐啊: 3.再就是非原生对象的识别了,比…