Python端口扫描简单程序


Posted in Python onNovember 10, 2016

本文实例为大家分享了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 相关文章推荐
PYTHON正则表达式 re模块使用说明
May 19 Python
Python BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 Python
Python易忽视知识点小结
May 25 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
May 25 Python
Python教程之全局变量用法
Jun 27 Python
Python机器学习logistic回归代码解析
Jan 17 Python
python求最大值,不使用内置函数的实现方法
Jul 09 Python
基于Python生成个性二维码过程详解
Mar 05 Python
python 代码运行时间获取方式详解
Sep 18 Python
利用python爬取有道词典的方法
Dec 08 Python
Python迭代和迭代器详解
Nov 10 #Python
python通过cookie模拟已登录状态的初步研究
Nov 09 #Python
Python内置函数OCT详解
Nov 09 #Python
windows10系统中安装python3.x+scrapy教程
Nov 08 #Python
简单谈谈python中的多进程
Nov 06 #Python
python自带的http模块详解
Nov 06 #Python
Python程序中设置HTTP代理
Nov 06 #Python
You might like
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
php compact 通过变量创建数组
2016/11/15 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python程序设计入门(3)数组的使用
2014/06/16 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
解除劳动合同协议书
2014/04/14 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
中学社团活动总结
2015/05/07 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
pandas求平均数和中位数的方法实例
2021/08/04 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS