返回列表 回复 发帖

A simple Port Scanner written in Python

文章作者:mouse
  1. #!/usr/bin/python
  2. # MPS 0.1 - MaphiaPortScanner
  3. #      coded by mouse
  4. #
  5. # usage: mps <host> <sport> <fport>
  6. #
  7. # Greetz:
  8. #      - Maphia Group
  9. #      - Flowsecurity Group
  10. #      - All friends of Blackhat

  11. import socket as sock
  12. import sys

  13. def help():
  14.   print """[-*-] MPS 0.1 - Help
  15.      
  16.         usage: mps <host> <sport> <fport>
  17.         - sport: starting port;
  18.         - fport: finishing port.

  19.         Leave them blanks if you want to scan all ports."""

  20. class MPS:
  21.   def __init__(self, argv=[]):
  22.     self.sport = 1
  23.     self.fport = 65535
  24.     self.host = ""

  25.     if len(argv) == 4:
  26.         self.host = argv[1]
  27.         self.sport = int(argv[2])
  28.         self.fport = int(argv[3])

  29.         if self.sport >= self.fport:
  30.             print "[-!-] Error: Starting port cannot be bigger than finishing port!"
  31.             help()
  32.             sys.exit(-1)

  33.     elif len(argv) == 2:
  34.         self.host = argv[1]

  35.     else:
  36.         help()
  37.         sys.exit(-1)

  38.     try:
  39.         sock.gethostbyname(self.host)
  40.     except:
  41.         print "[-!-] Error: %s is unreachable!" % self.host

  42.     self.scanner(self.host, self.sport, self.fport)


  43.   def scanner(self, host, start, finish):
  44.     print "---------------* MPS *---------------"
  45.     print "Maphia Port Scanner - coded by mouse"
  46.     print "Starting scanning on:"
  47.     print "%s : hostname\n" % host
  48.    
  49.     self.port = start
  50.    
  51.     while self.port <= finish:
  52.         self.host = host
  53.         self.mps = sock.socket(sock.AF_INET, sock.SOCK_STREAM)
  54.         nport = 1
  55.         
  56.         try:
  57.           self.mps.connect((self.host, self.port))
  58.           print "\t%s:%d OPEN" % (self.host, self.port)
  59.           self.mps.close()
  60.         except: pass
  61.         finally:
  62.           self.port += 1
  63.           nport += 1

  64.     print "\nScan finished."
  65.     print "Found %d ports open." % (nport)


  66. if __name__ == "__main__":
  67.      MPS(sys.argv)
复制代码
返回列表