-
Notifications
You must be signed in to change notification settings - Fork 0
/
MemCachedDRDoScan.py
61 lines (52 loc) · 1.35 KB
/
MemCachedDRDoScan.py
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env python
import socket
import select
import requests
import gevent
from gevent import monkey, pool
import sys
import getopt
monkey.patch_all()
jobs = []
def MemcacheCheck(ip):
timeout=3
addr=(ip,11211)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
data="\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n"
s.sendto(data,addr)
s.setblocking(0)
data=""
ready = select.select([s], [], [], timeout)
try:
data,addr2=s.recvfrom(2048)
except:
pass
if len(data)>15:
print ip
s.close()
#MemcacheCheck("120.194.198.14")
def main(argv):
MaxProcs=1000
if len(argv)==0:
print sys.argv[0]+' -i ipaddress.txt [-P max-procs]'
sys.exit(2)
try:
opts, args = getopt.getopt(argv,"hi:t:")
except getopt.GetoptError:
print sys.argv[0]+' -i ipaddress.txt [-P max-procs]'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print sys.argv[0]+' -i ipaddress.txt [-P max-procs]'
sys.exit()
elif opt in ("-P"):
MaxProcs = int(arg)
elif opt in ("-i"):
ipadd = arg
p = pool.Pool(MaxProcs)
with open(ipadd, 'r') as fp:
for line in fp:
jobs.append(p.spawn(MemcacheCheck, line.strip("\n")))
gevent.joinall(jobs)
if __name__ == '__main__':
main(sys.argv[1:])