tcp客户端
socket.AF_INET表示使用标准IPV4地址和主机名
SOCK_STREAM表示这是一个TCP客户端
udp客户端
udp无需连接,因此不需要client.connect这种代码
socket.SOCK_DGRAM是udp的
tcp服务端
server.listen(5)表示设置最大连接数为5
发现kill server后端口仍占用导致无法再次启动server,查了下可用lsof -i tcp:port (-t)查看端口占用进程,再kill即可
执行看下结果
取代netcat
netcat是一个网络管理相关shell工具,书里不建议用这个,因为有一些风险,有的server装了py服务器,没装netcat。当通过web入侵后,如果可以创建连接客户端和服务端则对入侵很有帮助
创netcat.py,导入基本库
定义main
定义NetCat类
验证netcat
开客户端服务端看效果
发现有时候会有问题,想了一下,应该是send和recv时间不同步导致的
开发tcp代理
代理为了测试用,开发具有如下功能的代理:1显示本地设备和远程设备通信过程 2从socket接受数据 3控制设备流量方向 4创建socket监听
该函数可查看代理内数据流通
实现数据接收,设定超时时间,这样就不会无限sleep监听,超时时长可根据实际情况修改
proxy主要逻辑如下,定义proxy要做的事,然后定义框架
定义server侧逻辑,server_loop函数,用来管理和创建连接,请求的数据创现成让上面定义的proxy_handler函数处理
定义main函数
验证tcp代理
启动代理
开两个窗口,一个server一个client看效果
发现因为timeout,命令要在timeout输入否则异常,每个命令timeout内输入,看起来正常