我制作了非常简单的端口扫描程序,但它运行速度太慢,所以我正在寻找方法使其扫描速度更快.这是我的代码:
public boolean portIsOpen(String ip, int port, int timeout) {
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, port), timeout);
socket.close();
return true;
} catch (Exception ex) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在此测试特定端口是否在特定IP上打开.对于超时,我使用最小值200,因为当我降低时,它没有足够的时间来测试端口.那么它运行良好,但从0到65535扫描需要太多.有没有其他方法可以在不到5分钟的时间内从0扫描到65535?
我需要以最快的方式使用Nmap在同一扫描中检索TCP和UDP端口.我会尝试更好地解释它.如果我使用最常见的命令:
nmap 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
它只检索TCP端口,而且速度非常快.
如果我使用以下命令:
nmap -sU 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
它只检索UDP端口并且它非常快(不是那么快但仍然如此).
我的问题:是否有两个命令的组合?我试过:
nmap -sU -sS 192.168.1.1
nmap -sU -sT 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
但它们很慢.
我正在使用Nmap 5.51,有什么建议吗?
我正在尝试使用nmap扫描大量域名.我使用以下命令:
Nmap -PN -p443 -sS -T5 -oX out.xml -iL in.csv
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
Warning: xx.xx.xx.xx giving up on port because retransmission cap hit (2).
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如何解决这个问题?
所以我在python中制作一个端口扫描器......
import socket
ip = "External IP"
s = socket.socket(2, 1) #socket.AF_INET, socket.SOCK_STREAM
def porttry(ip, port):
try:
s.connect((ip, port))
return True
except:
return None
for port in range(0, 10000):
value = porttry(ip, port)
if value == None:
print("Port not opened on %d" % port)
else:
print("Port opened on %d" % port)
break
raw_input()
Run Code Online (Sandbox Code Playgroud)
但这太慢了,我想以某种方式能够在一段时间内没有返回任何内容之后有多接近或破坏代码.
我正在尝试用C#编写端口扫描程序.我做了一些关于端口扫描方法的研究.
如果您有兴趣,这些是我发现有用的链接:
- http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/Probing/index.html ^ PPT Presentation ^
- http://www.auditmypc.com/freescan/readingroom/port_scanning.asp
- (旧)NMAP - 端口扫描的艺术:http://nmap.org/nmap_doc.html
- 端口扫描技术:http://nmap.org/book/man-port-scanning-techniques.html
- 端口扫描交互式示例:http://www.osischool.com/concept/communication/port-scanning
来到我的问题.这些是端口扫描方法:
- TCP连接()扫描
- TCP SYN扫描
- TCP FIN扫描
- TCP XMAS扫描
- TCP空闲扫描
- TCP窗口扫描
- UDP扫描
但我只执行TCP Connect() Scan
(如图所示这里).但这很慢(测试每个端口需要> 0.5秒).为了实现其余的方法,我需要数据包级访问.我需要创建原始数据包.是否有可能在C#中做到这一点?如果是这样怎么办?
我正在尝试异步扫描TCP端口.由于开放端口只需几百分之一毫秒即可完成它们很好,但是当端口关闭时我必须等待响应.
所以会发生的是我运行应用程序,几乎马上就看到端口80打开了.然后我必须等半分钟才能扫描所有其他端口.
编辑.另外,我希望在发生响应时显示响应,而不是等待其他端口进行检查.
如何让这更快?
private void btnStart_Click(object sender, EventArgs e)
{
for (int port = 79; port < 90; port++)
{
ScanPort(port);
}
}
private void ScanPort(int port)
{
TcpClient client = new TcpClient();
client.BeginConnect(IPAddress.Parse("74.125.226.84"), port, new AsyncCallback(CallBack), client);
}
private void CallBack(IAsyncResult result)
{
bool connected = false;
using (TcpClient client = (TcpClient)result.AsyncState)
{
try
{
client.EndConnect(result);
connected = client.Connected;
}
catch (SocketException)
{
}
}
if (connected)
{
this.Invoke((MethodInvoker)delegate
{
txtDisplay.Text += "open2" + Environment.NewLine;
});
}
else …
Run Code Online (Sandbox Code Playgroud) 如何使用本机C++检查远程UDP端口是否已打开?由于UDP是无连接的,因此调用connect()
没有帮助.我不能尝试绑定它,因为它不是本地的.nmap
也不能表明.(但是netstat
可以找到,但我认为它会查看有关开放端口/文件的内部信息).反正有检测它吗?如果我在网络级别上下层,是否可以通过C++发送ICMP消息来检查端口不可达状态?我的意思是,这会提供有关港口状况的足够信息吗?
平台是Linux.
我需要为Nmap扫描指定特定的IP范围,例如:
192.168.1.140 - 192.168.3.255
如果我这样做:
192.168.1-3.140-255
不会扫描192.168.2.7,192.168.3.7等IP地址(第4个actet中只有140-255).
我正在学习如何使用 nmap 并且我已经阅读了许多文档和教程,但是我没有得到关于 -sS 和 -PS 的用途的完美信息。一般来说,所有 -s 和 -P 之间有什么区别?两者都是用来扫描的吧?
sudo nmap -sS 192.168.0.50
sudo nmap -PS 192.168.0.50
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?
提前致谢。
我目前正在尝试用USB Hub扫描所有USB端口(检查它是否为Root)以及它们连接到哪个控制器.
为了使其更加明显:
USB Port1 (nothing plugged in) -> USB Hub1 | |-> Controller 1
USB Port2 (Keyboard plugged in) -> |-> USB Root Hub |-> Controller 2
USB Port3 (nothing plugged in) -> USB Hub2 | |
USB Port4 (nothing plugged in) -> |-> USB Root Hub |-> Controller3 (Mainboard)
Run Code Online (Sandbox Code Playgroud)
我想将用户所有端口和连接的集线器显示为树.如果USB端口及其控制器正在使用中.
我希望你们能理解我想要描述的内容.如果你能给我一些关键词甚至代码片段我会非常感激.
PS:抱歉我的英语不好.
到目前为止,这是代码(我正在使用.NetFramework 4.5.x):
USBPortScanner类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
using System.IO.Ports;
namespace USBPortScanner
{
class USBPortScanner
{
static void Main(string[] …
Run Code Online (Sandbox Code Playgroud) port-scanning ×10
nmap ×4
c# ×3
sockets ×3
port ×2
udp ×2
.net ×1
asynchronous ×1
c++ ×1
controller ×1
ip ×1
ip-address ×1
java ×1
linux ×1
networking ×1
python ×1
range ×1
tcp ×1
ubuntu ×1
usb ×1