在前三篇中,我们介绍了使用python脚本发现二层、三层的主机设备,接下来我们介绍使用python发现第四层主机。

    在TCP/IP协议中,第四层为传输层,主要使用的通信协议为TCP协议和UDP协议,我们就利用这两个协议来进行目标主机的发现。

    简单说一下TCP协议,TCP协议是一种面向连接的、可靠的,基于字节流的传输层通信协议,它要求通信双方在通信之前必须建立连接,此外,TCP协议可以确保接收方一定会收到发送方所发出的数据。最著名的就是“三次握手"原理了。和“三次握手”分不开的,就是TCP的flag标识位。

flag标识位

    FIN:断开连接,对应值为1;

    SYN:同步信号,用于发起一个连接,对应值为2;

    RST:重置连接,对应值为4;

    ACK:确认信息,对应值为16;

三次握手的过程

    1.发送方给接收方发送一个SYN

    2.接收方回给发送方一个SYN和和ACK

    3.发送发给接收方发送一个ACK

TCP探测原理

    为了探测对方主机是否存活,我们可以直接给接收方发送一个ACK,接收方就会认为是无效确认。从而给我们回复一个RST,只要我们能收到这个RST,我们就可以判断对方的主机是在线的。此外,我们向目标主机发送ACK包,只要目标主机在线,无论端口是否对外开放,都将返回数据。

    附上python脚本

def host_scan(ip):
try:
pkt=IP(dst=ip)/TCP(dport=55555,flags='A')
result=sr1(pkt,timeout=1,verbose=0)
if int (result[TCP].flags)==4:
time.sleep(0.1)
print ip,"在线"
return
except:
return def main():
if len(sys.argv) != 2:
print "使用方法: ./hostscan.py 目标网络地址"
sys.exit()
address=str(sys.argv[1]).strip()
prefix=address.split(".")[0]+"."+address.split(".")[1]+"."+address.split(".")[2]+"."
for i in range(1,255):
ip=prefix+str(i)
t=Thread(target=host_scan,args=(ip,))
t.start()
if __name__=='__main__':
main()

    上述代码实现的方法,就是构造一个ACK包发给目标主机,只要我们接收到的数值为4(即为RST包),则可以判断目标主机在线。

UDP探测原理

    我们使用UDP探测的原理是:向目标主机的一个没有开放的端口发送数据,目标主机会返回一个端口不可达的ICMP消息,只要我们接收到了这个ICMP消息,我们就可以发现目标主机是否在线了。此外,如果目标主机不在线,或者目标主机在线但是端口是开放的状态,那我们发送过去的UDP探测数据包就不会收到响应了。

    附上UDP主要功能部分:

def host_scan(ip):
try:
pkt=IP(dst=ip)/UDP(dport=55555)
result=sr1(pkt,timeout=1,verbous=0)
if int(result[IP].proto)==1:
time.sleep(0,1)
print ip,"在线"
return
except:
return

