ping چيست ؟

نويسنده: علي نجف زاده
ping دستوری است که مشخص می‌کند که آيا يک کامپيوتر خاص که ما ip يا domain آن را می‌دانيم، روشن و فعال (Active) هست يا نه. و اينکه اگر فعال باشد مدت زمان رسيدن بسته‌های tcp/ip از آن کامپيوتر به کامپيوتر ما چقدر است. کاربرد اين دستور به صورت زير است:
ping ip-or-domain که به جای ip-or-domain بايد شماره ip و يا domain آن(اگر داشته باشد) را می‌گذاريم.
مثلا ping sazin.com را در command prompt تايپ کردم و به نتايج زير رسيدم :
Pinging sazin.com [63.148.227.65] with 32 bytes of data: Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105Reply from 63.148.227.65: bytes=32 time=941ms TTL=105Reply from 63.148.227.65: bytes=32 time=981ms TTL=105Reply from 63.148.227.65: bytes=32 time=851ms TTL=105 Ping statistics for 63.148.227.65: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 851ms, Maximum = 1402ms, Average = 1043ms اين نتايج نشان می‌دهد که sazin.com فعال است.
حالا به کامپيوتری با ip شماره 63.148.227.65 (که همان sazin.com است)، ping می‌کنم. نتايج همان است فقط با تغييراتی در سطر اول. (البته time که معنای مدت زمان رسيدن پکت را می‌دهد، با توجه به ترافيک شبکه، کم و زياد خواهد شد). برای ping کردن به اين ip ، دستور 63.148.227.65 ping را صادر می‌کنم :
Pinging 63.148.227.65 with 32 bytes of data: Reply from 63.148.227.65: bytes=32 time=861ms TTL=105Reply from 63.148.227.65: bytes=32 time=852ms TTL=105Reply from 63.148.227.65: bytes=32 time=851ms TTL=105Reply from 63.148.227.65: bytes=32 time=881ms TTL=105 Ping statistics for 63.148.227.65: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 851ms, Maximum = 881ms, Average = 861ms فرض کنيد که به يک ip که فعال نيست، ping کنيم:
Pinging 217.66.196.1 with 32 bytes of data: Request timed out.Request timed out.Request timed out.Request timed out. Ping statistics for 217.66.196.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms که نشان می‌دهد که آن ip در آن لحظه فعال نيست.
البته تمام مطالبی که در بالا ذکر شد، در حالتی است که مستقيما به اينترنت وصل شده‌ايد و يا اگر از طريق شبکه محلی به اينترنت وصل هستيد، شبکه شما به درستی پيکربندی شده باشد. اصولا ping يکی از بهترين دستورات برای پيدا کردن ايراد در شبکه است.

برای اينکه عملکرد يک پورت برای شما روشن شود، بايد به آن پورت Telnet کنيد. (البته معمولا تعدادی از پورت‌هايی را که ممکن است اطلاعاتی مهم را در اختيار هکر‌ها قرار دهند مثل پورت ۷۹ معمولا بسته است و ارتباط با آنها شايد برقرار نشود.) برای telnet کردن در command prompt دستور زير را تايپ کنيد:
telnet hostname portnum
در اين دستور به‌جای hostname شماره ip و يا نام سايت را وارد می‌کنيد و به‌جای portnum شماره پورت و يا معادل آن از جدول. مثلا برای تلنت کردن به پورت ۱۳ که ساعت و تاريخ را به‌دست می‌دهد در کامپيوتری به‌ اسم www.iums.ac.ir مي‌نويسيد:
telnet iums.ac.ir 13 telnet iums.ac.ir daytime
هر دو اين دستورات معادل هم هستند.
تلنت کردن معمولا اولين کاری است که يک هکر برای هک کردن يک سايت انجام می‌دهد، زيرا بعضی از پورت‌ها در صورت بسته نبودن روی آن سرور، معمولا حاوی اطلاعات بسيار مهمی هستند.
همين الان شروع کنيد و مثل يک هکر واقعی به کامپبوتر‌های مختلف و پورت‌های گوناگون تلنت کنيد.

telnet هم جزو مواردی است که در footprinting مورد استفاده قرار می‌گيرد. کاربرد آن در حالتيست که بخواهيم بدانيم که روی فلان پورت چه برنامه‌ای فال‌گوش‌ه و version آن چنده. به اين صورت که به يک پورت خاص (که مي‌دانيم روی آن سرور باز است) تلنت می‌کنيم و بعد می‌بينيم که نتايجی ظاهر می‌شود که نشان‌دهنده اطلاعاتی‌ است که به‌کار می‌رود. گاهی با مکثی طولانی مواجه می‌شويم و هيچ چيزی نمايش داده نمی‌شود، در اين حالت يکی دوبار , Ctrl+Z , Ctrl+D , Ctrl+C , Ctrl+break را می‌زنيم و خارج می‌شويم. در مثال پايين جمع‌بندی مواردی که تا حالا از footprinting گفته‌ام را می‌آورم.

