精华内容
下载资源
问答
  • Python 局域网扫描存活主机开放端口

    千次阅读 2019-01-07 14:19:08
    Python 局域网扫描存活主机开放端口 by 郑瑞国 1、ping指定IP判断主机是否存活 2、ping所有IP获取所有存活主机 3、nmap扫描存活主机开放端口 #注: 若在Linux系统下 ping -n 改为 ping -c 若在windows系统下 ping -...
    '''
    Python 局域网扫描存活主机开放端口 by 郑瑞国
    1、ping指定IP判断主机是否存活
    2、ping所有IP获取所有存活主机
    3、nmap扫描存活主机开放端口
    #注: 若在Linux系统下 ping -n 改为 ping -c 
         若在windows系统下 ping -n 不变
    '''
    import nmap
    import socket
    import os
    import threading
    import time 
     
    IPList = [] 
    def ping_ip(ip):                                          #1、ping指定IP判断主机是否存活
        output = os.popen('ping -n 1 %s'%ip).readlines()      #注:若在Linux系统下-n 改为 -c
        for w in output:
            if str(w).upper().find('TTL')>=0:
                IPList.append(ip)
     
    def ping_net(ip):                                         #2、ping所有IP获取所有存活主机
        pre_ip = (ip.split('.')[:-1])
        for i in range(1,256):
            add = ('.'.join(pre_ip)+'.'+str(i))
            threading._start_new_thread(ping_ip,(add,))
            time.sleep(0.01)
      
    def nmapScan(ip):                                         #3、nmap扫描存活主机开放端口
        nmScan = nmap.PortScanner()
        x=nmScan.scan(ip)
        for port in range(1,65536):
            try:
                state = x['scan'][ip]['tcp'][int(port)]['state']
                if state != 'unknown':
                    print(ip,port,state)
            except:
                pass
    
    if __name__ == '__main__':
        ping_net(socket.gethostbyname(socket.gethostname()))
        for ip in IPList:
            nmapScan(ip)
    

     

    展开全文
  • /usr/bin/python# -*- coding: utf-8 -*- from scapy.all import *from time import ctime,sleepimport threadingTIMEOUT = 4conf.verb=0 def pro(cc,handle): dst = “192.168.1.” + str(cc) packet = IP(dst=...
  • Python局域网扫描获取存活主机IP

    千次阅读 2018-11-27 11:48:14
    Python局域网扫描获取存活主机IP by 郑瑞国 1、获取本机操作系统名称 2、获取本机IP地址 3、ping指定IP判断主机是否存活 4、ping所有IP获取所有存活主机 ''' import platform import socket import os import ...
    '''
    Python局域网扫描获取存活主机IP by 郑瑞国
    1、获取本机操作系统名称
    2、获取本机IP地址
    3、ping指定IP判断主机是否存活
    4、ping所有IP获取所有存活主机
    '''
    import platform
    import socket
    import os
    import threading
    import time
    import sys
    
    
    def my_os():                                              #1、获取本机操作系统名称
        return platform.system()
    
    def my_ip():                                              #2、获取本机IP地址
        return socket.gethostbyname(socket.gethostname())
    
    def ping_ip(ip):                                          #3、ping指定IP判断主机是否存活
        if my_os() == 'Windows':
            p_w = 'n'
        elif my_os() == 'Linux':
            p_w = 'c'
        else:
            print('不支持此操作系统')
            sys.exit()
        output = os.popen('ping -%s 1 %s'%(p_w,ip)).readlines()
        for w in output:
            if str(w).upper().find('TTL')>=0:
                print(ip,'ok')        
    
    def ping_all(ip):                                         #4、ping所有IP获取所有存活主机
        pre_ip = (ip.split('.')[:-1])
        for i in range(1,256):
            add = ('.'.join(pre_ip)+'.'+str(i))
            #ping_ip(add)
            threading._start_new_thread(ping_ip,(add,))
            time.sleep(0.1)
    
    
    if __name__ == '__main__':
        ping_all(my_ip())

     

    展开全文
  • 局域网存活主机扫描 import re from functools import partial from multiprocessing.dummy import Pool as ThreadPool import time import os def ping(num,ip): a = os.popen('ping '+ip+str(num)).read() ...

     局域网存活主机扫描

    import re
    from functools import  partial
    from multiprocessing.dummy import Pool as ThreadPool
    import time
    import os 
    
    def ping(num,ip):
        a = os.popen('ping '+ip+str(num)).read()
        text=re.findall("TTL=(.*?)\n",a)
        if text==[]:
            s="no"
        else:
            s=text[0]
        print(ip+str(num)+"  "+s)
        os.close
    
    if __name__=="__main__":
        t=[]
        ip="172.19.20."
        for i in range(0,256):
            t.append(i)
        pool=ThreadPool(512)
        pool.map(partial(ping,ip=ip),t)#t 对应第一个参数
        pool.close()
        pool.join()

     url端口扫描

    import requests
    import re
    import urllib
    from urllib.request import urlopen
    from functools import  partial
    from multiprocessing.dummy import Pool as ThreadPool
    
    def pt(port,url):
        url=url+":"+str(port)
        try:
            req=requests.get(url)
        except:
            req="no"
        print(req,i)
    
    if __name__=="__main__":
        t=[]
        url="http://127.0.0.1"
        for i in range(0,256):
            t.append(i)
        pool=ThreadPool(512)
        pool.map(partial(pt,url=url),t)#t 对应第一个参数
        pool.close()
        pool.join()

     

    展开全文
  • python扫描局域网主机

    千次阅读 2019-04-11 17:04:08
    windows7 32位,python3.7 二,安装netaddr模块 netaddr模块能方便的对子网和IP地址进行操作。 三,工作原理 通过构建套接字对象对网络接口上的数据包嗅探,windows与linux的区别是windows允许我们嗅探所有协议...

    一、开发环境

    windows7 32位,python3.7

    二,安装netaddr模块

    netaddr模块能方便的对子网和IP地址进行操作。

    三,工作原理

    通过构建套接字对象对网络接口上的数据包嗅探,windows与linux的区别是windows允许我们嗅探所有协议的所有数据包,而linux只能嗅探到ICMP数据。当我们发送UDP数据到活动主机关闭的端口上时,会产生ICMP响应,ICMP响应的数据属性中,有一个类型值(type)和代码值(code),当这两个值都为3时,代表主机端口不可达。

    四,代码

    import socket
    import os
    import struct
    import threading
    
    from netaddr import IPNetwork,IPAddress
    from ctypes import *
    
    # host to listen on
    host   = "192.168.0.149"
    # subnet to target
    subnet = "192.168.0.0/24"
    # magic we'll check ICMP responses for
    magic_message = "PYTHONRULES!"
    def udp_sender(subnet,magic_message):
        sender = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        for ip in IPNetwork(subnet):
            try:
                sender.sendto(magic_message.encode(),("%s" % ip,65212))
            except Exception as e:
                raise(e)      
    class IP(Structure): 
        _fields_ = [
            ("ihl",           c_ubyte, 4),
            ("version",       c_ubyte, 4),
            ("tos",           c_ubyte),
            ("len",           c_ushort),
            ("id",            c_ushort),
            ("offset",        c_ushort),
            ("ttl",           c_ubyte),
            ("protocol_num",  c_ubyte),
            ("sum",           c_ushort),
            ("src",           c_ulong),
            ("dst",           c_ulong)
        ]  
        def __new__(self, socket_buffer=None):
                return self.from_buffer_copy(socket_buffer)         
        def __init__(self, socket_buffer=None):
            # map protocol constants to their names
            self.protocol_map = {1:"ICMP", 6:"TCP", 17:"UDP"}  
            # human readable IP addresses
            self.src_address = socket.inet_ntoa(struct.pack("<L",self.src))
            self.dst_address = socket.inet_ntoa(struct.pack("<L",self.dst))
            # human readable protocol
            try:
                self.protocol = self.protocol_map[self.protocol_num]
            except:
                self.protocol = str(self.protocol_num)
      
    class ICMP(Structure):
        _fields_ = [
            ("type",         c_ubyte),
            ("code",         c_ubyte),
            ("checksum",     c_ushort),
            ("unused",       c_ushort),
            ("next_hop_mtu", c_ushort)
            ]    
        def __new__(self, socket_buffer):
            return self.from_buffer_copy(socket_buffer)    
        def __init__(self, socket_buffer):
            pass
    # create a raw socket and bind it to the public interface
    if os.name == "nt":
        socket_protocol = socket.IPPROTO_IP 
    else:
        socket_protocol = socket.IPPROTO_ICMP
    sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)
    sniffer.bind((host, 0))
    # we want the IP headers included in the capture
    sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
    # if we're on Windows we need to send some ioctls
    # to setup promiscuous mode
    if os.name == "nt":
        sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
    # start sending packets
    t = threading.Thread(target=udp_sender,args=(subnet,magic_message))
    t.start()        
    try:
        while True:
            # read in a single packet
            raw_buffer = sniffer.recvfrom(65565)[0] 
            # create an IP header from the first 20 bytes of the buffer
            ip_header = IP(raw_buffer[0:20])
            #print "Protocol: %s %s -> %s" % (ip_header.protocol, ip_header.src_address, ip_header.dst_address)
            # if it's ICMP we want it
            if ip_header.protocol == "ICMP": 
                # calculate where our ICMP packet starts
                offset = ip_header.ihl * 4
                buf = raw_buffer[offset:offset + sizeof(ICMP)] 
                # create our ICMP structure
                icmp_header = ICMP(buf)
                #print("ICMP -> Type: %d Code: %d ip:%s" % (icmp_header.type, icmp_header.code,ip_header.src_address))
                # now check for the TYPE 3 and CODE 3 which indicates
                # a host is up but no port available to talk to           
                if icmp_header.code == 3 and icmp_header.type == 3:
                    # check to make sure we are receiving the response 
                    # that lands in our subnet
                    if IPAddress(ip_header.src_address) in IPNetwork(subnet):
                        # test for our magic message
                        if raw_buffer[len(raw_buffer)-len(magic_message):] == magic_message.encode():
                            print("Host Up: %s" % ip_header.src_address)
    # handle CTRL-C
    except KeyboardInterrupt:
        # if we're on Windows turn off promiscuous mode
        if os.name == "nt":
            sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
    
    

    上面代码出自《Black Hat Python》,但我是在win7 32的python3上运行的,代码稍微有点改动。运行结果如下“

     

     

    展开全文
  • "))) s.scanning() # s.Get() print("\n扫描用时: "+str(round(time.time()-start,2))+ "s") print("\n\n","扫描完成,欢迎下次使用".center(21,'*'),'\n\n') 本程序采用了多线程来自动扫描指定局域网主机、端口
  • 关于Scapy模块的详细介绍我就不在这里赘述了,...扫描局域网中活跃主机:   进行ARP攻击,自动抓包并保存,解读抓包信息:    嗅探对方上网记录:                
  • Python 简化版局域网扫描获取存活主机IP by 郑瑞国 1、ping指定IP判断主机是否存活 2、ping所有IP获取所有存活主机 #注: 若在Linux系统下 ping -n 改为 ping -c 若在windows系统下 ping -n 不变 ''' import socket...
  • python调用nmap扫描局域网存活主机和端口 文章目录python调用nmap扫描局域网存活主机和端口操作环境运行代码关键代码1. nm.scan(ip,port,args)2. 字典的解析运行结果参考文章 操作环境 python2 sudo apt install ...
  • Python局域网ping扫描在线主机

    千次阅读 2015-07-08 00:34:35
    首先参考了这个实现 它是开多线程来调用cmd ping LZ选择用subprocess.Popen,让...轮询Popen对象判断ping是否结束,进而检查echo信息判断,得到在线主机列表。。#-*- coding: utf-8 -*- import platform import sy
  • 遍历你要扫描的ip段地址并发送一个广播mac地址的请求包,收到回复则代表这台主机存活,并打印其ip地址及mac地址,用于arp欺骗。 Python扫描工具 思路: 以太头:本机mac•ff:ff:ff:ff:ff:ff 数据:00:00:...
  • python3+scapy扫描获取局域网主机ip和mac
  • python scapy arp scan [局域网arp扫描]

    万次阅读 2019-03-25 18:45:03
    看到网上绝大多数的python scapy arp 局域网扫描脚本写的实在是不敢恭维 spended 3mins code this 流程 1.开启数据包捕捉器 2.构造数据包并发送 本python 局域网arp 扫描器是基于多线程进行接收的, ps:这年头谁还用...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 主要介绍了Python实现扫描局域网活动ip(扫描在线电脑),本文直接给出实现代码,需要的朋友可以参考下
  • 这篇文章主要介绍了Python实现扫描局域网活动ip(扫描在线电脑),本文直接给出实现代码,需要的朋友可以参考下内网的主机都是自动分配ip地址,有时候需要查看下有那些ip在使用,就写了个简单的脚本。linux和windows下都...
  • Python实现局域网IP端口扫描

    千次阅读 2018-04-03 12:09:09
    import socket import threading # 创建接收路由列表 ...# 设置需要扫描的端口号列表 port_list = ['3389', '2425','139'] # 定义查询路由函数 def search_routers(): # 获取本地ip地址列表 loca...
  • 使用环境:Raspberry 3b+ +netifaces+python-nmap+nmap 调用netifaces自动获取ip地址: def get_gateways(): return netifaces.gateways()['default'][netifaces.AF_INET][0] 将ip地址生成一个网段中所有ip...
  • 简单的ARP主机扫描工具,通过ARP协议配合Python中的socket模块,对某个局域网内的主机进行简单扫描,并输出存活的主机
  • 使用 Python 查看局域网内存活主机

    千次阅读 热门讨论 2018-04-30 17:58:16
    当我们的网络首次接入一些新的设备,而且这些设备不是像手机、电脑一类的有屏幕设备,如服务器、Nas、树莓派等硬件,我们想要通过网络连接控制,但是并不知道设备的 IP 地址,这时,我们就需要扫描网络找到我们目标...
  • [PythonCode]扫描局域网的alive ip地址

    千次阅读 2014-11-12 18:52:30
    内网的主机都是自动分配ip地址,有时候需要查看下有那些ip
  • Python 局域网多线程扫描存活主机及端口 by 郑瑞国 1、获取本机操作系统名称 2、获取本机IP地址 3、ping指定IP判断主机是否存活 4、ping所有IP获取所有存活主机 5、扫描主机指定端口 (1)建立网络套接字 (2)...
  • 使用Python写的一个局域网计算机扫描程序 使用Python写的一个局域网计算机扫描程序,本程序为提升速度使用了多线程,基于模块:ipaddress,ping3,subprocess,re,prettytable,threading 程序非常实用,易于理解,敬请...
  • 使用python来获取整个局域网内可以连通的主机ip地址: 整体是思路就是 1、先获取我本机的ip地址 2、拿到我本机ip后,截取ip的最后一段,保留前一部分网段信息 3、调用cmd命令,循环从1循环255次到255来ping 整个...
  • 使用scapy写一个ARP主机扫描脚本(使用sys模块接收命令行传递的参数) #局域网主机扫描器 使用ARP扫描 #主机扫描,主机不是写死的,接收命令行传递的参数。 from scapy.all import * import time wifi="Intel(R) Dual ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,241
精华内容 896
关键字:

python局域网主机扫描

python 订阅