使用Python制作获取网站目录的图形化程序


Posted in Python onMay 04, 2015

1.pyqt4写的界面 find_ui.py

#-*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
 
try:
  _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
  def _fromUtf8(s):
    return s
 
try:
  _encoding = QtGui.QApplication.UnicodeUTF8
  def _translate(context, text, disambig):
    return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
  def _translate(context, text, disambig):
    return QtGui.QApplication.translate(context, text, disambig)
 
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName(_fromUtf8("Form"))
    Form.resize(516, 467)
    self.label = QtGui.QLabel(Form)
    self.label.setGeometry(QtCore.QRect(20, 10, 54, 16))
    self.label.setObjectName(_fromUtf8("label"))
    self.edit_address = QtGui.QLineEdit(Form)
    self.edit_address.setGeometry(QtCore.QRect(80, 10, 351, 20))
    self.edit_address.setObjectName(_fromUtf8("edit_address"))
    self.button_search = QtGui.QPushButton(Form)
    self.button_search.setGeometry(QtCore.QRect(440, 10, 61, 23))
    self.button_search.setObjectName(_fromUtf8("button_search"))
    self.text_all = QtGui.QTextEdit(Form)
    self.text_all.setGeometry(QtCore.QRect(20, 40, 411, 261))
    self.text_all.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    self.text_all.setObjectName(_fromUtf8("text_all"))
    self.label_2 = QtGui.QLabel(Form)
    self.label_2.setGeometry(QtCore.QRect(20, 320, 54, 12))
    self.label_2.setObjectName(_fromUtf8("label_2"))
    self.text_exist = QtGui.QTextEdit(Form)
    self.text_exist.setGeometry(QtCore.QRect(20, 340, 411, 64))
    self.text_exist.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    self.text_exist.setObjectName(_fromUtf8("text_exist"))
    self.label_3 = QtGui.QLabel(Form)
    self.label_3.setGeometry(QtCore.QRect(380, 310, 91, 20))
    self.label_3.setText(_fromUtf8(""))
    self.label_3.setObjectName(_fromUtf8("label_3"))
    self.edit_add = QtGui.QLineEdit(Form)
    self.edit_add.setGeometry(QtCore.QRect(20, 420, 411, 20))
    self.edit_add.setObjectName(_fromUtf8("edit_add"))
    self.button_add = QtGui.QPushButton(Form)
    self.button_add.setGeometry(QtCore.QRect(440, 420, 71, 23))
    self.button_add.setObjectName(_fromUtf8("button_add"))
    self.label_4 = QtGui.QLabel(Form)
    self.label_4.setGeometry(QtCore.QRect(20, 440, 251, 16))
    self.label_4.setObjectName(_fromUtf8("label_4"))
 
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
 
  def retranslateUi(self, Form):
    Form.setWindowTitle(_translate("Form", "目录探测工具", None))
    self.label.setText(_translate("Form", "网站地址:", None))
    self.button_search.setText(_translate("Form", "探测", None))
    self.label_2.setText(_translate("Form", "结果:", None))
    self.button_add.setText(_translate("Form", "添加地址", None))
    self.label_4.setText(_translate("Form", "例如:/admin/manager.asp 请以斜杠开始", None))

2. 启动文件 start.py

#!/usr/local/bin/python
#coding=utf-8
 
import sys
import os
import time
import httplib
import re
from PyQt4 import QtCore, QtGui
from threading import Thread
 
from find_ui import Ui_Form
 
 
class MyForm(QtGui.QMainWindow):
  def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.ui = Ui_Form()
    self.ui.setupUi(self)
    QtCore.QObject.connect(self.ui.button_search,QtCore.SIGNAL("clicked()"), self.startthread)
    QtCore.QObject.connect(self.ui.button_add,QtCore.SIGNAL("clicked()"), self.addAddress)
  def startSearch(self):
    self.ui.label_3.setText("")
    self.getAddress()
    address=str(self.ui.edit_address.text())
    self.accessAddesss(address)
     
  def startthread(self):
    t1=Thread(target=self.startSearch,)
    t1.start()
     
     
  def getAddress(self):
    try:
      global addresslist
      addresslist=[]
      filePath=os.getcwd()+"\\address.txt"
      # if not os.path.isfile(filePath):
      #  print 'aaa'      
       #  return 0
         
      fileAddress=file(filePath,"r")
      for address_line in fileAddress.readlines():
        if address_line not in addresslist:
          addresslist.append(address_line)
          pass
        pass
      pass
      fileAddress.close()
       
    except:
      #self.ui.text_all.setText('aaa')
      self.ui.text_all.setText(u'打开文件错误')
      pass
    finally:
      #fileAddress.close()
      pass
    # print addresslist[0]
   
  def accessAddesss(self,host):
    try:
      print host
      print len(addresslist)
      for oneAddress in addresslist:
        print len(addresslist)
        oneAddress=oneAddress.replace("\n","")
        print oneAddress
        connection=httplib.HTTPConnection(host,80,timeout=10)
        connection.request("GET",oneAddress)
        response=connection.getresponse()
        result=response.reason
        resultNum=response.status
         
        if "OK" in result or "Forbidden" in result:
          getaddress="http://"+host+oneAddress+"------"+str(resultNum)+":"+result
          self.ui.text_exist.append(getaddress)
        else:
          self.ui.text_all.append("http://"+host+oneAddress+"------"+str(resultNum)+":"+result)
           
        connection.close()
    except Exception as e:
      print e.message
    self.ui.label_3.setText(u"探测完成")
    self.ui.label_3.colorCount()
     
  def addAddress(self):
    try:
      filePath=os.getcwd()+"\\address.txt"   
      fileAddress=file(filePath,"a")
      newAddress="\n"+str(self.ui.edit_add.text())
      print newAddress
      fileAddress.write(newAddress)
      fileAddress.close()
    except Exception as e:
      print e.message
     
 
if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  myapp = MyForm()
  myapp.show()
  sys.exit(app.exec_())

3.address.txt 扫描地址名单文件,可以通过编辑改文件制定自己的规则,你懂的~~

/admin.php
/admin/
/administrator/
/moderator/
/webadmin/
/adminarea/
/bb-admin/
/adminLogin/
/test/login.jsp
/source/login.php
Python 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
python FTP编程基础入门
Feb 27 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 #Python
用Python脚本来删除指定容量以上的文件的教程
May 04 #Python
编写Python脚本来获取Google搜索结果的示例
May 04 #Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 #Python
Python下线程之间的共享和释放示例
May 04 #Python
简单介绍Python中利用生成器实现的并发编程
May 04 #Python
简单分析Python中用fork()函数生成的子进程
May 04 #Python
You might like
php cookie 登录验证示例代码
2009/03/16 PHP
如何用php获取文件名后缀
2013/06/09 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
深入理解Python中字典的键的使用
2015/08/19 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python