python信息收集(四)
在前三篇中,我们介绍了使用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信息收集(四)的更多相关文章
- python写一个信息收集四大件的脚本
0x0前言: 带来一首小歌: 之前看了小迪老师讲的课,仔细做了些笔记 然后打算将其写成一个脚本. 0x01准备: requests模块 socket模块 optparser模块 time模块 0x02 ...
- python信息收集之子域名
python信息收集之子域名 主要是以下3种思路: 字典爆破 搜索引擎 第三方网站 0x00 背景知识 list Python内置的一种数据类型是列表:list是一种有序的集合. >>&g ...
- python信息收集(一)
在渗透测试初期,需要进行大量的信息收集.一般情况下,信息收集可以分为两大类----被动信息收集和主动信息收集. 其中,被动信息收集主要是通过各种公开的渠道来获取目标系统的信息,例如:站 ...
- python 信息收集器和CMS识别脚本
前言: 信息收集是渗透测试重要的一部分 这次我总结了前几次写的经验,将其 进化了一下 正文: 信息收集脚本的功能: 1.端口扫描 2.子域名挖掘 3.DNS查询 4.whois查询 5.旁站查询 CM ...
- python信息收集(二)
在第二层主机发现中,除了使用arping命令外,还可以使用Kali下自带的一个工具----netdiscover. netdiscover是一个专门用于二层主机发现的工具,它有两种扫 ...
- python信息收集(三)
前两篇介绍了利用python编写一些脚本实现二层主机的发现,这一篇介绍一下三层主机的发现. 一般来说,三层主机的发现主要是通过ICMP协议来实现的.其中ICMP协议中的ping命令可以 ...
- 内网横向渗透 之 ATT&CK系列一 之 信息收集
前言 靶机下载地址:ATT&CK 拓扑图: 通过模拟真实环境搭建的漏洞靶场,完全模拟ATK&CK攻击链路进行搭建,形成完整个闭环.虚拟机默认密码为hongrisec@2019. 环境搭 ...
- 小白日记5:kali渗透测试之被动信息收集(四)--theHarvester,metagoofil,meltag,个人专属密码字典--CUPP
1.theHarvester theHarvester是一个社会工程学工具,它通过搜索引擎.PGP服务器以及SHODAN数据库收集用户的email,子域名,主机,雇员名,开放端口和banner信息. ...
- Spark(四十八):Spark MetricsSystem信息收集过程分析
MetricsSystem信息收集过程 参考: <Apache Spark源码走读之21 -- WEB UI和Metrics初始化及数据更新过程分析> <Spark Metrics配 ...
随机推荐
- [Asp.Net Core] 关于 Blazor Server Side 的一些杂项, 感想
在2016年, 本人就开始了一个内部项目, 其特点就是用C#构建DOM树, 然后把DOM同步到浏览器中显示. 并且在一些小工程中使用. 3年下来, 效果很不错, 但因为是使用C#来构建控件树, 在没有 ...
- 封装属于自己的Python包
将自己的程序打包为whl/tar.gz文件 有时候自己写了一个开发基本类,我们把这个类打包为whl或者tar.gz文件,这样的话同事也可以使用自己开发的基本类了 安装setuptools pip in ...
- Aggressive cows(二分法)
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28666 Accepted: 13146 Des ...
- python--爬虫(XPath与BeautifulSoup4)
获取页面内容除使用正则意外,还可以使用XPath,其原理是将html代码转换为xml格式,然后使用XPath查找html节点或元素. 选取节点 XPath使用路径表达式来选取XML文档中的节点或节点集 ...
- kali2016&2019的安装使用
先解释一下,为什么要说2016&2019哪,这是因为有一些测试靶机环境在2016以上的系统安装不通过,所以有时候会特意找2016的镜像来用. 一.下载镜像 1.下载镜像当然要到官方去下载了: ...
- Linux 磁盘管理篇, 目录管理(二)
格式化档案系统: mke2fs 列出文件系统的整体磁盘使用量 df 评估文件系统的磁盘使用量 du 查看Superbl ...
- Qt开发环境搭建 - Windows + VS2010 + VS插件
Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Cr ...
- JAVA中基础类型和字串类型之间的相互转换
转自:https://www.imooc.com/code/2251 仅做个人学习记录之用,侵删. 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法 ...
- 24 接口 Interface
/** Java语言的继承是单一继承,一个子类只能有一个父类(一个儿子只能有一个亲爹)* Java语言给我们提供了一种机制,用于处理继承单一的局限性的,接口* 接口:接口是一个比抽象类还抽象的类,接口 ...
- Windows下Python3.6.2+Django-1.11.5+httpd-2.4.27-win64-VC14部署网站
最近项目组正在上python+django.现在将部署过程总结下,相关文件也备份下,面得每次都要弄半天.网上很多不靠谱的做法,让我反复试错,浪费不少时间. 原材料: Python3.6.2 httpd ...