Heim  >  Artikel  >  Backend-Entwicklung  >  Einfaches Programm zum Scannen von Python-Ports

Einfaches Programm zum Scannen von Python-Ports

黄舟
黄舟Original
2016-12-15 09:21:131170Durchsuche

Das Beispiel in diesem Artikel teilt den Implementierungscode des Python-Port-Scannens als Referenz. Der spezifische Inhalt lautet wie folgt:

Rufen Sie die IP- und Portnummer der Maschine ab:

import socket 
   
def get_my_ip(): 
  try: 
    csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    csock.connect(('8.8.8.8', 80)) 
    (addr, port) = csock.getsockname() 
    csock.close() 
    return addr,port 
  except socket.error: 
    return "127.0.0.1" 
   
def int_to_ip(int_ip): 
  return socket.inet_ntoa(struct.pack('I', socket.htonl(int_ip))) 
   
   
def ip_to_int(ip): 
  return socket.ntohl(struct.unpack("I", socket.inet_aton(str(ip)))[0]) 
   
(ip,port)=get_my_ip()

PortScan.py

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
   
import optparse 
from socket import * 
from threading import * 
   
screenLock = Semaphore(value=1) 
   
def connScan(tgtHost, tgtPort): 
  try: 
    connSkt = socket(AF_INET, SOCK_STREAM) 
    connSkt.connect((tgtHost, tgtPort)) 
    connSkt.send('ViolentPython\r\n') 
    results = connSkt.recv(100) 
    screenLock.acquire() 
    print '[+] %d/tcp open' % tgtPort 
    print '[+] ' + str(results) 
  except: 
    screenLock.acquire() 
    print '[-] %d/tcp closed' % tgtPort 
  finally: 
  screenLock.release() 
  connSkt.close()  
   
def portScan(tgtHost, tgtPorts): 
  try: 
    tgtIP = gethostbyname(tgtHost) 
  except: 
    print "[-] Cannot resolve '%s': Unknown host" %tgtHost 
    return 
   
  try: 
    tgtName = gethostbyaddr(tgtIP) 
    print '\n[+] Scan Results for: ' + tgtName[0] 
  except: 
    print '\n[+] Scan Results for: ' + tgtIP 
   
  setdefaulttimeout(1) 
  for tgtPort in tgtPorts: 
    t = Thread(target=connScan,args=(tgtHost,int(tgtPort))) 
    t.start() 
   
def main(): 
  parser = optparse.OptionParser('usage %prog '+\ 
   &#39;-H <target host> -p <target port>&#39;) 
  parser.add_option(&#39;-H&#39;, dest=&#39;tgtHost&#39;, type=&#39;string&#39;,\ 
   help=&#39;specify target host&#39;) 
  parser.add_option(&#39;-p&#39;, dest=&#39;tgtPort&#39;, type=&#39;string&#39;,\ 
   help=&#39;specify target port[s] separated by comma&#39;) 
   
  (options, args) = parser.parse_args() 
   
  tgtHost = options.tgtHost 
  tgtPorts = str(options.tgtPort).split(&#39;,&#39;) 
   
  if (tgtHost == None) | (tgtPorts[0] == None): 
  print parser.usage 
    exit(0) 
   
  portScan(tgtHost, tgtPorts) 
   
   
if __name__ == &#39;__main__&#39;: 
  main()

Das Obige ist der gesamte Inhalt des Python-Port-Scannens. Ich hoffe, dass er zum Lernen aller beiträgt.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn