【问题标题】:How to flood IP addresses to find server如何泛洪IP地址以查找服务器
【发布时间】:2015-03-23 06:12:52
【问题描述】:

我正在尝试使用蛮力在我的客户端中生成一系列本地 IP 地址,希望找到正在等待连接的服务器 IP。我已经知道服务器正在侦听的端口号。可以有人请告诉我为什么我的代码不起作用。在此先感谢

from socket import *
s=socket(AF_INET,SOCK_STREAM)
ip="192.168."
print("Searching for IP...")
for i in range(0,256):
    for j in range(0,256):
        host=ip+str(i)+"."+str(j)
        add=(host,1060)
        try:
            s.connect(add)
            print("Server Found:",add)
        except:
            print(host,"failed")

【问题讨论】:

  • 我可以建议看看 scapy secdev.org/projects/scapy,因为它为这类事情提供了内置工具。
  • 它在什么方面不起作用?我预计它会非常慢,因为它必须等待所有未使用的地址超时。
  • 你可能需要每次循环创建一个新的socket,我不知道你是否可以重复使用你已经尝试连接的socket。
  • 你也应该在s.connect成功时跳出循环。

标签: python networking ip client server


【解决方案1】:

正如评论所说,只需在代码中添加一些内容即可:

from socket import *

ip="192.168."
print("Searching for IP...")
for i in range(0,256):
    for j in range(0,256):
        host=ip+str(i)+"."+str(j)
        add=(host,1060)
        print host
        s=socket(AF_INET,SOCK_STREAM) # create the socket in loop
        s.settimeout(4) # set the timeout value as 4 seconds
        try:
            s.connect(add)
            print("Server Found:",add)
        except:
            print(host,"failed")
        s.close() # close it
        del s

settimeout 将使代码更有效,并且不会加快太多时间。

使用同一个socket会出错

[Errno 10022]

喜欢下面的代码:

from socket import *

ip="192.168."
print("Searching for IP...")
s=socket(AF_INET,SOCK_STREAM) # create the socket in loop
for i in range(0,256):
    for j in range(0,256):
        host=ip+str(i)+"."+str(j)
        add=(host,1060)
        print host

        #s.settimeout(4) # set the timeout value
        try:
            s.connect(add)
            print("Server Found:",add)
        except Exception, error:
            print(host,"failed")
            print error
        #s.close() # close it
        #del s

【讨论】:

猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2015-01-08
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多