shell脚本实现网络扫描 自动抓包 协议分析 nmap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本实现网络扫描 自动抓包 协议分析 nmap相关的知识,希望对你有一定的参考价值。

此文章提供思想基础用法:关于自动检测功能,各个端口和抓包功能,项目中使用的为nmap软件,Linux操作系统,首先我们要安装nmap的软件 项目中使用的为nmap-6.40-7.el7.x86_64版本,

命令格式为:  #nmap  [扫描类型]  [选项]  <目标主机> 

    扫描类型:

                    -sS (TCP  SYN扫描半开)

                    -sT(TCP 连接扫描全开)

                    -sU  (UDP扫描)

                    -sP    (ICMP扫描)

                    -A     //对目标主机做全面分析

    选项       :

                    -n     //不对主机名解析

                    -p     //指定端口

选项

-c   数字             //指定抓包次数

-i    接口名称     //指定抓的网卡

-w  文件名        //将抓到的包存放到文件里

-A                    //转换为ACSII码显示,可读性稍强

-r   文件名       //将文件里面读出来

tcpdump -c 3  -i eth0 (默认)  -w  /a.txt  -A

[过滤条件]

类型: host   主机

           net     网络

           port    端口

           portrange   端口范围

方向 

      src  :  源地址

      dst :  目标地址

协议  : tcp  udp  ip   wlan  arp

条件可以由组合而成: and (并且)  or(或者)   not(取反)     

举例: nmap  -A  -i eth0  tcp  port 80  and host 172.40.50.123  or  host 172.40.50.148  

这里执行的为检测 主机172.40.50.123 的 80 端口    和 172.40.50.148 的tcp 协议 我们可以使用()来提升 or 的优先级来实现监听两台主机的80端口  ()不能被系统命令所认知,我们需要使用 \ 反斜线来取消其定义 

nmap  -A  -i eth0  tcp  port 80  and    \(host 172.40.50.123  or  host 172.40.50.148\)


下面是一个简单脚本,使用了位置变量,这里的shift 为跳过前一个定义,所以我们的port端口不会输入到定义IP 地址里,grep -q 意思为屏蔽此次输出若由open 字段  那么返回值  echo   $? =0   做了判断,大家可以根据自己要求编写脚本。


#!/bin/bash

port=$1

shift

for ip in $*

do

nmap -n -sS -p $port "172.40.58.$ip" | grep -q open

if [ $? -eq 0 ];then

   echo  "172.40.58.$ip  port $port is open"

else

    echo  "172.40.58.$ip  port $port is down"

fi

do


以上是关于shell脚本实现网络扫描 自动抓包 协议分析 nmap的主要内容,如果未能解决你的问题,请参考以下文章

主动信息收集--二层发现(shell脚本)

扫描与抓包

第一章信息收集—扫描技术与抓包分析

如何在 Linux 启动时自动执行命令或脚本

JMeter记录篇7——JMeter Http协议录制&录制手机APP脚本

linux下编写一个shell脚本,实现自动安装软件