Tôi phải thừa nhận rằng tôi muốn xem liệu có ai đó đã thực hiện việc này hay không.
Bạn có thể sử dụng .Net Framework để thực hiện một không-để-nghèo-mans-traceroute như một Powershell Script
Dưới đây là một mồi, làm việc nhanh chóng, nhưng nguy hiểm. Ngoài ra, không có thống kê.
#
# Mid-Waged-Mans-Tracert
#
$ping = new-object System.Net.NetworkInformation.Ping
$timeout = 5000
$maxttl = 64
$address = [string]$args
$message = [System.Text.Encoding]::Default.GetBytes("MESSAGE")
$dontfragment = false
$success = [System.Net.NetworkInformation.IPStatus]::Success
echo "Tracing $address"
for ($ttl=1;$i -le $maxttl; $ttl++) {
$popt = new-object System.Net.NetworkInformation.PingOptions($ttl, $dontfragment)
$reply = $ping.Send($address, $timeout, $message, $popt)
$addr = $reply.Address
$rtt = $reply.RoundtripTime
try {
$dns = [System.Net.Dns]::GetHostByAddress($addr)
} catch {
$dns = "-"
}
$name = $dns.HostName
echo "Hop: $ttl`t= $addr`t($name)"
if($reply.Status -eq $success) {break}
}
Edit:
Removed một số nguy bằng cách thêm một lệnh catch. Chỉ nguy hiểm vẫn còn hiện diện là chúng tôi chỉ gửi một yêu cầu duy nhất cho mỗi hop, điều này có nghĩa là chúng tôi không đạt được một bước nhảy do một gói giảm giá vô tội. Giải quyết vấn đề đó vẫn là một bài tập đọc. Gợi ý: (Hãy suy nghĩ về các vòng trong vòng lặp)
Tiền thưởng: Bây giờ chúng tôi cố gắng để có được mục nhập dns của mỗi hop!
Bạn có thể sử dụng 'tracert.exe' gốc từ PowerShell, bạn chỉ cần phân tích đầu ra của mình –
Cảm ơn người đàn ông, bạn đã giúp tôi rất nhiều !!! – Sylca