scapy로 가상 IP를 제작하여 ping의 응답을 얻습니다.
입문
Scapy는 네트워크 패키지 작업의 도구로 패키지의 생성부터 디코딩까지 다양한 일을 할 수 있습니다.
예를 들어 통신 오류가 발생했을 때의 데이터 패키지를 만들어 동작 확인을 하는 등 문제의 재현 테스트 등에도 사용할 수 있다.
여기에서 우리는 가상 주소에 대한ping 응답을 얻기 위해 하나의 환경만 만들었습니다. 이것은 설명입니다.
scapy 설치
・RedHat
https://access.redhat.com/solutions/3759961
(How to install scapy for network troubleshooting in Red Hat Enterprise Linux 7? )
arp 응답 프로그램
IP 통신을 하기 위해서는 우선arp의 문의에 응답을 되돌려야 한다.
이를 위한 절차는 다음과 같다. ※나는 어떤 인터넷 주소를 참고했지만, 이미 기억이 나지 않는다.
#!/usr/bin/python3
from scapy.all import *
# Your network broadcast address
broadcastNet = "192.168.1.255"
macDict = { "192.168.1.123" : "01:01:01:01:01:01" }
# Use MAC address of this machine as source. If not eth0, change this:
myMAC = get_if_hwaddr('eth1')
def handle_packet(packet):
if packet[ARP].op == 1: # who-has
print("Someone is asking about " + packet.pdst)
print(packet.summary())
if packet.pdst in macDict:
print("Sending ARP response for " + packet.pdst)
reply = ARP(op=2, hwsrc=macDict[packet.pdst], psrc=packet.pdst, hwdst="ff:ff:ff:ff:ff:ff", pdst=broadcastNet)
# reply = ARP(op=ARP.is_at, hwsrc=macDict[packet.pdst], psrc=packet.pdst, hwdst="ff:ff:ff:ff:ff:ff", pdst=broadcastN
et)
go = Ether(dst="ff:ff:ff:ff:ff:ff", src=myMAC) / reply
sendp(go)
return
# Sniff for ARP packets. Run handle_packet() on each one
sniff(filter="arp", prn=handle_packet, store=0)
ping 확인arp표를 누르다
그러니까 이런 일이야.
아직 핑의 응답을 받지 못했지만arp표가 완성되었음을 알 수 있습니다.
ping 응답 프로그램
#!/usr/bin/python3
from scapy.all import *
def handle_packet(packet):
if str(packet[ICMP].type) == "8":
if packet[IP].dst == '192.168.1.123':
# packet.show()
echoReply = IP(dst=packet[IP].src, src='192.168.1.123')/ICMP()/Raw()
echoReply[ICMP].type = 0 # echo reply
echoReply[ICMP].id = packet[ICMP].id
echoReply[ICMP].seq = packet[ICMP].seq
echoReply[ICMP][Raw].load = packet[ICMP][Raw].load
send(echoReply)
return
# Sniff for icmp packets
sniff(filter="icmp", prn=handle_packet, store=0)
실행해 보다
이런 느낌으로 핑은 192.168.1.123까지 즐겁게 날아갔다.
Reference
이 문제에 관하여(scapy로 가상 IP를 제작하여 ping의 응답을 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takimai39/items/ef457f1c03b493f79a4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)