วันอังคารที่ 8 มีนาคม พ.ศ. 2554

ตามรอย ด้วย tracert2

บางครั้งเมื่อเราเห็น***พีแอดเดรสแล้วทำให้เราสงสัยและอยากรู้ข้อมูลที่มากขึ้นของใครบางคนหรือโฮสต์บางโฮสต์
แต่เราจะใช้***พีแอดเดรสนั้นเพื่อหาข้อมูลที่มากกว่า เช่น หาที่ตั้งของคอมพิวเตอร์ของ***พีนั้นได้อย่างไร
บทความเรื่องนี้จะตอบคำถามเหล่านี้ ที่จริงแล้ว ***พีแอดเดรส (จริง ๆ แล้วทั้ง TCP/IP Protocol) ถูกกำหนดโครงสร้างหรือการออกแบบที่ไม่สามารถ บอกได้ว่าระบบที่มี***พีนั้นตั้งอยู่ที่ประเทศใหน ถ้าเราดูอย่างง่าย ๆ จะเห็นได้ว่า***พีแอดเดรสไม่มีส่วนที่บอกได้ว่า คอมพิวเตอร์ที่ใช้***พีนั้นมาจากประเทศใหน ดังนั้นการเข้าใจว่าส่วนที่สองหรือสามของ***พีจะหมายถึงประเทศที่ระบบนั้น ใช้ นั้นไม่ถูกต้อง อย่างไรก็ตาม บางครั้งก็สามารถเดาหรือหามาได้ว่าอยู่ที่ประเทศใหนหรือแม้แต่กระทั่งบอก เมืองที่ตั้งอยู่นั้น โดยการดูจากสามส่วนแรกของ***พี เรามาดูตัวอย่างเพื่อจะให้เข้าใจว่าที่ผมกล่าวไปนั้นหมายถึงอะไร ก่อนที่จะ ไปดูที่ตัวอย่างเรามาทำความเข้าใจกันก่อนว่าจริง ๆ แล้วมีการให้***พีแอดเดรสกับคุณได้อย่างไร


ขั้นแรก
ผู้ให้บริการอินเตอร์เน็ต(ISP)ของคุณจะต้องไปขอ***พีจากส่วนกลางที่รับผิดชอบและได้***พีแอดเดรสที่
อยู่ในช่วงหนึ่งซึ่งจะให้ไปแก่สมาชิก (ที่โทรศัพท์เข้ามายังเซิร์ฟเวอร์)ไปอีกต่อหนึ่ง ***เอสพีส่วนมากจะได้
network address เป็น Class C ซึ่งประกอบไปด้วย Network Prefix 24 บิต (สามส่วนแรกของ***พี) และ Host number 8 บิต (ส่วนสุดท้าย) ถูกเรียกเป็น "24's" และใช้โดยทั่วไปโดย***เอสพีส่วนใหญ่
ในโลกแห่งความเป็นจริง ทุก ๆ คนจะมีที่อยู่บ้านของตัวเองหรือหมายเลขโทรศัพท์ เพื่อให้เขาสามารถติดต่อ ได้โดยหมายเลขหรือที่อยู่นั้น เช่นเดียวกันกับคอมพิวเตอร์ที่ต่อเข้ากับอินเตอร์เน็ตจะมี Internet Protocol ที่เป็นของตัวเอง หรือ***พีแอดเดรสที่สามารถใช้เพื่อติดต่อกับคอมพิวเตอร์เครื่องนั้น ในภาษาของนักคอมพิวเตอร์ตัวยง ***พีแอดเดรสหนึ่ง ๆ จะเป็นสัญลักษณ์เลขฐานสิบที่แบ่งที่อยู่ทางอินเตอร์เน็ตขนาด 32 บิตเป็นสี่ส่วน ๆ ละ 8 บิต

***พีแอดเดรสให้ข้อมูลกับเราบ้างหรือไม่ รึว่าตัวเลขนั้นมันหมายถึงอะไร ?
มาดูตัวอย่างของ***พีแอดเดรสต่อไปนี้:
202.144.49.110

