您当前的位置:首页 > 电脑百科 > 安全防护 > 黑客技术

Python 实现端口扫描

时间:2021-08-18 15:38:05  来源:  作者:墨客moke
  • TCP Connect扫描

TCP Connect扫描又叫做全连接扫描,客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放。 假设客户端想与服务端的80端口进行通信,首先客户端会发送一个带有SYN标识和端口号的TCP数据包给服务器,如果服务器这个端口是开放的,则会接受这个连接并返回一个带有SYN和ACK标识的数据包给客户端,随后客户端会发送带有ACK和RST标识的数据包给服务点,此时客户端与服务器建立了连接。

Python 实现端口扫描

 

当客户端发送一个带有 SYN 标识和端口号的 TCP 数据包给服务器后,如果服务器端返回一个带 RST 标识的数据包,则说明端口处于关闭状态。

Python 实现端口扫描

 

  • 实现代码
# #!/usr/bin/Python/ target=_blank class=infotextkey>Python3
#sacn.py
# python3 TCP 连接扫描

import sys
from socket import *
import time

#统计端口开启数量
open_num = 0
def scan(ip,port):
    global open_num
    try:
        s = socket(AF_.NET,SOCK_STREAM)
        s.connect((ip,port))
        open_num+=1
        print('{0} port {1} is open'.format(ip, port))
    except Exception as err:
        #print('{0} port {1} is close'.format(ip,port))
        pass
    finally:
        s.close()



def main():
    #设置超时时间,秒为单位
    setdefaulttimeout(1)
    #获取第一个参数为主机名称
    host = sys.argv[1]
    #获取端口区间
    ports= sys.argv[2].split('-')
    start_pt = int(ports[0])
    end_pt = int(ports[1])
    #获取主机IP地址
    target_ip = gethostbyname(host)
    #开始计时
    start_time = time.time()
    for port in range(start_pt,end_pt):
        scan(target_ip,port)
    #计时结束
    end_time = time.time()
    #输出存活端口数量
    print('存活端口%d 个'%(open_num))
    #输出扫描耗费市场
    print('总共用时{:.2f}秒'.format(end_time-start_time))

if __name__=='__main__':
    main()

上述代码实现了TCP connect单线程扫描功能,如果全端口扫描将会超级慢,下面引入多线程改造。

  • 多线程操作实现
#!/usr/bin/python3

# python3 TCP 连接扫描

import sys
from socket import *
import time
import threading

lock = threading.Lock()
threads =[]
open_num = 0

setdefaulttimeout(1)
def scan(ip,port):
    global open_num
    try:
        s = socket(AF_INET,SOCK_STREAM)
        s.connect((ip,port))
        lock.acquire()
        open_num+=1
        print('{0} port {1} is open'.format(ip, port))
        lock.release()
    except Exception as err:
        #print('{0} port {1} is close'.format(ip,port))
        pass
    finally:
        #lock.release()
        s.close()



def main():
    host = sys.argv[1]
    ports= sys.argv[2].split('-')
    start_pt = int(ports[0])
    end_pt = int(ports[1])
    target_ip = gethostbyname(host)
    start_time = time.time()
    for port in range(start_pt,end_pt):
        t = threading.Thread(target=scan,args=(target_ip,port))
        threads.Append(t)
        t.start()
        #scan(target_ip,port)

    for t in threads:
        t.join()
    end_time = time.time()
    print('存活端口 %d 个'%(open_num))
    print('总共用时{:.2f}秒'.format(end_time-start_time))

if __name__=='__main__':
    main()
  • 相同扫描执行时间对比
moke@moke:~/moke_python$ python3 scan.py www.jd.com 22-28
218.203.117.211 port 25 is open
存活端口1 个
总共用时5.01秒
moke@moke:~/moke_python$ python3 scan_thread.py www.jd.com 22-28
218.203.111.82 port 25 is open
存活端口 1 个
总共用时1.00秒
  • 本章节知识点
1.socket:Socket 是在应用层和传输层之间的一个抽象层,它把 TCP/IP 层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。
2.threading:多线程
  • 下一讲内容

python多线程



