Untitled
unknown
plain_text
2 years ago
1.7 kB
15
Indexable
import os
import sys
import socket
import struct
import random
def send_ping_request(dest_ip):
# Generate a random identifier and sequence number for ICMP packets
identifier = random.randint(0, 65535)
sequence_number = random.randint(0, 65535)
# Create a raw socket using ICMP protocol
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
# Set the time-to-live (TTL) field of the IP header
sock.setsockopt(socket.IPPROTO_IP, socket.IP_TTL, 64)
# Craft the ICMP Echo Request packet
icmp_packet = struct.pack('!BBHHH', 8, 0, 0, identifier, sequence_number)
checksum = calculate_checksum(icmp_packet)
icmp_packet = struct.pack('!BBHHH', 8, 0, checksum, identifier, sequence_number)
try:
# Send the ICMP Echo Request packet to the target IP address
sock.sendto(icmp_packet, (dest_ip, 0))
print(f"Sent ICMP Echo Request to {dest_ip}")
except socket.error as e:
print(f"Error: {e}")
sys.exit()
def calculate_checksum(data):
checksum = 0
count_to = (len(data) // 2) * 2
for count in range(0, count_to, 2):
checksum += (data[count + 1] << 8) + data[count]
if count_to < len(data):
checksum += data[len(data) - 1]
checksum = (checksum >> 16) + (checksum & 0xffff)
checksum += (checksum >> 16)
return ~checksum & 0xffff
# Replace 'target_ip' with the IP address of the target (e.g., your home network)
target_ip = "target_ip"
# Number of ICMP Echo Requests to send
num_requests = 10
for _ in range(num_requests):
send_ping_request(target_ip)Editor is loading...