ในส่วนแรก ตัวเลขก่อนเลขฐานสิบตัวแรก เช่น 202 เป็น Network number หรือ Network Prefixหมายถึงมันจะระบุถึงหมายเลขของเน็ตเวิร์คที่เป็นโฮสต์นั้น
ส่วนที่สองเช่น 144 เป็น Host number
ที่บอกถึงหมายเลขของโฮสต์ที่อยู่ภายในเน็ตเวิร์ค ดังนั้น ถ้าคอมพิวเตอร์อยู่ในเน็ตเวิร์คเดียวกับก็จะมี Network number เหมือนกัน เพื่อให้เกิดความยืดหยุ่นกับขนาดของเน็ตเวิร์คดังนั้นจึงมี***พีแอดเดรสหลาย class ที่แตกต่างกัน:
Address Class Dotted Decimal Notation Ranges
Class A (/8 Prefixes) 1.xxx.xxx.xxx ถึง 126.xxx.xxx.xxxClass B ( /16 Prefixes) 128.0.xxx.xxx ถึง 191.255.xxx.xxxClass C ( /24 Prefixes) 192.0.0.xxx ถึง 223.255.255.xxx

class A Network Address จะประกอบด้วย Network Prefix 8 บิต ตามด้วย Host
number 24 บิต เรียกว่า "/8"s" หรือ "8's" เพราะว่ามันมี Network prefix ขนาด 8 บิต ส่วน class B Network Address มี Network Prefix ขนาด 16 บิตตามด้วย Host number 16 บิต เรียกว่า "16's" ใน class C Network Address มี Network Prefix ขนาด 24 บิต และ Host number 8 บิต เรียกว่า "24's" และมักจะใช้กันโดย***เอสพีต่าง ๆ เนื่องจากขนาดที่เติบโตขึ้นเรื่อย ๆ ของเครือข่ายอินเตอร์เน็ต ผู้บริหารเน็ตเวิร์คต่าง ๆ จึงเจอปัญหาหลายอย่าง ตารางเส้นทางการติดต่อบนอินเตอร์เน็ตเริ่มโตขึ้นและผู้บริหารระบบจำเป็นต้อง ร้องขอ Network number
จากอินเตอร์เน็ตอีกก่อนที่จะมีเน็ตเวิร์คใหม่ในไซต์ของพวกเขา จึงทำให้เกิด subnet ขึ้นมา ถ้า***เอสพีของคุณมีขนาดใหญ่และให้บริการ***พีแบบ dynamic IP address คุณจะสังเกตเห็นได้ว่าเมื่อใด ก็ตามที่คุณล๊อกออนเข้าอินเตอร์เน็ต ***พีแอดเดรสของคุณจะมี 24 บิตแรกที่เหมือนกันแต่มีเพียง 8 บิต สุดท้ายเท่านั้นที่เปลี่ยนไป เนื่องจากการนำ subnet มาใช้ ดังนั้น***พีแอดเดรสจึงมีลักษณะดังนี้:
xxx.xxx.zzz.yyy
สองส่วนแรกเป็น Network Prefix number, zzz เป็น Subnet number และ yyy คือ Host number ดังนั้นคุณจึงเชื่อมต่ออยู่กับ subnet เดิมทุกครั้งในเน็ตเวิร์คเดียวกัน ด้วยเหตุนี้สามส่วนแรกจึงยังเหมือนเดิม มีเพียงส่วนท้ายสุด เช่น yyy เท่านั้นที่ไม่แน่นอน เช่น ถ้า***เอสพี xyz ได้***พี 203.98.12.xx มา ดังนั้นคุณสามารถที่จะมี***พีใด ๆ ก็ตามที่สามส่วนแรกเป็น 203.98.12. แต่ละ***เอสพีมี***พีอยู่ในช่วงหนึ่งซึ่งจะจัดสรรให้กับสมาชิกทุกคน หรือ สมาชิกทุกคนที่เชื่อมต่อกับอินเตอร์เน็ต
โดยใช้***เอสพีเดียวกันก็จะมี***พีอยู่ในช่วงนี้ด้วย จึงมีผลทำให้ทุกคนที่ใช้***เอสพีเดียวกันมีแนวโน้มที่จะมี***พี แอดเดรสที่มีสามส่วนแรกเหมือนกัน ถ้าคุณค้นคว้าหาข้อมูลอย่างจริงจัง คุณสามารถบอกได้ว่า***เอสพีไหนที่คนนั้นกำลังใช้อยู่อย่างง่าย ๆ โดยดูจาก ***พีของเขาเอง แล้วชื่อของ***เอสพีนั้นสามารถใช้เพื่อบอกเมืองและประเทศของบุคคลนั้น
ลองมาดูที่ตัวอย่าง: ในประเทศของผม มี***เอสพีรายใหญ่สามราย:

