云服务器网:购买云服务器和VPS必上的网站!

Python网络扫描:掌握基本的端口扫描和服务辨认技术

网络扫描是指通过扫描目标装备的网络端口,获得装备开放的服务信息,从而肯定装备的安全状态和系统运行情况。 Python是一种强大的编程语言,在网络扫描方面也提供了丰富的库和工具,本文将介绍Python网络扫描的基本知识和代码演示。端口扫描网络通讯是通过端口来实现

网络扫描是指通过扫描目标装备的网络端口,获得装备开放的服务信息,从而肯定装备的安全状态和系统运行情况。 python是一种强大的编程语言,在网络扫描方面也提供了丰富的库和工具,本文将介绍Python网络扫描的基本知识和代码演示。

  1. 端口扫描

网络通讯是通过端口来实现的,区别的服务会监听区别的端口。通过扫描目标装备的端口,可以肯定装备开放的服务和疑似存在的漏洞等信息。Python提供了socket模块,可以实现端口扫描功能。

首先,我们需要导入socket模块,使用socket.getaddrinfo()函数获得目标装备的IPV4地址和端口号。接着,使用socket.socket()函数创建socket对象,设置socket的timeout属性,以免长时间的等待。然后,使用socket.connect_ex()函数尝试连接目标主机,如果连接成功,则表明该端口开放,否则表明该端口关闭。

下面是一个简单的端口扫描代码:

import socket 

host = input("Enter the host name: ")

print("Scanning host: ", host)

for port in range(1, 1025):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(0.1)
    result = sock.connect_ex((host, port))
    if result == 0:
        print("Port {} is open".format(port))
    sock.close()

在上面的代码中,我们使用for循环扫描目标装备的前1024个端口。如果端口开放,则打印出端口号。

  1. 服务辨认

除端口扫描,服务辨认也是网络扫描中的一种重要技术。通过服务辨认,可以辨认出装备所运行的操作系统、启用的服务、使用的协议和版本号等信息,从而更好地了解装备的安全情况。

Python中,可使用第三方模块nmap实现服务辨认功能。nmap是一款强大的端口扫描和服务辨认工具,可以在区别的操作系统中使用。在Python中,可使用python-nmap模块来集成nmap的功能。

首先,我们需要安装nmap和python-nmap模块,命令以下:

sudo apt install nmap
pip install python-nmap

接着,我们可使用python-nmap模块来实现服务辨认功能。下面是一个简单的服务辨认代码:

import nmap

nm = nmap.PortScanner()

host = input("Enter the host name: ")

print("Scanning host: ", host)

try:
    nm.scan(host)
except nmap.PortScannerError:
    print("Cannot scan host ", host)

for port in nm[host]['tcp']:
    print('Port {}: '.format(port), nm[host]['tcp'][port]['name'], nm[host]['tcp'][port]['state'])

在上面的代码中,我们使用nmap.PortScanner()函数来创建一个端口扫描器。使用nm.scan()函数扫描目标装备,然后使用nm[host][‘tcp’]来获得TCP端口信息。通过打印输出TCP端口的名称和状态,我们可以了解装备上运行的服务信息。

  1. 示例演示

下面是一个综合演示代码,实现了一次网络扫描。该代码首先进行端口扫描,然后根据开放的端口号进行服务辨认,并打印出装备的相关信息。

import socket
import nmap

host = input("Enter the host name: ")
print("Scanning host: ", host)

# Port Scanning
print("Port scanning: ")
open_ports = []
for port in range(1, 1025):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(0.1)
    result = sock.connect_ex((host, port))
    if result == 0:
        open_ports.append(port)
        print("Port {} is open".format(port))
    sock.close()

# Service Detection
print("Service detection: ")
nm = nmap.PortScanner()
try:
    for port in open_ports:
        nm.scan(host, str(port))
        print('Port {}: '.format(port), nm[host]['tcp'][port])
except nmap.PortScannerError:
    print("Cannot scan host ", host)

在上面的代码中,我们首先使用socket模块进行端口扫描,然后根据开放的端口号使用nmap进行服务辨认。通过打印输出装备的相关信息,我们可以更好地了解装备的运行情况和安全状态。

总结

Python网络扫描是一种经常使用的信息获得和安全评估技术,能够快速了解装备的网络拓扑结构、运行的服务和漏洞等信息。通过掌握基本的端口扫描和服务辨认技术,我们可使用Python在情况需要时进行网络扫描。同时,也需要注意不要滥用网络扫描功能,以免侵犯他人的隐私和安全。

本文来源:https://www.yuntue.com/post/83282.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注