zoukankan      html  css  js  c++  java
  • Python_网络攻击之端口

     1 #绝大多数成功的网络攻击都是以端口扫描开始的,在网络安全和黑客领域,端口扫描是经常用到的技术,可以探测指定主机上是否
     2 #开放了指定端口,进一步判断主机是否运行了某些重要的网络服务,最终判断是否存在潜在的安全漏洞,从一定意义上将也属于系统运维的范畴
     3 
     4 #端口扫描器程序:模拟端口扫描器的工作原理,并采用多进程技术提高扫描速度
     5 import socket
     6 import sys
     7 import multiprocessing
     8 
     9 def ports(ports_serve):
    10     #获取常用端口对应的服务名称
    11     for port in list(range(1,100))+[143,145,113,443,445,3389,8080]:
    12         try:
    13             ports_serve[port]=socket.getservbyport(port)
    14         except socket.error:
    15             pass
    16 
    17 def ports_scan(host,ports_service):
    18     ports_open=[]
    19     try:
    20         sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    21         #超时时间的不同会影响扫描结果的精确度
    22         socket.timeout(0.01)
    23     except socket.error:
    24         print('socket creation error')
    25         sys.exit()
    26     for port in ports_service:
    27         try:
    28             #尝试连接指定端口
    29             sock.connect((host,port))
    30             #记录打开的端口
    31             ports_open.append(port)
    32             sock.close()
    33         except socket.error:
    34             pass
    35     return ports_open
    36 
    37 if __name__ == '__main__':
    38     m=multiprocessing.Manager()
    39     ports_service=dict()
    40     results=dict()
    41     ports(ports_service)
    42     #创建进程池,允许最多8个进程同时运行
    43     pool = multiprocessing.Pool(processes=8)
    44     net = '10.2.1.'
    45     for host_number in map(str,range(8,10)):
    46         host = net + host_number
    47         #创建一个新进程,同时记录其运行结果
    48         results[host] = pool.apply_async(ports_scan,(host,ports_service))
    49         print('starting '+host+'...')
    50     #关闭进程池,close()必须在join()之前调用
    51     pool.close()
    52     #等待进程池中的进程全部执行结束
    53     pool.join()
    54 
    55     #打印输出结果
    56     for host in results:
    57         print('='*30)
    58         print(host,'.'*10)
    59         for port in results[host].get():
    60             print(port,':',ports_service[port])
    61 
    62 #Python扩展库netaddr提供了大量可以处理网络地址的类和对象,例如netaddr.valid_ipv4(addr)可以判断addr时否为合法IPv4地址
    63 #netaddr.IPNetwork('10.2.1.0/24')和netaddr.IPRange('10.2.1.0','10.2.1.255')都可以用来生成包含介于10.2.1.0到10.2.1.255之间的IP地址的迭代对象。
  • 相关阅读:
    DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能
    C#中全局作用域的常量、字段、属性、方法的定义与使用
    DevExpress的TreeList的常用属性设置以及常用事件
    DevExpress的TreeList怎样设置数据源,从实例入手
    一、ABP框架框架摘要
    十、LINQ查询之延迟执行
    一、
    二、core abp 数据库迁移
    十一、ASP.NET Boilerplate
    十、ABP
  • 原文地址:https://www.cnblogs.com/cmnz/p/7087123.html
Copyright © 2011-2022 走看看