Sendip 命令行发包工具,支持IP、TCP、UDP等

Sendip是一个linux平台的命令行发数据包工具,目前(2018年2月)支持的协议有ipv4、ipv6、icmp、tcp、udp、bgp、rip、ntp,作者表示其他协议将会后面支持,当他有空写的时候。Sendip很强大,它支持自定义头部和数据(也就是IP层以上的整个包),没有过多的限制,所以连源IP都可以随意写,而且里面也提供了一些默认的选项,可以择需而发,非常方便。又因为它是命令行的,还支持从文件中直接读取整个packet发送,所以适合用脚本批量测试。它只是个发包工具,对于发出去的包,收到了什么样的回复,Sendip是不知道的,所以要得到回复的包就只能用抓包工具了。它的源码也很简单,没有过多平台相关的代码,如果不理解也可以看源码。

其实这个工具已经满足了我的要求,之前下载的PackETH是GUI版的,连数据链路层(link layer)都支持,也要求必须提供这一层的相关信息才能发包,这一层一般不太关心,它又不提供自动封装,总的来说不太适合用。

Sendip简单使用

常见协议报头可参考常见协议TCP、UDP、IP图

通用选项:

-d    要携带的数据。rN随机产生N个字节,0x之后带十六进制,0之后带8进制。
-f    从文件中读取要携带的数据。
-p    加载协议模块,只有加载了才能使用。
-v    打印整个发出的包。

ipv4模块:

-iv x      版本               Default: 4
-ih x      首部长度       Default: Correct
-iy x      区分服务       Default: 0
-il x      总长度           Default: Correct
----------------------------------------------32bit
-ii x      标识               Default: Random
-ifr x     标志               Default: 0 (options are 0,1,r)
-if x      片偏移           Default: 0
----------------------------------------------32bit
-it x      生存时间       Default: 255
-ip x      协议             Default: 0, or set by underlying protocol
-ic x      首部检验和   Default: Correct
----------------------------------------------32bit
-is x      源地址          Default: 127.0.0.1
----------------------------------------------32bit
-id x      目的地址      Default: Correct
----------------------------------------------32bit
下面全是可选字段(比较少用,不译):

-ifd x IP don't fragment flag (see README)
       Default: 0 (options are 0,1,r)
-ifm x IP more fragments flag (see README)
       Default: 0 (options are 0,1,r)
-ionum x
       IP option as string of hex bytes (length is always correct)
       Default: (no options)
-ioeol IP option: end of list
-ionop IP option: no-op
-iorr x
       IP option: record route. Format: pointer:addr1:addr2:...
-iots x
       IP option: timestamp. Format: pointer:overflow:flag:(ip1:)ts1:(ip2:)ts2:...
-iolsr x
       IP option: loose source route. Format: pointer:addr1:addr2:...
-iosid x
       IP option: stream identifier
-iossr x
       IP option: strict source route. Format: pointer:addr1:addr2:...

tcp模块:

-ts x  源端口       Default: 0
-td x  目的端口       Default: 0
----------------------------------------------32bit
-tn x  序号       Default: Random
----------------------------------------------32bit
-ta x  确认号       Default: 0
----------------------------------------------32bit
-tt x  数据偏移       Default: Correct
-tr x  保留(ECN、CWR看rfc2481)       Default: 0
-tfu x URG       Default: 0, or 1 if -tu specified (options are 0,1,r)
-tfa x ACK       Default: 0, or 1 if -ta specified (options are 0,1,r)
-tfp x PSH       Default: 0 (options are 0,1,r)
-tfr x RST       Default: 0 (options are 0,1,r)
-tfs x SYN       Default: 1 (options are 0,1,r)
-tff x FIN       Default: 0 (options are 0,1,r)
-tw x  窗口       Default: 65535
----------------------------------------------32bit
-tc x  检验和       Default: Correct
-tu x  紧急指针       Default: 0
----------------------------------------------32bit
下面全是可选字段(比较少用,不译):
-tonum x       TCP option as string of hex bytes (length is always correct)
       Default: (no options)
-toeol TCP option: end of list
-tonop TCP option: no op
-tomss x
       TCP option: maximum segment size
-towscale x
       TCP option: window scale (rfc1323)
-tosackok
       TCP option: allow selective ack (rfc2018)
-tosack x
       TCP option: selective ack (rfc2018), format is l_edge1:r_edge1,l_edge2:r_edge2...
-tots x
       TCP option: timestamp (rfc1323), format is tsval:tsecr

udp模块:

-us x  源端口    Default: 0
-ud x  目的端口    Default: 0
-ul x 长度    Default: Correct
-uc x  检验和    Default: Correct