python信息收集(四)的更多相关文章

  1. python写一个信息收集四大件的脚本

    0x0前言: 带来一首小歌: 之前看了小迪老师讲的课,仔细做了些笔记 然后打算将其写成一个脚本. 0x01准备: requests模块 socket模块 optparser模块 time模块 0x02 ...

  2. python信息收集之子域名

    python信息收集之子域名 主要是以下3种思路: 字典爆破 搜索引擎 第三方网站 0x00 背景知识 list Python内置的一种数据类型是列表:list是一种有序的集合. >>&g ...

  3. python信息收集(一)

        在渗透测试初期,需要进行大量的信息收集.一般情况下,信息收集可以分为两大类----被动信息收集和主动信息收集.     其中,被动信息收集主要是通过各种公开的渠道来获取目标系统的信息,例如:站 ...

  4. python 信息收集器和CMS识别脚本

    前言: 信息收集是渗透测试重要的一部分 这次我总结了前几次写的经验,将其 进化了一下 正文: 信息收集脚本的功能: 1.端口扫描 2.子域名挖掘 3.DNS查询 4.whois查询 5.旁站查询 CM ...

  5. python信息收集(二)

        在第二层主机发现中,除了使用arping命令外,还可以使用Kali下自带的一个工具----netdiscover.      netdiscover是一个专门用于二层主机发现的工具,它有两种扫 ...

  6. python信息收集(三)

        前两篇介绍了利用python编写一些脚本实现二层主机的发现,这一篇介绍一下三层主机的发现.     一般来说,三层主机的发现主要是通过ICMP协议来实现的.其中ICMP协议中的ping命令可以 ...

  7. 内网横向渗透 之 ATT&CK系列一 之 信息收集

    前言 靶机下载地址:ATT&CK 拓扑图: 通过模拟真实环境搭建的漏洞靶场,完全模拟ATK&CK攻击链路进行搭建,形成完整个闭环.虚拟机默认密码为hongrisec@2019. 环境搭 ...

  8. 小白日记5:kali渗透测试之被动信息收集(四)--theHarvester,metagoofil,meltag,个人专属密码字典--CUPP

    1.theHarvester theHarvester是一个社会工程学工具,它通过搜索引擎.PGP服务器以及SHODAN数据库收集用户的email,子域名,主机,雇员名,开放端口和banner信息. ...

  9. Spark(四十八):Spark MetricsSystem信息收集过程分析

    MetricsSystem信息收集过程 参考: <Apache Spark源码走读之21 -- WEB UI和Metrics初始化及数据更新过程分析> <Spark Metrics配 ...

随机推荐

  1. ajax的封装——jq简化版

    最近在复习ajax的知识,练习了下ajax的封装,此处做下笔记 废话不多说,直接代码 //发请求 //此处的url为请求地址,type为请求方式,success为请求成功的回调函数 myaxios({ ...

  2. 简述MySQL数据库中的Date,DateTime,TimeStamp和Time类型

    DATETIME类型 定义同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00' ...

  3. Python——铅球飞行计算问题

    一. 1.IPO描述为:输入:铅球发射角度. 初始速度(m/s). 初始高度(m) 处理:模拟铅球飞行,时刻更新铅球在飞行中的位置 输出:铅球飞行距离(m) 可以拆分小的时间段.任意时刻的位置,都是 ...

  4. Codeforces Round #627 (Div. 3)

    1324A - Yet Another Tetris Problem(思维) 题意 给一个数组,每一个数组中的元素大小表示在竖直方向的方块数量,元素相邻怎竖直方向的方块也相邻,类似于俄罗斯方块当底层被 ...

  5. POJ 3273Monthly Expense(二分答案)

    题目链接 思路如下 题意:这一题让我们在一个 n 个数的序列,分成连续的的 m个子串(一个数也可是一个子串),是在所有子串中 和最大的子串 的和最小. 思路:我们可以用 二分法 来一个一个枚举答案,二 ...

  6. RedHat 6.7 使用 CentOS 6 的源

    1. 移除 RedHat 相关软件包 # yum -y remove subscription-manager and rh-check # rpm -aq | grep yum | xargs rp ...

  7. c期末笔记(1)

    运算符 1.i++与++i的细微区别 i++与++i 和i++放在一个语句中,则i原本的值先被利用.语句结束后,i的值加一. i的原始值失效,直接加一. 2.int加法 整形数据(int)加上任何类型 ...

  8. Eclipse(Eclipse for android)代码自动提示设置

    java代码和xml资源代码在有的eclipse中可以自己提示,但有的并不支持这个功能,还得我们人为去调整,主要原因是因为你们下载的elipse的渠道不同,获得的版本有的官方原版,有的是个人备份版等等 ...

  9. Jquery 搜索等待用户输入完成时自动执行

    $('#fuzzySearchBox').on('keyup', function (event) { var searchStr = $(this).val().toLowerCase(); //i ...

  10. 中阶d03.4 JDBC_DAO

    1.环境准备(单项目下用,在大jdbc项目下只用配置一次) jdbc的驱动(mysqlxxjdbc.jar).util工具(包装释放资源.建立连接.访问properties文件等方法) 2.dao的概 ...