六、设计方案

实现原理:

atach、cap进程运行在ubuntu中,要攻击的目的终端可以使网络中任意设备,只需要能ping通即可。本例在windows上测试,采用桥接模式将ubuntu的网口和windows的网口桥接起来。

一个端口能绑定多个docker吗_tcp/ip

atach进程主要功能:

  1. 创建tcp套接字
  2. 设置需要攻击的终端的ip+port,然后执行connect函数
  3. connect成功,说明对方该端口可以使用
  4. 修改port值,重复前面3个步骤

cap进程主要功能:

  1. 通过eth0,抓取指定规则:host 192.168.0.116数据包
  2. 解析出以太头、tcp头,ip头、tcp头,判断tcp头中sync+ack位为1的所有数据包
  3. 打印出步骤2过滤出来的数据包

代码流程:

一个端口能绑定多个docker吗_网络协议_02

七、测试

1. 环境:

windows ip:192.168.0.116 ubuntu ip:192.168.0.113

2. 文件:

peng@ubuntu:~/work/test/pcap$ ls atach  header.c        libpcap-1.10.3.tar.gz  cap.c cap    libpcap-1.10.3  atach.c             protocol.h

其中atach是上攻击方,用于向指定ip发送sync包 cap 用于检测所有网卡收到的sync+ack数据包 程序运行在ubuntu中。

3. 启动网络调试助手

在windows上启动网络调试助手,

建立几个Tcp Server,端口号分别为55、56、57

一个端口能绑定多个docker吗_网络协议_03

在这里插入图片描述

4. 启动程序

1)首先启动cap

peng@ubuntu:~/work/test/pcap$ sudo ./cap 192.168.0.116 found device: eth0 netaddr:0000a8c0 try to open device eth0 filter:host 192.168.0.116

2)启动攻击程序atach

需要新开启一个终端。

peng@ubuntu:~/work/test/pcap$ ./atach 192.168.0.116

5. 运行截图如下:

一个端口能绑定多个docker吗_网络协议_04

右边log可见,列举出了所有可以访问的端口,包括55、56、57。

注意:那个单词atach故意少了一个t,否则编译不过去:

一个端口能绑定多个docker吗_一个端口能绑定多个docker吗_05

大家可以试试你们的编译器,刑不刑!

 

八、代码

代码已经同步到gitee,地址如下:

https://gitee.com/yikoulinux/pcap.git