ISP Name Network Address Allotted
ISP I 203.94.47.xxISP II 202.92.12.xxISP III 203.91.35.xx

ถึงตอนนี้ ถ้าผมรู้จักเพื่อนทางอินเตอร์เน็ตและรู้***พีว่า***พีของเขาคือ:
203.91.35.12 ผมสามารถค้นหาได้อย่างง่ายดายว่าเขาใช้ ***เอสพี III เพื่อเชื่อมต่อกับอินเตอร์เน็ต ถูกไหม ? คุณอาจพูดว่าใคร ๆ ก็ทำอย่างนี้ ได้ เอาละ คำตอบคือใช่และไม่ใช่ คุณจะเห็นได้ว่าวิธีการข้างต้นนี้หา***เอสพีได้สำเร็จเพราะว่าเรามีรายการ ของ ***เอสพีและ Network Address แล้วเท่านั้น
ดังนั้นตามความเห็นของผมวิธีการข้างต้นทำสำเร็จก็ต่อเมื่อได้ค้นคว้าและ ทดลองอย่างหนักแล้วเท่านั้น อย่างไรก็ตามการค้นคว้าอย่างนี้ก็มีประโยชน์ในบางครั้งเช่นกันคุณใช้วิธี ข้างต้นไม่ได้แน่นอนถ้ามี***พีแอดเดรสและรายการของ***เอสพีจำนวนมาก ถ้า***พีนั้นเป็นของใครบาง


คนที่อยู่ในกระท่อมของชาวเอสกิโมที่ขั้วโลกเหนือล่ะ ?
คงเป็นไปไม่ได้ที่คุณจะมีรายการของ Network Address ของ***เอสพีทุกรายทั่วโลกเป็นแน่ ใช่มั้ย ?
ข้อสังเกต: ในกรณีข้างต้น
คุณสามารถรู้เมืองที่ระบบคอมพิวเตอร์นั้นตั้งอยู่ได้ด้วยโดยใช้***พี
เพราะว่า***เอสพี ส่วนใหญ่จะใช้ Network Address ที่แตกต่างกันในเมืองต่าง ๆ ด้วย นอกจากนี้***เอสพีบางรายก็ดำเนินงาน อยู่ในเพียงเมือง ๆ เดียว ดังนั้น


