Simple port knocking script using scapy because scapy is awesome and I’ll take any opportunity to use it. Also, Python lives on all of my devices, so I can use one tool across all of them. I found a script here that I then modified to suit my needs. The author, snj, seems to have made it for a CTF or something similar, so there was a lot there that I did not need.
TODO:
Right now the IP and port numbers are hard-coded in. In the future, we could improve the script by getting them from arguments. Additionally, importing everything from scapy takes forever. The biggest improvement would be to either not use scapy, or figure out what, specifically, we need from scapy, and import only those things.
# https://gist.github.com/snj/9382c63ad49050e1b9ba
from scapy.all import *
import time
def knock(ports):
print "[*] Knocking on ports "+str(ports)
for dport in range(0, len(ports)):
ip = IP(dst = "192.168.1.59")
SYN = ip/TCP(dport=ports[dport], flags="S", window=14600, options=[('MSS',1460)])
send(SYN)
def execKnock(ports):
knock(ports)
print "Port opened"
time.sleep(10)
print "Port closed"
oports = [7303,40303,33528]
cports = [33528,40303,7303]
execKnock(oports)