
If dport=(0, 1000), the TCP packet will be sent to all ports from port 0 to port 1000. If dport=, the TCP packet will be sent to both port 80 (HTTP) and port 443 (HTTPS) If dport=80, the TCP packet will only be sent to port 80 (HTTP). Note that dport can be either a single port or a range of ports. Here, we create an IP packet and specify the destination IP address, then stack TCP on top of it, specifying the destination ports and setting the SYN flag.
#PYTHON INSTALLING SCAPY INSTALL#
If you haven’t already, you need to install Scapy with pip.Įnter fullscreen mode Exit fullscreen mode Scapy is a packet manipulation tool written in Python. Using Scapy, we will send SYN packets to a range of port numbers, listen for SYN+ACK replies, and hence determine which ports are open. To establish the connection, Host P sends a final ACK packet. If Host Q is listening on the target port and willing to accept a new connection, it will reply with a SYN+ACK packet. When Host P wishes to connect to Host Q, it will send a SYN packet to Host Q. For example, if I am running both Firefox and Chrome on my computer, the OS uses port numbers to distinguish between the two applications so that webpages meant for Chrome don’t show up on Firefox. TCP uses port numbers to differentiate between different applications on the same device. This is achieved using a 3-way handshake. It is a connection-oriented protocol, meaning that two devices will need to set up a TCP connection before exchanging data. TCP is a transport layer protocol that most services run on.
#PYTHON INSTALLING SCAPY MAC#
We will use Scapy to scan the network using ARP requests and create a list of IP address to MAC address mappings. My MAC address is 03-CA-4B-2C-13–8A.”Īs you might have noticed, as ARP is a standalone protocol, anyone can send an ARP request at any time to learn about the devices on the network through ARP replies. If a computer wishes to send a packet to 192.168.52.2, it will first send an ARP request, asking all devices in the network “who is IP address 192.168.52.2?” The computer with IP address 192.168.52.2 will respond with “Hi, I am 192.168.52.2. Hence, computers need to determine the MAC address of their intended recipient before sending out a packet.


However, switches (which act as packet forwarders) don’t understand IP addresses - they can only make forwarding decisions based on MAC addresses. When computers communicate with each other over the network, they will specify a target IP address. IP addresses are logical addresses, while MAC addresses are physical addresses. Each network layer corresponds to a group of layer-specific network protocols.įor the purpose of this tutorial, we will only concern ourselves with the ARP protocol and the TCP protocol.ĪRP maps IP addresses to MAC addresses. Network layers can be represented by the OSI model and the TCP/IP model. Simple network scanner built with Scapy for PythonĬommunications over networks use what we call a protocol stack - building higher-level, more sophisticated conversations on top of simpler, more rudimentary conversations.