มีวิธีที่ดีกว่าในการหาสถานที่ตั้งของ***พีนั้นมั้ย ?
แน่นอน โดยการใช้วิธี DNS lookup
DNS lookup เปลี่ยนจาก hostname เป็น***พีแอดเดรส ส่วน Reverse DNS Lookup
ก็เปลี่ยนจาก ***พีแอดเดรสมาเป็น hostname ซึ่งจะบอกชื่อของระบบที่อยู่***งไกลเป็นตัวอักษรและตัวเลขและจุด เช่น
mail2.nol.net.in เป็นชื่อ hostname โดย 203.45.67.98 ไม่ใช่ hostname
โปรแกรมยูทิลิตี้สำหรับยูนิกซ์ซึ่งทำงานได้ดีมากและนิยมใช้กันคือ
'nslookup' สามารถใช้เพื่อ Reverse DNS lookup
ดังนั้นถ้าคุณมีเครื่องคอมพิวเตอร์ที่ใช้ระบบปฏิบัติการยูนิกซ์หรือคุณสามารถใช้งานมันได้
ขั้นแรกคุณต้องหาว่าคำสั่ง nslookup อยู่ตรงไหนโดยการใช้คำสั่งต่อไปนี้:
' whereis nslookup '
เมื่อคุณรู้ว่ายูทิลิตี้นี้อยู่ที่ไหนในระบบแล้วคุณก็สามารถใช้เพื่อ แปลง***พีให้เป็นhostnameและในทางกลับกันได้แล้ว ดังตัวอย่างต่อไปนี้
$>nslookup IP Address
เราพิมพ์***พีแอดเดรสลงไป ในที่นี้เราพิมพ์ 203.94.12.01
(ซึ่งเป็น***พีที่ผมต้องการหา)
$>nslookup 203.94.12.01
คุณจะเห็นผลลัพธ์ออกมาเป็น: mail2.nol.net.in ในตอนนี้ถ้าคุณดูที่ชื่อ hostname ที่เปลี่ยนมาจาก***พีแอดเดรสอย่างตั้งใจ จะเห็นได้ว่าส่วนหลังสุดจะบอกถึง ประเทศที่ระบบนั้นตั้งอยู่ จากตัวอย่างคุณเห็น '.in' ซึ่งบอกว่าระบบนี้อยู่ในประเทศอินเดีย ทุกประเทศมีรหัสประเทศของตัวเองซึ่งจะเห็นได้บ่อยมากกว่าชื่อท้ายสุดที่ไม่ ใช่รหัสประเทศ วิธีนี้สามารถใช้เพื่อค้นหาว่าคน ๆ นั้น
อยู่ในประเทศใหนถ้าคุณรู้อีเมลของเขา เช่น ถ้าคนนั้นมีที่อยู่อีเมลลงท้ายด้วย .ph แสดงว่าเขาอาจจะอาศัยอยู่ใน ประเทศฟิลิปปินส์และถ้าลงท้ายด้วย .il เขาอยู่ในประเทศอิสราเอล ประเทศอื่น ๆ ก็ทำนองเดียวกันนี้ รหัสประเทศ โดยทั่ว ๆ ไปเช่น:
ประเทศ รหัสประเทศ

ออสเตรเลีย .au
อินโดนีเซีย .id
อินเดีย .in
ญี่ปุ่น .jp
อิสราเอล .il
สหราชอาณาจักร .uk

รายการรหัสประเทศที่ครบสมบูรณ์ดูได้ที่:
http://www.alldomains.com/
http://www.iana.org/domain-names.html
รายการรหัสรัฐต่าง ๆ ของสหรัฐ ฯ ดูที่: http://www.usps.gov/ncsc/lookups/abbr_state.txt
ผู้ที่ใช้วินโดวส์สามารถแปลง***พีให้เป็น hostname ได้โดยการดาวน์โหลดยูทิลิตี้ที่ชื่อ Samspade จาก http://www.samspade.com/

