UPnP Scanner

Download | Vote Up (1) | Vote Down (0)
upnpScan.py:

#!/usr/bin/env python

from scapy.all import *
from upnp_func import *
import sys
import os
import string

def intro():
 print "UPnP Config File Scanner".center(80)
 print "Author: St0rn\n".center(80)
 print ""

def clear():
 os.system('cls' if os.name == 'nt' else 'clear')
 
upnp = upnp()
clear()

try:
 if len(sys.argv) < 2:
  print "\nUsage: %s [passive | active] [target if activ scan]\n" %(sys.argv[0])
  sys.exit()
 else:
  if string.lower(sys.argv[1]) == "passive":
   intro()
   print "[+] Passive UPnP Scan, Waiting".center(80)
   upnp.passive_scan()
  elif string.lower(sys.argv[1]) == "active":
   if len(sys.argv) < 3:
    print "\nUsage: %s [passiv | activ] [target if activ scan]\n" %(sys.argv[0])
    sys.exit
   else:
    intro()
    print "[+] Active UPnP Scan".center(80)
    upnp.active_scan(sys.argv[2])
except c:
 print "Error: %s\n" %c
 sys.exit()


upnp_func.py:

#!/usr/bin/env python

from scapy.all import *

class upnp:

 def passive_scan(self):
  def upnp_sniff(p):
   if p.haslayer(UDP) and p.haslayer(Raw):
    if p[UDP].dport == 1900:
     if "NOTIFY *" in p[Raw].load:
      print "\n\n"+p[Raw].load
  try:
   sniff(prn=upnp_sniff, filter="udp")
  except:
   print "\n[-] Can't launch sniffer :/\n"

 def active_scan(self, target):
  req = 'M-SEARCH * HTTP/1.1\r\nHost:239.255.255.250:1900\r\nST:upnp:rootdevice\r\nMan:"ssdp:discover"\r\nMX:3\r\n\r\n'
  ip=IP(dst=target)
  udp=UDP(sport=random.randint(1,65536), dport=1900)
  pck = ip/udp/req
  try:
   rep = sr1(pck, verbose=0)
   print "\n\n"+rep[Raw].load
  except:
   print "\n[-] Can't send packet :/\n"

St0rn


Comments

sakiir
de plus en plus de défi , c'est partis pour du C !

Please login to comment !