Tags:端口扫描   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
通过前面几篇关于有效ip发现的文章介绍后,接下来就是对于这些活着的主机进行端口扫描的介绍了。端口对应了网络服务及应用端程序,服务的程序的漏洞通过端口攻入;通过开放的端口...【详细内容】
2022-03-03  Tags: 端口扫描  点击:(247)  评论:(0)  加入收藏
我们都知道公司网络中开放的端口越多,遭受网络攻击的可能性就越大,就越容易发生数据泄露事件。 在这篇文章中,我们将讨论与开放端口相关的网络安全隐患。 网络中的端口 据统计...【详细内容】
2021-12-10  Tags: 端口扫描  点击:(734)  评论:(0)  加入收藏
TCP Connect扫描TCP Connect扫描又叫做全连接扫描,客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放。 假设客户端想与服务端的8...【详细内容】
2021-08-18  Tags: 端口扫描  点击:(220)  评论:(0)  加入收藏
前言任何一个靠谱的网络攻击都是起步于侦查的。攻击者必须在挑选并确定利用目标中的漏洞之前找出目标在哪里有漏洞。在本篇文章中,我们将编写一个扫描目标主机开放的TCP端口...【详细内容】
2020-07-30  Tags: 端口扫描  点击:(232)  评论:(0)  加入收藏
端口扫描是计算机解密高手喜欢的一种方式。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,接收到的回应类型表示是否在使用该端口,并且可由此...【详细内容】
2020-05-02  Tags: 端口扫描  点击:(197)  评论:(0)  加入收藏
今天给大家介绍一款端口扫描工具Pscan一、环境:kali2019.4 python2二、安装过程:1、复制Pscan到本地安装包git clone https://github.com/P0desta/Pscan.git 三、命令1、cd...【详细内容】
2020-02-22  Tags: 端口扫描  点击:(192)  评论:(0)  加入收藏
说起端口扫描,不少人不免想起诸多工具。确实,近几年端口扫描越来越大众、便利化。哪怕是当年的一些小工具,虽然现在已经不是很好用,但是依旧很多人(小白)下载到欣喜。比如当年知名...【详细内容】
2019-10-28  Tags: 端口扫描  点击:(289)  评论:(0)  加入收藏
MacOS 自带的端口扫描工具如何使用?对于有端口扫描需求的 Mac 用户来说,其实 macOS 网络实用工具中内置了一款端口扫描程序,这意味着若没有高级的需求,您不需要再额外安装第三方...【详细内容】
2019-10-23  Tags: 端口扫描  点击:(276)  评论:(0)  加入收藏
▌简易百科推荐
绝大多数企业将大量的投资花费在网络和服务器的安全上,没有从真正意义上保证应用本身的安全,给黑客以可乘之机。当今世界, Internet(因特网)已经成为一个非常重的基础平台,很多...【详细内容】
2022-07-12  前端启明星    Tags:web渗透   点击:(8)  评论:(0)  加入收藏
前言钓鱼wifi是很久的话题了,但是传统的方法可能比较麻烦需要手动配置dhcp,dns,网卡,流量转发,比较麻烦,而且还有根据每次的网络环境需要重新的配置,这里介绍用WIFIpumpkin3工具简...【详细内容】
2022-07-12  黑客帮    Tags:钓鱼wifi   点击:(7)  评论:(0)  加入收藏
顶尖黑客组织匿名者 匿名者世界第一大邪恶黑客联盟组织,其成员遍布全世界,并且实力超强。曾入侵过美国的五角大楼、攻击过isis的网站,入侵过荷兰、英国等国家的网络系统,被世界...【详细内容】
2022-07-10  A位出道    Tags:黑客   点击:(13)  评论:(0)  加入收藏
CSRF:Cross Site Request Forgery(跨站点请求伪造)。CSRF 攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网...【详细内容】
2022-06-27  Java那点事    Tags:CSRF   点击:(27)  评论:(0)  加入收藏
SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,SYN Cookie就是其中最著名的一种。 SYN Flood攻击原理SYN Flood攻击是一种...【详细内容】
2022-06-21  我是FEIYA    Tags:SYN Flood   点击:(41)  评论:(0)  加入收藏
前言最近在做内网渗透相关姿势点的总结,打了一些靶场,本次内网网络拓扑图如下所示,中等进阶难度。 测试过程0x1:信息搜集访问域名: 对域名解析的ip进行端口扫描:nmap -sS --open -...【详细内容】
2022-06-15  星云博创    Tags:渗透测试   点击:(35)  评论:(0)  加入收藏
零基础学黑客领资料搜公众号:白帽子左一关于原型链在javascript中,继承的整个过程就称为该类的原型链。每个对象的都有一个指向他的原型(prototype)的内部链接,这个原型对象又...【详细内容】
2022-05-20  暗网视界    Tags:nodejs   点击:(69)  评论:(0)  加入收藏
参数来源:GitHub(802) https://github.com/FastTunnel/FastTunnel来源:Gitee(2200) https://gitee.com/Hgui/FastTunnel协议:Apache-2.0 license官网:https://suidao.io/文档:htt...【详细内容】
2022-05-16  IT微部落    Tags:内网穿透   点击:(115)  评论:(0)  加入收藏
因前段时间退出了内网的学习,现在开始复习web方面的漏洞了,于是乎,开始了挖洞之旅,当我像往常一样上传冰蝎的webhsell时,发现冰蝎的马子居然被杀了.......于是便有了该文章........【详细内容】
2022-05-11  暗网视界    Tags:冰蝎   点击:(173)  评论:(0)  加入收藏
外网打点首先对web进行端口扫描,发现38080端口和22端口 访问一下38080端口发现是一个error page 用Wappalyzer看一下是什么架构,但是好像没有检测出来 拿着报错去百度上发现应...【详细内容】
2022-04-30  靓仔的二十四分之一天    Tags:靶场渗透   点击:(63)  评论:(0)  加入收藏
站内最新
站内热门
站内头条