فرض کنيد می‌خواهيم در مورد www.iums.ac.ir اطلاعاتی کسب کنيم :
◊ اول به سايت پينگ می‌کنم و ip آن را به‌دست می‌آورم: 194.225.184.15
◊ به کمک ip که به‌دست آورديم، به کمک يک پورت اسکنر پورت‌ها را بررسی می‌کنيم و می‌بينيم که پورت‌هايی مثل ۲۱، ۲۵، ۴۲، ۵۳، ۸۰، ۱۱۰، ۱۱۹، ۱۳۹، ۱۴۳ و ... باز است.
◊ چون domain به ir ختم می‌شود، برای whois کردن از whois.nic.ir استفاده می‌کنم و Name Server آن را به دست می‌آورم که 194.225.184.20 است.
◊ به کمک اين Name Server ، يک nslookup می‌کنم و به نتايج زير می‌رسم:
iums.ac.ir. SOA sina.i........0 345600) iums.ac.ir. NS sina.iums.ac.ir iums.ac.ir. NS ns1.nic.ir iums.ac.ir. MX 10 sina.iums.ac.ir smtp.iums.ac.ir. A 195.146.34.181 sina.iums.ac.ir. HINFO Sun-SuperSPARC5/75 UNIX-Solaris-2.6 sina.iums.ac.ir. MX 10 sina.iums.ac.ir sina.iums.ac.ir. A 194.225.184.20 sina.iums.ac.ir. A 195.146.34.181 sun.iums.ac.ir. CNAME sina.iums.ac.ir cisco.iums.ac.ir. CNAME router.iums.ac.ir webmail.iums.ac.ir. A 195.146.34.181 linux.iums.ac.ir. A 194.225.184.19 linux.iums.ac.ir. HINFO Intel-Xeon/800 RedHat-Linux-7.2 mta.iums.ac.ir. A 195.146.34.181 pop3.iums.ac.ir. CNAME sina.iums.ac.ir localhost.iums.ac.ir. A 127.0.0.1 proxy.iums.ac.ir. CNAME arvand.iums.ac.ir www.iums.ac.ir. A 195.146.34.180 atrak.iums.ac.ir. A 194.225.184.14 ns1.iums.ac.ir. CNAME sina.iums.ac.ir arvand.iums.ac.ir. A 194.225.184.13 router.iums.ac.ir. A 194.225.184.1 router.iums.ac.ir. HINFO Cisco3640/Access-Server IOS-IP-12.0 iums.ac.ir. SOA sina.iu.......3456000 345600)
تک تک سطرهای اين نتايج کاربرد دارد که خواهيم رسيد. الان فقط در مورد HIFNO صحبت می‌کنم که برای مشخص تر بودن در بالا به صورت کمی فرورفته‌تر نوشتم. مثلا:
sina.iums.ac.ir. HINFO Sun-SuperSPARC5/75 UNIX-Solaris-2.6
HIFNO برای تعيين نوع کامپيوتر و سيستم‌عامل سرور اهميت دارد. در اين سطر مشخص است که sina.iums.ac.ir از Sun-SuperSPARC5/75 UNIX-Solaris-2.6 استفاده می‌کند.
◊ چون پورت‌های باز را هم توسط پورت اسکنر به دست آورده‌ام به آنها تلنت می‌کنم با دستور:
telnet www.iums.ac.ir portnum
نتايج حاصل از بعضی را می‌بينيد:
25 :
... master.iums.ac.ir Microsoft ESMTP MAIL Service, Version: 5.0.2195.4905 ready at 220
پس پورت ۲۵ (smtp) در آن کامپيوتر از Microsoft ESMTP MAIL Service, Version: 5.0.2195.4905 استفاده می‌کند.
110 :
.OK Microsoft Exchange 2000 POP3 server version 6.0.5762.3 (master.iums.ac.ir) ready+
پس پورت ۱۱۰ (pop3) در آن کامپيوتر از Microsoft Exchange 2000 POP3 server version 6.0.5762.3 استفاده می‌کند.
119 :NNTP Service 5.00.0984 Version: 5.0.2195.2966 Posting Allowed

