-
Notifications
You must be signed in to change notification settings - Fork 0
/
knock
executable file
·39 lines (30 loc) · 1.19 KB
/
knock
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/python3
## From: https://gist.github.com/rootsploit/db83a6975c7c1337106950b81b6df733/
import socket
import itertools
import sys
import time
import argparse
class Knockit(object):
def __init__(self, args: list):
self._parse_args(args)
def _parse_args(self, args: list):
parser = argparse.ArgumentParser()
parser.add_argument('-d', '--delay', type=int, default=200,
help='Delay between each knock. Default is 200 ms.')
parser.add_argument('host', help='Hostname or IP address of the host.')
parser.add_argument('ports', type=int, help='Port(s) to knock on', nargs='+')
args = parser.parse_args(args)
self.delay = args.delay / 1000
self.ports = args.ports
self.host= args.host
def knockit(self):
self.ports = list(map(int, self.ports))
for port in self.ports:
print("[+] Knocking on port %s:%s" % (self.host,port))
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(self.delay)
sock.connect_ex((self.host, port))
sock.close()
if __name__ == '__main__':
Knockit(sys.argv[1:]).knockit()