网络编程
位置:首页>> 网络编程>> Python编程>> Python端口扫描简单程序

Python端口扫描简单程序

作者:Linux_Google  发布时间:2022-12-26 02:19:45 

标签:python,端口扫描

本文实例为大家分享了Python端口扫描的实现代码,供大家参考,具体内容如下

获取本机的IP和端口号:


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()
print "ip=%s port=%d" %(ip,port)

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 '+\
  '-H <target host> -p <target port>')
 parser.add_option('-H', dest='tgtHost', type='string',\
  help='specify target host')
 parser.add_option('-p', dest='tgtPort', type='string',\
  help='specify target port[s] separated by comma')

(options, args) = parser.parse_args()

tgtHost = options.tgtHost
 tgtPorts = str(options.tgtPort).split(',')

if (tgtHost == None) | (tgtPorts[0] == None):
 print parser.usage
   exit(0)

portScan(tgtHost, tgtPorts)

if __name__ == '__main__':
 main()
0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com