پورت ۸۰ يکی از مهم‌ترين پورت‌هاست. دنيای وب (صفحات اينترنتی) بر اساس همين پورت کار می‌کنه. توضيح اينکه وقتی به يه سايت وصل می‌شيم و صفحه وب را درخواست می‌کنيم، در واقع مرورگر اينترنتی به پورت ۸۰ اون کامپيوتر وصل می‌شه و اطلاعات رو می‌گيره (البته بعد از گرفتن اطلاعات اون رو تفسير می‌کنه و به صورت يه صفحه نشون می‌ده - دقت کنيد که اطلاعات در واقع به صورت يک سری تگ HTML است ).
- با پورت ۸۰ صحبت کنيم
حالا ما می‌خواهيم با پورت ۸۰ يک کامپيوتر صحبت کنيم ولی به کمک telnet و nc.
اول بايد يه connection (اتصال) با پورت ۸۰ برقرار کنيم (مثلا برای سايت hotmail.com بايد بنويسم):
telnet www.hotmail.com 80nc -v www.hotmail.com 80
پس اول بايد يکی از دستورات بالا را استفاده کنيم. من هميشه توصيه‌ام استفاده از nc بوده و خواهد بود.
حالا بايد شروع به صحبت با پورت ۸۰ کنيم. من فعلا دو تا جمله براتون می‌گم و بقيه‌اش بمونه واسه بعد. دقت کنيد که موقع کار با پورت ۸۰ با تلنت (نه nc) دستوراتی که ما می‌نويسيم، نمايش داده نمی‌شود ولی کار می‌کنه.

۱- اولين جمله اينه: GET / HTTP/1.0 و بعدش دوتا Enter

به فاصله‌ها دقت کنيد. دو طرف / ی که بعد از GET است، فاصله وجود دارد. اين جمله به پورت ۸۰ می‌گه که هرچی در header داره، نشون بده. و جواب می‌شنوم:
HTTP/1.0 302 Moved TemporarilyServer: Microsoft-IIS/5.0Date: Thu, 05 Dec 2002 12:02:51 GMTLocation: http://lc2.law5.hotmail.passport.com/cgi-bin/loginX-Cache: MISS from cache5.neda.net.irConnection: close

۲- دومين جمله اينه: GET / what/ever و بعدش دوتا Enter

به فاصله‌ها دقت کنيد. اين دستور باعث ميشه که هر چی داره، رو کنه.
البته توجه کنيد که ما مسير را مشخص نکرديم. اين حالت که بدون مسير است خيلی وقت‌ها کار نمی‌کنه (مثل همين مثال !!)
گاهی پيش می‌آد که يک سری دستورات خاص را هميشه بايد پشت‌ سرهم به يه پورت خاص بفرستيم و بخواهيم در وقت صرفه‌جويی کنيم. مثلا همين جمله GET / HTTP/1.0 و دو Enter پشت سرهم که هميشه استفاده می‌کنيم. در اين موارد می‌توان اين دستورات را در يک فايل تايپ کرد (همراه با Enter ها که بايد موقع نوشتن حتما بزنيد) و بعد مثلا با نام ali.txt ذخيره کنيد و بعد يکی از دستورات زير را بنويسيم:
nc -v www.far30.com 80 < ali.txttype ali.txt | nc -v www.far30.com 80
که همان کارهای بالايی را انجام ميده.
- حالا مي‌خوام مسير رو مشخص کنم
مثلا فرض کنيد که مي‌خوام فايلي به اسم index.html را از مسير startup در سايتي به اسم www.site.com داون‌لود کنيم. اول يه nc مي‌کنيم به سايت. بعد مي‌نويسيم:
GET /startup/index.html HTTP/1.0
بعد دو تا Enter مي‌زنيم.
اين مثال نشون ميده که چطوري مسير رو ميشه مشخص کرد. همين کار رو مي‌تونيم براي فايل‌هايي مثل فايل‌هاي گرافيکي و ... انجام بديم و حتي مي‌تونيد اطلاعاتي که مي‌رسه رو در يک فايل ذخيره کنيد. براي اين‌کار مي‌نويسيد:
nc -v www.site.com 80 > index.html
(اين کاري که کرديم با موردي که در بالا نوشتيم فرق مي‌کنه! در بالا دستورات GET رو تو يه فايل مي‌نوشتيم و مي‌فرستاديم که اجرا بشه ولي الان داريم نتايجي که بر مي‌گرده رو در يک فايل ذخيره مي‌کنيم!) ميشه اين دوتا رو ترکيب کرد مثلا نوشت:
nc -v www.site.com 80 < dastoorat.txt > index.html
منبع:http://www.bitasoft.ir