อีกวิธีการหนึ่งที่ใช้หาที่อยู่ทางภูมิศาสตร์ของระบบคอมพิวเตอร์ที่ตรงจุดจริง ๆ คือการใช้ ฐานข้อมูล WHOIS
เป็นฐานข้อมูลหลักที่ประกอบด้วยข้อมูลหลากหลายเช่นข้อมูลสำหรับการ ติดต่อ ชื่อ ผู้ที่เป็นเจ้าของโดเมนนั้น หาข้อมูลโดยการใส่ hostname ลงไป แล้วบริการนี้จะบอกข้อมูลที่อยู่ในฐานข้อมูลออกมา
วิธีนี้สามารถใช้เพื่อหาข้อมูลที่ถูกต้องเกี่ยวกับ***พีหรือ hostname
ที่ต้องการ อย่างไรก็ตามมันอาจจะไม่มี ประโยชน์ถ้าคุณพยายามหาสถานที่ตั้งที่แท้จริงของผู้ใช้***พีแบบ dynamic IP
แต่อย่างน้อยวิธีนี้สามารถใช้ เพื่อหาเมืองที่***เอสพีนั้นอยู่ได้ คุณสามารถใช้บริการ WHOIS ที่ http://www.alldomains.com/
นอกจากนี้คุณสามารถป้อนชื่อ hostname เข้าไปในบราวเซอร์ของคุณเพื่อใช้บริการ WHOIS โดยใช้ URL นี้:
http://205.177.25.9/cgi-bin/whois?abc.com โดยเปลี่ยนชื่อ abc.com
เป็นชื่อโดเมนที่คุณต้องการถามข้อมูลโดยใช้ WHOIS วิธีนี้ไม่สามารถใช้เพื่อหาที่อยู่ที่สามารถติดต่อได้ของบุคคลที่ต้องการค้น หาถ้า***พีที่คุณใช้เพื่อหาเขาเป็นของ***เอสพีของเขา ดังนั้นคุณจำเป็นต้องรู้ชื่อโดเมน(ซึ่งลงทะเบียนโดยใช้ชื่อของเขา)
หรือไม่ก็รู้ได้เพียงแต่เมือง (และ***เอสพี) ที่ใช้โดยบุคคลนั้น ถ้าบุคคลนั้นลงทะเบียนชื่อโดเมนและคุณต้องการใช้มันเพื่อค้นหาว่าเขาอยู่ใน เมืองไหน
สิ่งที่ควรสังเกตในกรณีนี้ คือถ้าบุคคลนั้นลงทะเบียนชื่อโดเมนที่ใช้บริการฟรี เช่น Namezero.com
ดังนั้นชื่อโดเมนอาจจะลงทะเบียน โดยใช้ชื่อของบริษัทนั้นและไม่ใช่ชื่อของบุคคลที่เราต้องการค้นหา ฉะนั้นการใช้บริการ WHOIS จะให้ข้อมูล เกี่ยวกับ***เอสพีไม่ใช่บุคคลที่เราต้องการค้นหา
ข้อสังเกต: บริการ WHOIS โดยค่าเริ่มต้นจะรันอยู่ที่พอร์ต 43 ของระบบนั้น
ลองใช้บริการโดยการ telnet ไปที่พอร์ต 43 และลองพิมพ์ค้นหา ผมไม่เคยลอง แต่มันต้องสนุกแน่ ๆ
วิธีที่สองที่เป็นวิธีทีมีประสิทธิภาพมาก (หลังจากการถาม Reverse DNS แล้ว)ของการย้อนรอย***พีไปสู่ สถานที่ทางภูมิศาสตร์จริง ๆ ด้วยการใช้ 'traceroute' คำสั่ง 'tracert' หรือ 'traceroute' จะให้ชื่อหรือ***พี ของเส้นทางที่ผ่านก่อนถึงเป้าหมาย ผู้ใช้วินโดวส์สามารถตามรอยของ***พีโดยการพิมพ์คำสั่งต่อไปนี้ที่ดอสพรอมพ์:

C:\windows>tracert IP หรือ Hostname

สำหรับวิธีใช้คำสั่งนี้ พิมพ์ว่า: 'tracert' ที่ดอสพรอมพ์
ต่อมาเรามาดูที่ผลที่ได้เมื่อผมตามรอย***พีของผมเอง โปรดสังเกตว่าผมอยู่ที่เมืองนิวเดลลีในอินเดีย ให้ดูชื่อของ hostname
อย่างละเอียด แล้วคุณจะพบว่ามันได้ เปิดเผยถึงเมืองต่าง ๆ ที่แพ็คเกตผ่าน

C:\windows>tracert 203.94.12.54

Tracing route to 203.94.12.54 over a maximum of 30 hops

