Python编写渗透工具学习笔记一 | 0x03用多线程扫描某一网段中存活的主机

0x03用多线程扫描

某一网段中存活的主机

(如果渗透进了内网,还可以扫描内网上里的存活主机)

脚本利用演示+实现思路分析

实现思路:

调用终端执行ping命令,通过回显中是否有关键字 TTL 来判断主机是否存活

比较简陋,但是开发速度快,扫描精准度一般

先是用raw_input()接收要扫描的网段,然后生成该网段的256个ip,然后调用ping_check(ip)进行扫描,用subprocess.Popen()调用命令行终端执行ping,然后用check.stdout.read()读取执行ping命令之后返回的结果,用关键字TTL是否存在来判断主机是否存活,如果存在TTL就说明主机存活(这个我们执行以下ping就知道了,看下面截图)

主机112.90.216.1存活,在返回的信息里有字串‘TTL’

主机112.90.216.2不存活,在返回的信息里没有字串‘TTL’

一些基础知识

这里提供两个脚本给大家对比学习(主要是学习多线程)

  • python不推荐使用thread模块 ,推荐更高级的threading。
  • ping_Cduan.py这里的多线程使用thread模块,thread提供了低级别的、原始的线程以及一个简单的锁。
  • ping_YH.py这里使用Queue和threading模块
  • Queue模块是提供队列操作的模块,可以看成是一种数据结构
  • threading基于Java的线程模型设计,锁(Lock)和条件变量(Condition)在Java中是对象的基本行为(每一个对象都自带了锁和条件变量),而在Python中则是独立的对象。

一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,重写run方法,把线程执行的代码放到这个新的 class里。

科普一个模块IPy,如下脚本 会生成一整个192.168.1.0/24网段的256个ip

(也可以不使用这个模块)

原文发布于微信公众号 - 安恒网络空间安全讲武堂(gh_fa1e45032807)

原文发表时间:2017-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

python select模块详解

要理解select.select模块其实主要就是要理解它的参数, 以及其三个返回值。 select()方法接收并监控3个通信列表, 第一个是所有的输入的data...

4996
来自专栏数据之美

线上服务 CPU 100%?一键定位 so easy!

背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学...

5138
来自专栏猿人谷

内存泄露

1.简介       在计算机科学中,内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理...

2288
来自专栏PHP在线

PHP的GC垃圾收集机制

每一种语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,但是在OOP中,有些对象需要显式的销毁;防止程序执行内存溢出。 一、PHP 垃圾回收机...

3376
来自专栏北京马哥教育

面试分享系列 | 17道Python面试题,让你在求职中无往不利

今天给大家分享的是Python面试题系列的第一篇文章,后续我也会陆续整理Python相关的问题给大家,无论是求职者还是新人都可以通过面试题来考察自己的能力缺陷。...

3674
来自专栏c#开发者

Msmq设计文档(赋源代码)

Msmq设计文档 文件状态: [√] 草稿 [ ] 正式发布 [ ] 正在修改 文件标识: ECI-MSMQ v01 当前版本: 0.5...

3498
来自专栏风口上的猪的文章

.NET面试题系列[17] - 多线程概念(2)

当我们创建了一个线程后,线程里面主要包括线程内核对象、线程环境块、1M大小的用户模式栈和内核模式栈。

4512
来自专栏知识分享

3-物联网开发标配方案(APP程序介绍)

我把MQTT的执行程序直接做了一个类,单例模式加回调函数的形式,内部还做成了断线重连的

2482
来自专栏蘑菇先生的技术笔记

探索c#之storm的TimeCacheMap

2237
来自专栏MasiMaro 的技术博文

OLEDB 数据变更通知

除了之前介绍的接口,OLEDB还定义了其他一些支持回调的接口,可以异步操作OLEDB对象或者得到一些重要的事件通知,从而使应用程序有机会进行一些必要的处理。其中...

1063

扫码关注云+社区

领取腾讯云代金券