উত্তর:
আপনি পোর্টগুলি পিং করতে পারবেন না, যেহেতু পিং আইসিএমপি ব্যবহার করছে যা পোর্টগুলির ধারণা নেই। বন্দরগুলি টিসিপি এবং ইউডিপির মতো পরিবহন স্তর প্রোটোকলের অন্তর্ভুক্ত । তবে, আপনি বন্দরগুলি খোলা আছে কিনা তা দেখতে এনএমএপ ব্যবহার করতে পারেন
nmap -p 80 example.com
সম্পাদনা: যেমন ফ্লোক্রা উল্লেখ করেছেন, এনএম্যাপ কেবল পিং-ফর-পোর্ট-থ্যাটিয়ের চেয়ে বেশি। এটি সিকিউরিটি অডিটর এবং হ্যাকারদের সেরা বন্ধু এবং এটি প্রচুর দুর্দান্ত বিকল্প নিয়ে আসে। সমস্ত সম্ভাব্য পতাকা জন্য ডক পরীক্ষা করুন।
-PN
প্রদত্ত বন্দরটি পরীক্ষা করার আগে হোস্ট আবিষ্কারের এনএমএপটি সাধারণত এড়িয়ে যেতে যোগ করতে পারেন ।
nmap windows
) থেকে উইন্ডোতে এনএম্যাপ / ক্যান / ইনস্টল করা যেতে পারে , তবে এটি ভিপিএনগুলিতে কাজ করে না। পাইপিং মনে হচ্ছে না যে তারা বিস্তৃত ঠিকানা স্ক্যান করতে সক্ষম হয়েছে। আমি নীচে পাইথন স্ক্রিপ্ট পোস্ট করেছি যা ভিপিএন-এর মাধ্যমে বিভিন্ন পোর্টের বিস্তৃত ঠিকানাগুলিতে স্ক্যান করতে কাজ করবে।
brew install nmap
বা ম্যাকপোর্টের মাধ্যমে এনএম্যাপ ইনস্টল করতে পারেন ।
নির্দিষ্ট পোর্টে টেলনেট সেশনটি খুলুন, উদাহরণস্বরূপ:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
আপনার সেশনটি বন্ধ করতে, Ctrl+ চাপুন ]।
netcat
এছাড়াও দুর্দান্ত কাজ করে এবং কম ভার্বোস হয়।
netcat
এখন ম্যাকওএস হাইসিয়ারার অন্তর্নির্মিত, যেখানে হোমব্রু থেকে টেলনেট ইনস্টল করা যেতে পারেbrew install telnet
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
time
লাইক ইন ব্যবহার করুন time nc -vz www.example.com 80
এবং আপনার কাছেও একটি ধরণের আরটিটি হবে।
আপনি যদি পাওয়ার উইন্ডো ভি 4 বা আরও নতুন উইন্ডোজ ইন্সটলেশনে রয়েছেন, আপনি পরীক্ষা-নেট-সংযোগ পাওয়ারশেল মডিউলটি ব্যবহার করতে পারেন:
Test-NetConnection <host> -port <port>
উদাহরণ: টেস্ট-নেট সংযোগ উদাহরণ.কম -পোর্ট 80
এই সেমিডলেটেরও উপনাম রয়েছে tnc
। যেমনtnc example.com -port 80
আপনি পেপিং ব্যবহার করতে পারেন:
http://code.google.com/p/paping
C:\>paping.exe www.google.com -p 80 -c 4
paping v1.5.1 - Copyright (c) 2010 Mike Lovell
Connecting to www.l.google.com [209.85.225.147] on TCP 80:
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=25.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connection statistics:
Attempted = 4, Connected = 4, Failed = 0 (0.00%)
Approximate connection times:
Minimum = 24.00ms, Maximum = 25.00ms, Average = 24.25ms
-c *
ধ্রুব papinging (?) জন্য ব্যবহার করুন ।
না, আপনি পারবেন না, কারণ আইসিএমপি প্রোটোকলping
ব্যবহার করে , এতে পোর্টের ধারণাও নেই।
curl
কমান্ড চেষ্টা করুন , যেমন:
$ curl host:port
উদাহরণ স্বরূপ:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
উপরের কমান্ডটি একটি শূন্য-বহির্গমন স্থিতি কোডগুলিতে ব্যর্থ হবে । কিছু নির্দিষ্ট ক্ষেত্রে যেমন খালি বা ত্রুটিযুক্ত প্রতিক্রিয়া (দেখুন man curl
), আপনি নির্দিষ্ট প্রস্থান কোডগুলি সফল হিসাবে পরিচালনা করতে চাইতে পারেন, সুতরাং আরও বিশদ ব্যাখ্যার জন্য দয়া করে এই পোস্টটি দেখুন।
curl
সেন্টস-এ ডিফল্টরূপে উপস্থিত, সুতরাং আমাকে কিছু ইনস্টল করতে হবে না।
IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
আমি পিএসপিং ব্যবহার করে একটি সহজ সমাধান পেয়েছি:
psping 192.168.2.2:5000
এটি উইন্ডোজ সিসিনটার্নালসের অংশ ।
পিএসপিং পিং কার্যকারিতা, টিসিপি পিং, বিলম্ব এবং ব্যান্ডউইথ পরিমাপ প্রয়োগ করে।
লিনাক্সে আপনি হপিং ব্যবহার করতে পারেন তবে এটি আইসিএমপি নয়, টিসিপি ব্যবহার করে।
hping example.com -S -V -p 80
flags=SA
(অর্থাত্ এসওয়াইএন এসকে) পাবেন, এবং এটি বন্ধ থাকলে আপনি flags=SR
(অর্থাত্ এসওয়াইএন আরএসটি) পাবেন। নোট করুন যে সম্ভবত আপনার -V
এখানে পতাকা লাগবে না , তবে হিপিং চালানোর জন্য আপনার সূডো / রুট দরকার।
ping
এবং থেমে যাওয়া পর্যন্ত পিংস করে।
পিং খুব সুনির্দিষ্ট তবে আপনি যদি কোনও পোর্ট খোলা আছে কি না এবং উইন্ডোজ বাক্সটি চালাচ্ছেন তা যদি পরীক্ষা করতে চান তবে পোর্টকিউই আপনার বন্ধু।
আমি এটি কেবল সংযোগ সমস্যাগুলির জন্য ডোমেন কন্ট্রোলারদের পরীক্ষার জন্য ব্যবহার করেছি, তবে এটি তার জন্য একটি ট্রিট কাজ করেছে, সুতরাং আপনার পক্ষে কাজ করা উচিত।
এখানে একটি দ্রুত এবং নোংরা। নেট কনসোল অ্যাপ্লিকেশন:
static void Main(string[] args)
{
string addressArgument = null, portArgument = null;
System.Net.Sockets.TcpClient tcpClient = null;
try
{
addressArgument = args[0];
portArgument = args[1];
int portNumber;
portNumber = Int32.Parse(portArgument);
tcpClient = new System.Net.Sockets.TcpClient();
tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;
IPAddress address;
if (IPAddress.TryParse(args[0], out address))
{
var endPoint = new System.Net.IPEndPoint(address, portNumber);
tcpClient.Connect(endPoint);
}
else
{
tcpClient.Connect(addressArgument, portNumber);
}
Console.WriteLine("Port {0} is listening.", portArgument);
}
catch (Exception e)
{
if (e is SocketException || e is TimeoutException)
{
Console.WriteLine("Not listening on port {0}.", portArgument);
}
else
{
Console.WriteLine("Usage:");
Console.WriteLine(" portquery [host|ip] [port]");
}
}
finally
{
if (tcpClient != null)
tcpClient.Close();
}
}
আমি নিশ্চিত যে নাগিওস চেক_টিসিপি অনুসন্ধান আপনি যা চান তা করে। এগুলি এখানে পাওয়া যাবে এবং নাগিওস প্রসঙ্গে ব্যবহার করার জন্য নকশাকৃত হলেও এগুলি সমস্ত স্ট্যান্ডএলোন প্রোগ্রাম।
$ ./check_tcp -H host -p 22
TCP OK - 0.010 second response time on port 22|time=0.009946s;0.000000;0.000000;0.000000;10.000000
এটিই একমাত্র সমাধান যা ক্লায়েন্ট মেশিনের সাথে উইন্ডোজ ভিস্তা বা উইন্ডোজ 7 হিসাবে ভিপিএনগুলির জন্য কাজ করে , অন্য তালিকাভুক্ত উত্তরগুলি কেবল কার্যকরভাবে কাজ করে না। এই উত্তরটি আগে মুছে ফেলা হয়েছিল এবং হওয়া উচিত ছিল না, কারণ এটি বাস্তব-জগতের সাধারণ মামলার একমাত্র সমাধান। মুছে ফেলার জন্য কোনও আপিল উপলব্ধ নেই বলে আমি অন্য উত্তরগুলি ব্যবহার করার চেষ্টা করে যা হতাশ করেছি তা অন্যকে বাঁচাতে এটি পুনরায় পোস্ট করছি।
নীচের উদাহরণটি সনাক্ত করে যে ভিপিএন-তে কোন আইপি রয়েছে যা উইন্ডোজ 7 এ চলছে ক্লায়েন্টের সাথে ভিএনসি / পোর্ট 5900 খোলা আছে।
আইপি এবং পোর্টগুলির প্রদত্ত তালিকাটি স্ক্যান করতে একটি সংক্ষিপ্ত পাইথন (v2.6.6) স্ক্রিপ্ট:
from socket import *
fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]
setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
for p in aiPorts:
s = socket(AF_INET, SOCK_STREAM)
address = ('%s.%d' % (sNetworkAddress, h))
result = s.connect_ex((address,p))
if ( 0 == result ):
print "%s:%d - OPEN" % (address,p)
elif ( 10035 == result ):
#do nothing, was a timeout, probably host doesn't exist
pass
else:
print "%s:%d - closed (%d)" % (address,p,result)
s.close()
print "Scan Completed."
ফলাফলগুলি দেখে মনে হয়েছিল:
Starting Scan...
192.168.1.1:5900 - closed (10061)
192.168.1.7:5900 - closed (10061)
192.168.1.170:5900 - OPEN
192.168.1.170:5900 - closed (10061)
Scan Completed.
টাইমআউট, নেটওয়ার্ক, হোস্ট এবং পোর্ট যেগুলি প্রয়োজন তার উপযুক্ত হওয়ার জন্য শীর্ষে চারটি ভেরিয়েবল পরিবর্তন করা দরকার। আমার ভিপিএন-তে 5.0 সেকেন্ডের মনে হয়েছে যে ধারাবাহিকভাবে সঠিকভাবে কাজ করার জন্য যথেষ্ট, কম (সর্বদা) সঠিক ফলাফল দেয়নি। আমার স্থানীয় নেটওয়ার্কে, 0.5 যথেষ্ট পরিমাণের চেয়ে বেশি ছিল।
এটির জন্য একটি লাইটওয়েথ সরঞ্জাম রয়েছে, এটি টিসিপিং বলে: http://www.linuxco.de/tcping/tcping.html
বাশ শেল-এ, আপনি টিসিপি সিউডো-ডিভাইস ফাইলটি ব্যবহার করতে পারেন , উদাহরণস্বরূপ:
</dev/tcp/serverfault.com/80 && echo Port open || echo Port closed
এখানে 1 সেকেন্ডের টাইমআউট বাস্তবায়নকারী সংস্করণটি দেওয়া হচ্ছে:
timeout 1 bash -c "</dev/tcp/serverfault.com/81" && echo Port open || echo Port closed
যদি আপনি একটি * নিক্স অপারেটিং সিস্টেম চালাচ্ছেন তবে "জেনম্যাপ" ইনস্টল ও ব্যবহার করে দেখতে চেষ্টা করুন এটি এনএম্যাপের জন্য একটি জিইউআই এবং এটিতে বেশ কয়েকটি দরকারী স্ক্যান প্রোফাইল রয়েছে যা নতুন ব্যবহারকারীর জন্য দুর্দান্ত সহায়তা।