你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

分享几个实用的网络利器

[复制链接]
gaosmile 发布时间:2020-11-24 21:23
在实际开发过程中,熟练使用Linux或者Windows中相关网络工具,可以更快更准地找到故障。所以,今天就跟大家分享几个实用的网络利器。
1 nc
nc-->“瑞士军刀”。不知大家在渗透过程中,拿了shell有没有使用nc搞点事儿。它用来快速构建网络链接,常用来调试客户端程序。
微信图片_20201124211833.png nc参数
举例
[td]
执行任务
命令
扫描机器A端口号在30-40的服务nc -z A 30-40
连接服务器A端口号为5000nc -C A 5000
传送文件MachineA:nc -v -n ip portE:\a.exe
2 ping
用来实现对网络连通性探测。我们知道网络上机器有唯一确定的IP地址,给对方发送数据包,根据返回的信息初步判断目标机器是否存在或者目标机器操作系统是啥。那么,经常使用的ping,底层原理是什么,是TCP/UDP?
微信图片_20201124211839.png 5 }- M1 |, J9 S: u- w+ v: n0 q* e
ping
在具体实现中,其实使用了ICMP协议(网际控制报文协议),它是一种基于IP协议的控制协议。那么,ICMP协议(网际控制报文协议),其报文什么样子呢?
微信图片_20201124211844.png

