TCP traceroute (2)
Scapy cũng có một chức năng TCP traceroute mạnh mẽ. Không giống như các chương trình traceroute khác mà chờ đợi cho mỗi nút để trả lời trước khi đi tiếp theo, scapy gửi tất cả các gói dữ liệu cùng một lúc. Điều này có bất lợi là nó không thể biết khi nào dừng (do đó các tham số maxttl) nhưng lợi thế tuyệt vời mà nó mất ít hơn 3 giây để có được kết quả traceroute đa mục tiêu này:
Dòng cuối cùng là trong thực tế, một kết quả của hàm: một đối tượng kết quả traceroute và một danh sách gói của gói tin trả lời. Kết quả traceroute là một phiên bản chuyên biệt hơn (một lớp con, trên thực tế) của một đối tượng kết quả cổ điển. Chúng tôi có thể lưu nó để tham khảo ý kiến các kết quả traceroute lại một chút sau, hoặc để kiểm tra sâu sắc một trong những câu trả lời, ví dụ để kiểm tra padding.
Giống như bất kỳ đối tượng kết quả, các đối tượng traceroute có thể được thêm vào:
đối tượng kết quả Traceroute cũng có một tính năng rất gọn gàng: họ có thể làm cho một đồ thị có hướng từ tất cả các tuyến đường mà họ có, và cụm chúng bằng AS. Bạn sẽ cần graphviz. Theo mặc định, ImageMagick được sử dụng để hiển thị các đồ thị.
Nếu bạn có VPython cài đặt, bạn cũng có thể có một đại diện 3D của traceroute. Với các nút bên phải, bạn có thể xoay cảnh, với các nút ở giữa, bạn có thể phóng to, với các nút trái, bạn có thể di chuyển cảnh. Nếu bạn bấm vào một quả bóng, đó là IP sẽ xuất hiện / biến mất. Nếu bạn Ctrl-click vào một quả bóng, cổng 21, 22, 23, 25, 80 và 443 sẽ được quét và kết quả hiển thị:
>>> traceroute(["www.yahoo.com","www.altavista.com","www.wisenut.com","www.copernic.com"],maxttl=20) Received 80 packets, got 80 answers, remaining 0 packets 193.45.10.88:80 216.109.118.79:80 64.241.242.243:80 66.94.229.254:80 1 192.168.8.1 192.168.8.1 192.168.8.1 192.168.8.1 2 82.243.5.254 82.243.5.254 82.243.5.254 82.243.5.254 3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 4 212.27.50.46 212.27.50.46 212.27.50.46 212.27.50.46 5 212.27.50.37 212.27.50.41 212.27.50.37 212.27.50.41 6 212.27.50.34 212.27.50.34 213.228.3.234 193.251.251.69 7 213.248.71.141 217.118.239.149 208.184.231.214 193.251.241.178 8 213.248.65.81 217.118.224.44 64.125.31.129 193.251.242.98 9 213.248.70.14 213.206.129.85 64.125.31.186 193.251.243.89 10 193.45.10.88 SA 213.206.128.160 64.125.29.122 193.251.254.126 11 193.45.10.88 SA 206.24.169.41 64.125.28.70 216.115.97.178 12 193.45.10.88 SA 206.24.226.99 64.125.28.209 66.218.64.146 13 193.45.10.88 SA 206.24.227.106 64.125.29.45 66.218.82.230 14 193.45.10.88 SA 216.109.74.30 64.125.31.214 66.94.229.254 SA 15 193.45.10.88 SA 216.109.120.149 64.124.229.109 66.94.229.254 SA 16 193.45.10.88 SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA 17 193.45.10.88 SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA 18 193.45.10.88 SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA 19 193.45.10.88 SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA 20 193.45.10.88 SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA (<Traceroute: UDP:0 TCP:28 ICMP:52 Other:0>, <Unanswered: UDP:0 TCP:0 ICMP:0 Other:0>)
Dòng cuối cùng là trong thực tế, một kết quả của hàm: một đối tượng kết quả traceroute và một danh sách gói của gói tin trả lời. Kết quả traceroute là một phiên bản chuyên biệt hơn (một lớp con, trên thực tế) của một đối tượng kết quả cổ điển. Chúng tôi có thể lưu nó để tham khảo ý kiến các kết quả traceroute lại một chút sau, hoặc để kiểm tra sâu sắc một trong những câu trả lời, ví dụ để kiểm tra padding.
>>> result,unans=_ >>> result.show() 193.45.10.88:80 216.109.118.79:80 64.241.242.243:80 66.94.229.254:80 1 192.168.8.1 192.168.8.1 192.168.8.1 192.168.8.1 2 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 [...] >>> result.filter(lambda x: Padding in x[1])
Giống như bất kỳ đối tượng kết quả, các đối tượng traceroute có thể được thêm vào:
>>> r2,unans=traceroute(["www.voila.com"],maxttl=20) Received 19 packets, got 19 answers, remaining 1 packets 195.101.94.25:80 1 192.168.8.1 2 82.251.4.254 3 213.228.4.254 4 212.27.50.169 5 212.27.50.162 6 193.252.161.97 7 193.252.103.86 8 193.252.103.77 9 193.252.101.1 10 193.252.227.245 12 195.101.94.25 SA 13 195.101.94.25 SA 14 195.101.94.25 SA 15 195.101.94.25 SA 16 195.101.94.25 SA 17 195.101.94.25 SA 18 195.101.94.25 SA 19 195.101.94.25 SA 20 195.101.94.25 SA >>> >>> r3=result+r2 >>> r3.show() 195.101.94.25:80 212.23.37.13:80 216.109.118.72:80 64.241.242.243:80 66.94.229.254:80 1 192.168.8.1 192.168.8.1 192.168.8.1 192.168.8.1 192.168.8.1 2 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 4 212.27.50.169 212.27.50.169 212.27.50.46 - 212.27.50.46 5 212.27.50.162 212.27.50.162 212.27.50.37 212.27.50.41 212.27.50.37 6 193.252.161.97 194.68.129.168 212.27.50.34 213.228.3.234 193.251.251.69 7 193.252.103.86 212.23.42.33 217.118.239.185 208.184.231.214 193.251.241.178 8 193.252.103.77 212.23.42.6 217.118.224.44 64.125.31.129 193.251.242.98 9 193.252.101.1 212.23.37.13 SA 213.206.129.85 64.125.31.186 193.251.243.89 10 193.252.227.245 212.23.37.13 SA 213.206.128.160 64.125.29.122 193.251.254.126 11 - 212.23.37.13 SA 206.24.169.41 64.125.28.70 216.115.97.178 12 195.101.94.25 SA 212.23.37.13 SA 206.24.226.100 64.125.28.209 216.115.101.46 13 195.101.94.25 SA 212.23.37.13 SA 206.24.238.166 64.125.29.45 66.218.82.234 14 195.101.94.25 SA 212.23.37.13 SA 216.109.74.30 64.125.31.214 66.94.229.254 SA 15 195.101.94.25 SA 212.23.37.13 SA 216.109.120.151 64.124.229.109 66.94.229.254 SA 16 195.101.94.25 SA 212.23.37.13 SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA 17 195.101.94.25 SA 212.23.37.13 SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA 18 195.101.94.25 SA 212.23.37.13 SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA 19 195.101.94.25 SA 212.23.37.13 SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA 20 195.101.94.25 SA 212.23.37.13 SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA
đối tượng kết quả Traceroute cũng có một tính năng rất gọn gàng: họ có thể làm cho một đồ thị có hướng từ tất cả các tuyến đường mà họ có, và cụm chúng bằng AS. Bạn sẽ cần graphviz. Theo mặc định, ImageMagick được sử dụng để hiển thị các đồ thị.
>>> res,unans = traceroute(["www.microsoft.com","www.cisco.com","www.yahoo.com","www.wanadoo.fr","www.pacsec.com"],dport=[80,443],maxttl=20,retry=-2) Received 190 packets, got 190 answers, remaining 10 packets 193.252.122.103:443 193.252.122.103:80 198.133.219.25:443 198.133.219.25:80 207.46... 1 192.168.8.1 192.168.8.1 192.168.8.1 192.168.8.1 192.16... 2 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 82.251... 3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 213.22... [...] >>> res.graph() # piped to ImageMagick's display program. Image below. >>> res.graph(type="ps",target="| lp") # piped to postscript printer >>> res.graph(target="> /tmp/graph.svg") # saved to file
Nếu bạn có VPython cài đặt, bạn cũng có thể có một đại diện 3D của traceroute. Với các nút bên phải, bạn có thể xoay cảnh, với các nút ở giữa, bạn có thể phóng to, với các nút trái, bạn có thể di chuyển cảnh. Nếu bạn bấm vào một quả bóng, đó là IP sẽ xuất hiện / biến mất. Nếu bạn Ctrl-click vào một quả bóng, cổng 21, 22, 23, 25, 80 và 443 sẽ được quét và kết quả hiển thị:
>>> res.trace3D()
Comments
Post a Comment