程序不通过它们仅 运行 ping 生成的 IPS
Program not pinging generated IPS just running through them
我有一个生成随机 IP 地址并尝试对它们执行 ping 操作并向其添加端口的程序,我将使用此工具进行渗透测试。我让它在某一时刻工作,并决定为了找到将使用哪种 ping 方法,程序将首先发现 OS 用户正在 运行ning 并确定 ping 方法方法;有了这个:
def self.windows?
return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/
end
def self.linux?
return File.exist? "/usr" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /linux/
end
def self.os
return :linux if self.linux?
return :windows if self.windows?
nil
end
def check_os
if windows?
@ping = `ping -n 1 #{@ip}`
check_file
elsif linux?
@ping = `ping -c 1 #{@ip}`
check_file
else
@ping = `ping -c 1 #{@ip}`
check_file
end
end
现在这确实找出了正确的 OS(我相信有更好的方法来做到这一点,如果你知道请告诉我)但我担心的是它在程序上执行完整的 运行 时,在提示时实际上并没有使用 @ping
命令。相反,它所做的只是不断循环而不是对 IP 地址执行 ping 操作。 (假设循环直到找到大约 3500 个 IP)
源代码:
require 'colored'
require 'timeout'
def self.windows?
return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/
end
def self.linux?
return File.exist? "/usr" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /linux/
end
def self.os
return :linux if self.linux?
return :windows if self.windows?
nil
end
def check_os
if windows?
@ping = `ping -n 1 #{@ip}`
check_file
elsif linux?
@ping = `ping -c 1 #{@ip}`
check_file
else
@ping = `ping -c 1 #{@ip}`
check_file
end
end
def check_file
if File.exist?("proxies.txt")
File.truncate("proxies.txt", 0)
puts "\n[NOTICE]File exists in system, resuming process.\n".blue.bold
create_possibles
else
puts "\n[NOTICE]File proxies.txt created successfully.\n".blue.bold
File.new("proxies.txt")
create_possibles
end
end
def create_possibles
puts "\n[NOTICE]Attempting to ping generated IP addresses.\n".blue.bold
ports = %w(80 443 1935 2222 3128 3130 7808 8080 8081 8085 8089
8090 8102 8104 8106 8118 8119 8123 8888 8898 9000
9090 9797 9999 10000 10052 10053 10059 10088 12345
18000 18001 18008 37564 40080 55336 59998
)
100.times do
@ip = Array.new(4){rand(256)}.join('.')
begin
Timeout::timeout(5) do
@ping
if @ping =~ /Received = 1/
puts "[SUCCESS]Possible proxies created for IP: #{@ip}".green.bold
File.open("proxies.txt", "a+") do |proxy|
ports.each { |port| proxy.puts("#{@ip}:#{port}") }
end
else
puts "[ERROR]IP failed to ping: #{@ip}".red.bold
end
end
rescue Timeout::Error, Errno::ENOBUFS
puts "[WARNING]IP timed out: #{IP}".yellow.bold
next
end
end
check_for_amount_of_proxies
end
def check_for_amount_of_proxies
if File.size("proxies.txt") >= 71769
puts "\n[NOTICE]Proxies created, attempting connection\n".blue.bold
system("proxies-scanner -f proxies.txt")
print "[NOTICE]Truncating file: proxies.txt".blue.bold
else
puts "\n[NOTICE]File doesn't contain enough proxies, restarting IP finding proccess.\n".blue.bold
create_possibles
end
end
所以我的问题是,@ping
无法正确 运行 的地方我做错了什么,我该如何解决?
你实际上并没有执行 ping 命令。这部分:
Timeout::timeout(5) do
@ping # this isn't doing anything
if @ping =~ /Received = 1/
puts "[SUCCESS]Possible proxies created for IP: #{@ip}".green.bold
File.open("proxies.txt", "a+") do |proxy|
ports.each { |port| proxy.puts("#{@ip}:#{port}") }
end
else
puts "[ERROR]IP failed to ping: #{@ip}".red.bold
end
end
我假设您希望带有 @ping
变量的行执行 shell 中的命令。您需要使用反引号或系统方法 system @ping
来做到这一点。这将执行 shell.
中的 @ping 字符串
我有一个生成随机 IP 地址并尝试对它们执行 ping 操作并向其添加端口的程序,我将使用此工具进行渗透测试。我让它在某一时刻工作,并决定为了找到将使用哪种 ping 方法,程序将首先发现 OS 用户正在 运行ning 并确定 ping 方法方法;有了这个:
def self.windows?
return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/
end
def self.linux?
return File.exist? "/usr" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /linux/
end
def self.os
return :linux if self.linux?
return :windows if self.windows?
nil
end
def check_os
if windows?
@ping = `ping -n 1 #{@ip}`
check_file
elsif linux?
@ping = `ping -c 1 #{@ip}`
check_file
else
@ping = `ping -c 1 #{@ip}`
check_file
end
end
现在这确实找出了正确的 OS(我相信有更好的方法来做到这一点,如果你知道请告诉我)但我担心的是它在程序上执行完整的 运行 时,在提示时实际上并没有使用 @ping
命令。相反,它所做的只是不断循环而不是对 IP 地址执行 ping 操作。 (假设循环直到找到大约 3500 个 IP)
源代码:
require 'colored'
require 'timeout'
def self.windows?
return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/
end
def self.linux?
return File.exist? "/usr" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /linux/
end
def self.os
return :linux if self.linux?
return :windows if self.windows?
nil
end
def check_os
if windows?
@ping = `ping -n 1 #{@ip}`
check_file
elsif linux?
@ping = `ping -c 1 #{@ip}`
check_file
else
@ping = `ping -c 1 #{@ip}`
check_file
end
end
def check_file
if File.exist?("proxies.txt")
File.truncate("proxies.txt", 0)
puts "\n[NOTICE]File exists in system, resuming process.\n".blue.bold
create_possibles
else
puts "\n[NOTICE]File proxies.txt created successfully.\n".blue.bold
File.new("proxies.txt")
create_possibles
end
end
def create_possibles
puts "\n[NOTICE]Attempting to ping generated IP addresses.\n".blue.bold
ports = %w(80 443 1935 2222 3128 3130 7808 8080 8081 8085 8089
8090 8102 8104 8106 8118 8119 8123 8888 8898 9000
9090 9797 9999 10000 10052 10053 10059 10088 12345
18000 18001 18008 37564 40080 55336 59998
)
100.times do
@ip = Array.new(4){rand(256)}.join('.')
begin
Timeout::timeout(5) do
@ping
if @ping =~ /Received = 1/
puts "[SUCCESS]Possible proxies created for IP: #{@ip}".green.bold
File.open("proxies.txt", "a+") do |proxy|
ports.each { |port| proxy.puts("#{@ip}:#{port}") }
end
else
puts "[ERROR]IP failed to ping: #{@ip}".red.bold
end
end
rescue Timeout::Error, Errno::ENOBUFS
puts "[WARNING]IP timed out: #{IP}".yellow.bold
next
end
end
check_for_amount_of_proxies
end
def check_for_amount_of_proxies
if File.size("proxies.txt") >= 71769
puts "\n[NOTICE]Proxies created, attempting connection\n".blue.bold
system("proxies-scanner -f proxies.txt")
print "[NOTICE]Truncating file: proxies.txt".blue.bold
else
puts "\n[NOTICE]File doesn't contain enough proxies, restarting IP finding proccess.\n".blue.bold
create_possibles
end
end
所以我的问题是,@ping
无法正确 运行 的地方我做错了什么,我该如何解决?
你实际上并没有执行 ping 命令。这部分:
Timeout::timeout(5) do
@ping # this isn't doing anything
if @ping =~ /Received = 1/
puts "[SUCCESS]Possible proxies created for IP: #{@ip}".green.bold
File.open("proxies.txt", "a+") do |proxy|
ports.each { |port| proxy.puts("#{@ip}:#{port}") }
end
else
puts "[ERROR]IP failed to ping: #{@ip}".red.bold
end
end
我假设您希望带有 @ping
变量的行执行 shell 中的命令。您需要使用反引号或系统方法 system @ping
来做到这一点。这将执行 shell.