5 P4 ~0 Z9 J7 A) k8 q( p0 [
下面分别阐述下字段含义:
  • 类型:表示ICMP的类型,如果为0表示请求类型,为8表示应答。
  • 代码:用来查找产生错误的原因。
  • 校验和:检查错误的数据。
  • 标识符:使用标识符确认到底是谁发送的控制协议。
  • 序列号:唯一确定的一个报文。
    - G1 g* R) I1 U6 |( x
ping命令组装成上述的IP报文进行发送,报文目的地为ping目的地址,原地址为发送ping主机地址,然后按照ICMP的规则填写数据。
随后IP报文通过ARP协议,请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。
查看详细参数
微信图片_20201124211848.png 1 \( U: Z4 d7 z$ T) J
ping参数
常用参数; P# M1 H+ B( F* F
[-l] :定义所发送数据包的大小,默认为32字节。
[-n] :定义所发数据包的次数,默认为3次。
[-t] :表示不间断向目标IP发送数据包。
TTL
TTL 是 IP 协议包中的一个值,它告诉网络路由器,包在网络中的时间是否太长而应被丢弃。
  • TTL设置时间越长,那么缓存时间也就越长,更新也就越不容易生效。增大TTL可以节约域名解析时间从而加快网站的访问
  • 减小TTL值,减少更换空间时的不可访问时间

    : Y" S, F8 m8 \) y1 W0 N

6 ~+ s: a( C/ @: k: Q. f3 W
返回值
  • Request timed out
    可能出现的情况:
    -对方已经关机或者根本没有这个地址。
    -可能不在同一个网段,即使通过路由也无法找到对方从而出现超时。
    -对方存在但是设置了防火墙过滤。

    - l% I% _5 i0 S& |+ s' ]
  • Destination host Unreachable
    可能出现的情况:
    -与对方不在同一个网段且没有设置默认路由
    -网线出毛病

    $ r! f" u( M8 |2 N$ E: q
  • Bad IP address
    可能出现的情况:
    -IP地址不存在
    -没有正确连接DNS服务器从而无法解析
    " z% d, e4 V1 E. b7 R
3 ifconfig/ip addr
查看服务器网卡、IP等信息。
微信图片_20201124211852.png 3 ^; N& x- a  D. J4 \5 _
ipaddr
上图中被马赛克的位置假设为10.172.100.3,这样就是一个IP地址,IP地址按照小数点分割为四部分,每部分占8字节,所以IP地址为32位。
那么,这样的IP地址一共有多少呢?一共有2的32次方个,估算约为42.9亿个,除去一些特用的IP和一些不能用的IP,剩下可用的不到40亿。为解决网络地址资源不足的问题,从而出现IPV6,128位的IP地址。
刚开始觉得32位很够用了,还将其分为5类,如下图所示:
微信图片_20201124211856.png
& h* N& y% j( j) J网络地址分类
我们再看看各类地址的主机数量是多少?
微信图片_20201124211901.png

- j8 o3 }+ |" ?& W4 }
上图中可知道C类地址太少了吧,但是B类地址又太多,怎么中和一下嘞?
无类型域间选路
CIDR地址中包含标准的32位IP地址和有关网络前缀位数的信息。比如10.172.100.3/24,IP地址斜杠后面数字24,代表前24位是网络号,后面8位为主机号。
如何得到网络号?
使用IP地址和子网掩码进行AND计算得到网络号。
微信图片_20201124211905.png
4 tcpdump
和它类似的工具在windows中是wireshark,其采用底层库winpcap/libpcap实现,采用了bpf过滤机制。下面我们看看提供的不同参数的含义。
微信图片_20201124211910.png tcpdump
知道了相关参数,下面看几个案例。
[td]
执行任务
命令
捕获特定网口数据包" I; f" [, [+ o
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
列出当前系统打开的文件描述符工具,可以得知感兴趣的描述符是被哪些进程使用。
同样,我们看看相关参数:
微信图片_20201124211917.png lsof
举例
[td]
执行任务
命令
列出所有的网络链接lsof -i
列出所有udp的网络链接lsof -i udp
列出谁在使用某个端口lsof -i :3306
列出谁在使用特定的tcp端口lsof -i tcp:80
根据文件描述范围列出文件信息lsof -d 2-3
6 netstat
netstat是一个网络信息统计工具。它可以得到网卡接口上全部链接、路由表信息、网卡接口信息等。通常在网络编程中我们用它来显示TCP连接以及状态信息。
: _  z) N8 W$ k5 a4 r) o, \1 E
下面列举几个常用例子。
[td]
执行任务
命令
列出所有连接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/ ~  ^% U3 o2 V
#coding=utf-8
3 G/ d# U) t% }9 P9 n) Limport dpkt9 U7 m1 T" g# N/ ^" g
import socket
8 {1 N& |" A, P5 V0 Yimport optparse: R% v6 W, d7 f6 s8 o9 m5 Z

/ h4 E( R) S% Mdef printPcap(pcap):
% C; `6 r6 e) v" v    # 遍历[timestamp, packet]记录的数组9 n! z5 q+ `7 f5 w# h
    for (ts, buf) in pcap:* K& I$ ^/ ~+ Q* D  K
        try:
" v, q3 O+ Z2 E. l: m3 v            # 获取以太网部分数据; p# U# m5 W/ I, E" O& m
            eth = dpkt.ethernet.Ethernet(buf), G' a# R7 _5 K) W+ j2 a5 P
            # 获取IP层数据8 W+ `* ]0 \  A2 o
            ip = eth.data
$ x, w# E" ^% _( W& V1 n            # 把存储在inet_ntoa中的IP地址转换成一个字符串5 _! j# b+ O# b6 \! H
            src = socket.inet_ntoa(ip.src)+ g. U- C# o" ~6 m$ \8 X- R
            dst = socket.inet_ntoa(ip.dst)
: u# u0 u) B. {4 D! k3 z" b$ O0 P            print '[+] 源地址: ' + src + ' --> 目标地址: ' + dst
# v! B0 Z5 s6 p1 F) Z  g$ }* k, c        except:" I- K+ }% }( ?( `
            pass* m" f  m7 ^( I3 `" e) m" e! v

, |) P8 A$ }% [def main():; V$ r& O; G% ]9 |' U, S
    parser = optparse.OptionParser('
Usage : ./pcapTest.py -f <file>')#测试包
. F% ^1 z* @) ^8 i% g  @3 E8 j$ A    parser.add_option('-f',dest='fileName',type='string',help='specify target filename')
3 t4 p2 M$ M# m4 M' q0 ^$ ^0 j    (options,args) = parser.parse_args()
) r' s6 t/ F, c0 B    fileName = options.fileName# 取得包名
7 r8 h) M  u$ _$ b  I8 K+ t' i, a/ F$ C8 f, _- G, u5 h
    if fileName == None:
  N& z6 v. G3 n2 x        print parser.usage
) A8 S/ K, `! r        exit(0)  s9 F4 {3 A3 T2 C
    else:
* G6 p% c+ w! M4 ]) [$ ~& k7 |        #f = open('geotest.pcap')
# E2 S2 ?. _+ L* W4 U        f = open(fileName)
, E# Q  o; Q. h! R, h& w4 a9 W        pcap = dpkt.pcap.Reader(f)
- o0 |* @/ a0 j$ l/ H        printPcap(pcap)
0 L% _# U% I3 u) U
: P5 U1 X! f9 o4 n  u5 ?if __name__ == '__main__':
; ~) P6 H' Z  @0 X    main()
* \# E$ x) k' v
8 scapy
注意哈,这个是嗅探包,不是爬虫框架scrapy哈。看看官网怎么说的,如“强大的交互式包操作工具”、“支持大量协议的包解析和包构造”、“轻松取代hping,85%的nmap,arpspoof,tcpdump等等”。不过归根到底,它说的强大功能,都是基于Scapy是一个强大的网络数据包操作工具才能实现得了的。这里只是大概介绍,具体用法官网非常详细,有助于学习网络协议。
微信图片_20201124211926.png

6 t8 v) s0 A8 i7 a4 _4 S
: b! X. b) u6 \9 W' q: P8 A
微信图片_20201124211921.png
赞 收藏 1 评论0 发布时间:2020-11-24 21:23

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版