ping -c 2 8.8.8.8
You should see two replies,
as shown below. If you don't, you need
to troubleshoot your networking before
continuing with this project.
To install Scapy on a Debian cloud server, execute this command:
sudo apt install python-scapy
sudo scapy
Scapy opens, as shown below on this page.
i = IP()
This creates an object named i of type IP. To see the properties
of that object, use the display() method with this command:
i.display()
A list of values appears, starting with the IP version number (4) and ending
with the source and destination IP addresses, as shown below on this page.
If the colors are difficult to see, adjust them by clicking Edit, "Profile Preferences", Colors. I used "Black on light yellow".
Use these commands to set the destination IP address and display the properties of the i object again. Replace the IP address in the first command with the IP address of your Target machine:
i.dst="google.com"
i.display()
Notice that scapy automatically fills in your machine's
source IP address, as shown below on this page.
Use these commands to create an object named ic of type ICMP and display its properties:
ic = ICMP()
ic.display()
There aren't many properties for this object--it's just an
echo-request, as shown below on this page.
Use this command to send the packet onto the network and listen to a single packet in response. Note that the third character is the numeral 1, not a lowercase L:
sr1(i/ic)
This command sends and receives one packet, of type IP at layer 3 and ICMP at layer 4.
As you can see in the image above, the response is shown, with ICMP type echo-reply.
The Padding section shows the portion of the packet that carries higher-level data.
In this case it contains only zeroes as padding,
as shown below.
Use this command to send a packet that is IP at layer 3, ICMP at layer 4, and that contains data with your name in it (replace YOUR NAME with your own name):
sr1(i/ic/"YOUR NAME")
You should see a reply with a Raw section containing your name,
as shown below on this page.
Troubleshooting
If you don't get a response to your ICMP request, it may be that it is being discarded as a duplicate. Add these two commands to set the sequence and id numbers, using any random number instead of "10".Another solution is to use a Google cloud machine, as shown below.
ic.id = 10 ic.seq = 10
https://games.samsclass.info/tmp/pingYOURNAME.txtThe page is not found, as shown below on this page.
Use Scapy to send an ICMP request with these properties:
i = IP()
i.dst = "ad.samsclass.info"
u = UDP()
u.display()
After creating an IP object targeting my server,
this creates an object named u of type UDP,
and displays its properties, as shown below.
Execute these commands to change the source port to 2000, the destination port to 9900 and send a message to my server:
u.sport = 2000
u.dport = 9900
sr1(i/u/"HELLO\n")
The server replies with "You sent HELLO",
as shown below.