1 abc.netzero.com (232.61.41.251) 2 ms 1 ms 1 ms
2 xyz.Netzero.com (232.61.41.0) 5 ms 5 ms 5 ms
3 232.61.41.10 (232.61.41.251) 9 ms 11 ms 13 ms
4 we21.spectranet.com (196.01.83.12) 535 ms 549 ms 513 ms
5 isp.net.ny (196.23.0.0) 562 ms 596 ms 600 ms
6 196.23.0.25 (196.23.0.25) 1195 ms1204 ms
7 backbone.isp.ny (198.87.12.11) 1208 ms1216 ms1233 ms
8 asianet.com (202.12.32.10) 1210 ms1239 ms1211 ms
9 south.asinet.com (202.10.10.10) 1069 ms1087 ms1122 ms
10 backbone.vsnl.net.in (203.98.46.01) 1064 ms1109 ms1061 ms
11 newdelhi-01.backbone.vsnl.net.in (203.102.46.01) 1185 ms1146 ms1203 ms
12 newdelhi-00.backbone.vsnl.net.in (203.102.46.02) ms1159 ms1073 ms
13 mtnl.net.in (203.194.56.00) 1052 ms 642 ms 658 ms

ผลลัพธ์ข้างบนแสดงให้เราเห็นถึงเส้นทางที่ข้อมูลได้เดินทางผ่านไปดังนี้:
Netzero (***เอสพีที่ส่งข้อมูลออกไป) ---> Spectranet (A Backbone Provider) ----->New York ISP --->New York Backbone -> Asia --> South Asia -> India Backbone --> New Delhi Backbone--> Another router in New Delhi Backbone ---> New Delhi ISP

แสดงให้เห็นถึงสถานที่อยู่ของผมจริง ๆ ที่เป็น: นิวเดลลี, อินเดีย, เอเชียใต้
บางครั้งการใช้คำสั่ง 'tracert' โดยใช้***พี ไม่ได้ให้ข้อมูลที่เป็นประโยชน์เลย คุณเห็นจากตัวอย่างข้างบนว่า hostname
ได้บอกถึงชื่อเมืองหรือประเทศที่ระบบนั้นตั้งอยู่ อย่างไรก็ตาม ในบางครั้งชื่อ hostname แทบจะไม่ได้บอกอะไรที่เป็นประโยชน์เลย สมมติว่าการตามรอยจบลงที่ hostname abc.com จะทำให้ไม่ชัดเจนและไม่ให้ร่องรอยที่ให้ค้นหาได้เลยว่า ระบบนั้นอยู่ที่ไหน อย่างไรก็ตามคุณสามารถเปิดบราวเซอร์ของคุณขึ้นมาและเปิดไปที่
http://www.abc.com บางที abc.com
อาจจะเป็น***เอสพีและอาจให้ข้อมูลเกี่ยวกับสถานที่ตั้งและเมืองที่*** เอสพีนั้นให้บริการอยู่ คุณก็ยังมีโอกาสที่ดีในการค้นหาเมืองของบุคคลที่เราต้องการ มียูทิลิตี้ที่น่าสนใจมากอยู่โปรแกรมหนึ่งคือ VisualRoute (http://www.visualroute.com/) ที่สามารถ ตามรอย hostname หรือ***พีและแสดงเส้นทางที่แพ็กเกตนั้นเดินทางไปยังเป้าหมายในรูปแผนที่โลก มันมี ประโยชน์มากและบอกถึงข้อมูลบางอย่างที่ดีเยี่ยม แต่บางครั้งมันก็ดูเหมือนไม่ค่อยจะแม่นยำ เว็ปไซต์ของผู้เขียนเรื่องนี้ http://hackingtruths.box.sk/ ถ้าคุณอยากได้คู่มือที่คุณไฝ่ฝันที่เขียนโดย Ankit Fadia ในเมลบอกซ์ของคุณ ก็เพียงแต่สมัคร mailing list ของเขาโดยส่งอีเมลเปล่าไปที่ programmingforhackers-subscribe@egroups.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น