侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

基于Python socket的端口扫描程序实例代码

Python  /  管理员 发布于 7年前   170

本文研究的主要是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() 

基于Python socket的端口扫描程序

#------------------------------------------------------------------------------- # Name:  PortScan # Purpose:  扫描网段主机的端口开放情况 # Author:  Hao Chen # Python3.4 #------------------------------------------------------------------------------- import socket def main():  ip_start=input('请输入开始IP:(默认:127.0.0.1)')  if ip_start=='':   ip_start='127.0.0.1'   ip_end='127.0.0.1'  else:   ip_end=input('请输入结束IP:')   if ip_end=='':    ip_end='127.0.0.1'     s=input('请输入目标主机开始端口:(默认扫描常用端口)')  if s=='':   portList=[21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080, 9015]  else:   startport=int(s)   s=input('请输入目标主机结束端口:(默认:65535)')   if s=='':    endport=65535   else:    endport=int(s)   portList=[i for i in range(startport,endport+1)]    while 1:   #ip_start<ip_end   x1=ip_start.rfind('.');        x2=ip_end.rfind('.')   if int(ip_start[x1+1:])>int(ip_end[x2+1:]):    break;      #开始扫描端口   for port in portList:    print('正在扫描%s :%d' %(ip_start,port))    try:     sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     sk.settimeout(10)     sk.connect((ip_start,port))     sk.settimeout(None)     print('Server %s port %d OK!' % (ip_start,port))     sk.close()      #结果保存在文件中     f=open("IP_Port.txt",'a')     f.write(ip_start+' : '+str(port)+'\n')     f.close()        except Exception:     print('Server %s port %d is not connected!' % (ip_start,port))       #更新ip_start   i=ip_start.rfind('.')   x=int(ip_start[i+1:])+1   ip_start=ip_start[:i+1]+str(x)     print('扫描完成,结果保存在IP_Port.txt文件中')  if __name__ == '__main__':  main() 

总结

以上就是本文关于基于Python socket的端口扫描程序实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


  • 上一条:
    python中的闭包函数
    下一条:
    利用python 更新ssh 远程代码 操作远程服务器的实现代码
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客