要注意,按照从左到右的顺序依次封装报文,所以ip报文必须写在其他报文之前。如果协议中需要检验和之类的就按默认的就行了,省去计算的痛苦。下面有几个例子:

  • sendip -v -p ipv4 -id 14.215.177.39 -p udp -f test www.baidu.com
  • sendip -p ipv4 -is 192.168.1.2 -id 192.168.1.1 -p icmp -d 0x89ABCDEF www.google.com

其中主要的结构是sendip 网络层 上一层 数据 domain,domain是目的主机,可以是www.baidu.com192.168.1.1之类的。如果出现什么错误就会打印出帮助信息,里面有一行是提示错误原因,别漏看了。至于能不能发不规则的包(如数据与报文长度不符合、校验和乱写之类的),实际会不会发出去就没进行测试了。

转载于:https://www.cnblogs.com/xcw0754/p/8449779.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TCPUDP是网络传输层的两个主要协议,它们的特点和适用场景也不同。TCP是一种面向连接的可靠协议,适用于需要可靠传输的数据,比如网络文件传输,邮件发送等。而UDP则是一种非面向连接的不可靠协议,适用于实时应用场景,比如视频、音频流传输。 发包工具是测试、验证网络协议、设备性能、网络性能等的必备工具。针对TCPUDP,市面上有许多流发包工具,如TCPing、Packet Sender、Hping、Tcpreplay、Iperf等等。 TCPing是一款用于测试TCP服务是否正常工作的发包工具,它通过向TCP服务发送请求并等待响应来测试TCP服务的响应时间和服务是否正常工作。 Packet Sender是一款轻量级的UDPTCP协议测试工具,可以发送文本和二进制数据包,并且可以方便地设置相关参数,如端口和协议类型等。 Hping是一款常用的命令式网络发包工具支持TCPUDP、ICMP协议等,可以用于测试网络的带宽和延迟等参数。 Tcpreplay是一款能够重新发送已经捕获的TCPUDP流量包的工具,常用于网络和应用性能测试和改进,它可以模拟各种网络流量、提高应用性能、验证网络设备功能和安全性等功能。 Iperf是一种网络性能测试工具支持TCPUDP协议,允许在网络中不同的节点之间进数据传输测试,可测量网络带宽、延迟、吞吐量等。 总之,TCPUDP发包工具是网络工程师必备的工具之一,它们可以帮助我们更好地了解网络的质量和性能,从而更好地维护和优化网络。 ### 回答2: TCPUDP是互联网协议中最常用的两种传输层协议,其中TCP是面向连接的可靠协议,UDP则是不可靠协议。发包工具可以模拟客户端或服务端向对方发送TCPUDP数据包,以测试网络通信的稳定性和性能。 常见的TCPUDP发包工具包括: 1. TCPing:TCPing是一款基于TCP协议的发包工具,它可以模拟TCP客户端向服务端发送数据包,并计算出数据包来回时间和丢包率等信息。通过TCPing可以快速检测TCP连接是否正常,也可以用于TCP网络性能压力测试。 2. iPerf:iPerf是一款流量测试工具,它可以对TCPUDP传输进测试。iPerf通过发送大量数据包来测试网络的吞吐量、延迟和丢包率等性能指标。iPerf可以模拟多个并发连接测试,也可以对不同带宽和MTU的连接进测试。 3. Hping:Hping是一款命令发包工具,可以模拟TCPUDP、ICMP等不同协议的数据包发送。它可以进各种网络安全测试,如端口扫描、DDoS攻击等。 4. Netcat:Netcat是一款多功能的命令网络工具,可以实现TCP/UDP端口扫描、数据传输、端口转发等功能。Netcat可以通过手动编写数据包,模拟客户端或服务端发送数据包进测试。 通过TCPUDP发包工具,我们可以模拟真实场景下的网络通信情况,对网络性能和稳定性进测试分析,及时发现和解决问题,提高网络的可靠性和效率。 ### 回答3: TCPUDP是网络协议中常用的两种传输层协议。在进网络通信时,往往需要使用相应的发包工具TCPUDP测试和调试。 对于TCP协议,主要使用的发包工具TCPProbe、tcptraceroute等。TCPProbe可以对TCP协议进各种测试,包括测试连接效率、延迟、缓存大小等。tcptraceroute可以对TCP连接进路径追踪,便于排查网络问题。 对于UDP协议,常用的发包工具有hping、nmap等。hping可以用于对UDP端口进探测、DOS攻击模拟、流量控制等测试,而nmap则可用于扫描UDP端口。 此外,Wireshark是一款强大的网络协议分析软件,可用于对TCPUDP协议的数据包进捕获和分析。使用Wireshark能够深入了解网络协议的通信过程,帮助用户精确分析网络问题。 总之,针对不同的TCPUDP协议测试需求,我们可以选择不同的发包工具调试、分析和优化,确保网络通信的高效、稳定和安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值