ตรวจสอบพอร์ตที่เปิดโดยไม่มี telnet [ปิด]


17

สิ่งที่ผู้คนใช้เมื่อไม่ได้ติดตั้ง Telnet เพื่อตรวจสอบว่าพอร์ตเปิดอยู่และสามารถเข้าถึงได้ เช่นฉันเคยใช้เทคนิคtelnet <destination>และรู้ว่ามันอยู่ที่นั่นแม้ว่า telnet ไม่สามารถโต้ตอบกับระบบในส่วนอื่น ๆ

ด้วย telnet Windows 2008 ไม่ได้ติดตั้งดังนั้นฉันจึงหลงทางเล็กน้อย ดังนั้นสิ่งที่ฉันสามารถใช้แทน และบางสิ่งบางอย่างหากไม่มีใน Linux หรือ Solaris เช่นกัน

ฉันเป็นที่ปรึกษาที่ทำงานในเว็บไซต์ต่างๆ ด้วยเหตุผลหลายประการ (สิทธิ์การเข้าถึงเปลี่ยนเวลาควบคุมถ้าฉันติดตั้งให้ใครบางคนใช้มันในปีหน้าเรามีความรับผิดชอบบางอย่าง ฯลฯ ) ฉันไม่สามารถติดตั้งบนเซิร์ฟเวอร์ของผู้อื่นได้ แต่ USB หรือเครื่องมืออื่น ๆ ที่ไม่ได้ติดตั้งจะยอดเยี่ยม ...


3
ทำไมคุณไม่เพิ่งติดตั้ง
Chris McKeown

หรือติดตั้งสิ่งที่ต้องการnmap...
etagenklo

ลองใช้nmap
Zeeshan


คำตอบ:


25

ใช้ Powershell เหมือนเจ้านาย


รหัสพื้นฐาน

$ipaddress = "4.2.2.1"
$port = 53
$connection = New-Object System.Net.Sockets.TcpClient($ipaddress, $port)

if ($connection.Connected) {
    Write-Host "Success"
}
else {
    Write-Host "Failed"
}

เปลี่ยนเป็น cmdlet

[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True,Position=1)]
   [string]$ip,

   [Parameter(Mandatory=$True,Position=2)]
   [int]$port
)

$connection = New-Object System.Net.Sockets.TcpClient($ip, $port)
if ($connection.Connected) {
    Return "Connection Success"
}
else {
    Return "Connection Failed"
}

บันทึกเป็นสคริปต์และใช้ตลอดเวลา

จากนั้นคุณใช้คำสั่งในพรอมต์ PowerShell หรือ cmd ดังนี้:

PS C:\> telnet.ps1 -ip 8.8.8.8 -port 53

หรือ

PS C:\> telnet.ps1 8.8.8.8 53


4
นอกจากนี้คุณยังสามารถเรียกใช้งานได้: New-Object System.Net.Sockets.TcpClient ("IP หรือ DomainName", 80) และคุณจะได้รับข้อผิดพลาดหากไม่สามารถเชื่อมต่อหรือข้อมูลเกี่ยวกับวัตถุที่สร้างขึ้นหากการเชื่อมต่อสำเร็จ
Tsuushin

1
มันทำงานอย่างไรในแง่ของการปิดซ็อกเก็ต? ตัวอย่างเช่นฉันรู้ว่าฉันเปิด webrequest กับ IIS แต่ไม่ปิดการเชื่อมต่อมันจะถึงขีด จำกัด และฉันจะไม่สามารถทดสอบได้อีกต่อไป
Vasili Syrakis

คำถามที่ดี. ฉันคิดว่ามันทำเช่นเดียวกับคำตอบของคุณ (เนื่องจากคุณ / เราไม่ได้กำจัดมันหรือปิดซ็อกเก็ตด้วยตนเอง); TcpClient ควรได้รับการรวบรวมขยะในบางจุดหรือซ็อกเก็ตจะกดการหมดเวลาอ่านก่อนหน้านั้น แค่เดายังไม่ได้ทดสอบ!
Tsuushin

1
หากคุณไม่ต้องการกังวลเกี่ยวกับการเปิดซ็อกเก็ตทิ้งไว้สักครู่คุณสามารถทำได้: (New-Object System.Net.Sockets.TcpClient ($ ip, $ port)) ปิดดีลเหมือนเดิม เกิดข้อผิดพลาดหากคุณไม่สามารถเชื่อมต่อได้ แต่จะพิมพ์สิ่งนี้หากเชื่อมต่อแล้วปิดพอร์ตสำเร็จ: void Close ()
Tsuushin

41

ต่อไปนี้เป็นวิธีการทดสอบพอร์ต TCP ที่ไม่มี telnet

BASH ( หน้าคน )

# cat < /dev/tcp/127.0.0.1/22
SSH-2.0-OpenSSH_5.3
^C

# cat < /dev/tcp/127.0.0.1/23
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/23: Connection refused


ม้วน

# curl -v telnet://127.0.0.1:22
* About to connect() to 127.0.0.1 port 22 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 22 (#0)
SSH-2.0-OpenSSH_5.3
^C

# curl -v telnet://127.0.0.1:23
* About to connect() to 127.0.0.1 port 23 (#0)
*   Trying 127.0.0.1... Connection refused
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host


หลาม

# python
Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> clientsocket.connect(('127.0.0.1', 22))
>>> clientsocket.send('\n')
1
>>> clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> clientsocket.connect(('127.0.0.1', 23))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused


Perl

# perl
use IO::Socket::INET;
$| = 1;
my $socket = new IO::Socket::INET(
  PeerHost => '127.0.0.1',
  PeerPort => '22',
  Proto => 'tcp',
);
die "cannot connect to the server $!\n" unless $socket;
print "connected to the server\n";
^D
connected to the server

+1 ไม่ทราบวิธีการม้วนเด็ดมาก! :)
blong
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.