大学四年学的linux网络工具全在这儿了

在实际开发过程中,熟悉使用Linux或者Windows中相关网络工具,可以让我更快更准的找到故障,所以今天分享几个必会的网络利器

1 nc

nc-->“瑞士军刀”。不知大家在渗透过程中,拿了shell有没有使用nc搞点事儿。它用来快速构建网络链接。常用来调试客户端程序。

nc参数
nc参数

小贱上案例

执行任务执行命令
扫描机器A端口号在30-40的服务nc -z A 30-40
连接服务器A 端口号为5000nc -C A 5000
传送文件MachineA:nc -v -n ip port <D:a.exe MachineB:nc -v -l -p port >E:a.exe

2 ping

用来实现对网路连通性探测。我们知道网络上机器有唯一确定的IP地址,给地方发送数据包,根据返回的信息初步判断目标机器是否存在或者目标机器操作系统是啥。另外经常使用的Ping,底层原理是什么,是就TCP/UDP?

ping
ping

再具体实现中其实使用了ICMP协议,它是一种基于IP协议的控制协议,网际控制协议,其报文什么样子呢

下面分别阐述下字段含义

  • 类型: 表示ICMP的类型,如果为0表示请求类型,为8表示应答
  • 代码:用来查找产生错误的原因
  • 校验和:检查错误的数据
  • 标识符:使用标识符确认到底是谁发送的控制协议
  • 序列号:唯一确定的一个报文

ping命令组装成上述的IP报文进行发送,报文目的地之为ping目的地址,原地址为发送ping主机地址,然后按照ICMP的规则填写数据。

随后IP报文通过ARP协议,知道

查看详细参数

ping参数
ping参数

常用参数

[-l] :定义所发送数据包的大小,默认为32字节

[-n] :定义所发数据包的次数,默认为3次

[-t] :表示不间断向目标IP发送数据包

TTL

TTL 是 IP 协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃

  • TTL设置时间越长,那么缓存时间也就越长,更新也就越不容易生效。增大TTL可以节约域名解析时间从而加快网站的访问

  • 减小TTL值,减少更换空间时的不可访问时间

返回值

  • Request timed out

可能出现的情况

对方已经关机或者根本没有这个地址

可能不在同一个网段,即使通过路由也无法找到对方从而出现超时

对方存在但是设置了防火墙过滤

  • Destination host Unreachable

与对方不在同一个网段且没有设置默认路由

网线出毛病

  • Bad IP address

要么是IP地址不存在,要么是没有正确连接DNS服务器从而无法解析

3 ifconfig/ipaddr

查看服务器网卡,IP等信息

ipaddr
ipaddr

上图中被马赛克的位置假设为10.172.100.3,这样就是一个IP地址,凡是都有规则,IP地址按照小数点分割为四部分,每部分占8字节,所以IP地址为32位,那么这样的IP地址一共有多少呢

从而出现IPV6,128位

当时觉得32位很够用了,还将其分为5类,如下图所示

网络地址分类
网络地址分类

我们再看看各类地址的主机数量是多少

上图中可知道c类地址太少了吧,但是B类地址又太多,怎么中和一下嘞

无类型域间选路

CIDR 地址中包含标准的32位IP地址和有关网络前缀位数的信息。比如10.172.100.3/24,IP地址斜杠后面数字24,代表24位是网络号,后面八位为主机号。

如何得到网络号?

使用IP地址和子网掩码进行AND计算得到网络号。

4 tcpdump

和它类似的工具在windows中是wireshark,其采用底层库winpcap/libpcap实现。采用了bpf过滤机制。下面我们看看提供的不同参数的含义。

tcpdump
tcpdump

知道了相关参数,下面看几个案例

执行任务执行命令
捕获特定网口数据包tcpdump -i eth0
捕获特定个数(1000)的包tcpdump -c 1000 -i eth0
将捕获的包保存到文件tcpdump -w a.pcap -i eth0
读取pcap格式的包tcpdump -r a.pcap
增加捕获包的时间戳tcpdump -n -ttt -i eth0
指定捕获包的协议类型tcpdump -i eth0 arp
捕获指定端口tcpdump -i eth0 post 22
捕获特定目标ip+port的包tcpdump -i eth0 dst address and port 22
捕获DNS请求和响应tcpdump -i eth0 -s0 port 53
匹配Http请求头tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"

5 lsof

列出当前系统打开的文件描述符工具。可以得知感兴趣的描述符是被哪些进程使用

同样,我们看看相关参数

lsof
lsof

老规矩,上几个例子

执行任务命令
列出所有的网络链接lsof -i
列出所有udp的网络链接lsof -i udp
列出谁在使用某个端口lsof -i :3306
列出谁在使用特定的tcp端口lsof -i tcp:80
根据文件描述范围列出文件信息lsof -d 2-3

7 netstat

netstat是一个网络信息统计工具。它可以得到网卡接口上全部了解,路由表信息,网卡接口信息等。通常在网络编程中我们用它来显示TCP连接以及状态信息。

下面列举几个常用例子

执行任务执行命令
列出所有连接netstat -a
只列出TCP或者UDPnetstat -at/netstat -au
列出监听中的连接netstat -tnl
获取进程名、进程号以及用户 IDnestat -nlpt
打印统计信息netstat -s
netstat持续输出netstat -ct
打印active状态的连接netstat -atnp | grep ESTA
查看服务是否运行(npt)netstat -aple| grep ntp

7 dpkt

dpkt定义包packet类,它定义了网络报文类型的基础类。其中IP,ICMP等继承于dpkt class,每一个子类有一个__ hdr__ 结构,此结构定义了不同报文的头部,方便取出相应的控制字段。示例如下

#!/usr/bin/python

#coding=utf-8

import dpkt

import socket

import optparse

defprintPcap(pcap):

# 遍历[timestamp, packet]记录的数组

for (ts, buf) in pcap:

try:

# 获取以太网部分数据

eth = dpkt.ethernet.Ethernet(buf)

# 获取IP层数据

ip = eth.data

# 把存储在inet_ntoa中的IP地址转换成一个字符串

src = socket.inet_ntoa(ip.src)

dst = socket.inet_ntoa(ip.dst)

print'[+] 源地址: ' + src + ' --> 目标地址: ' + dst

except:

pass

defmain():

parser = optparse.OptionParser('[*] Usage : ./pcapTest.py -f <file>')#测试包

parser.add_option('-f',dest='fileName',type='string',help='specify target filename')

(options,args) = parser.parse_args()

fileName = options.fileName# 取得包名

if fileName == None:

print parser.usage

exit(0)

else:

#f = open('geotest.pcap')

f = open(fileName)

pcap = dpkt.pcap.Reader(f)

printPcap(pcap)

if __name__ == '__main__':

main()

8 scapy

注意哈,这个是嗅探包不是爬虫框架scrapy哈。看看官网怎么说的,如“强大的交互式包操作工具”、“支持大量协议的包解析和包构造”、“轻松取代 hping,85% 的 nmap,arpspoof,tcpdump 等等”。不过归根到底,它说的强大功能,都是基于 Scapy 是一个强大的网络数据包操作工具才能实现得了的。只是大概介绍,具体用法官网非常详细,有助于学习网络协议

以上是 大学四年学的linux网络工具全在这儿了 的全部内容, 来源链接: utcz.com/a/26905.html

回到顶部