Python大法之告别脚本小子系列—信息资产收集类脚本编写(上)

本文介绍了如何使用Python编写端口扫描和子域名采集脚本。首先,讲解了端口扫描的原理和常用端口,通过nmap工具举例,并提供了单线程和多线程的Python端口扫描实现。接着,讨论了子域名采集的重要性,提到了字典爆破、搜索引擎采集和第三方网站的方法,并给出了相关Python代码示例。
摘要由CSDN通过智能技术生成

作者:阿甫哥哥

原文来自:https://bbs.ichunqiu.com/thread-38703-1-1.html

0×01 前言
在采集到URL之后,要做的就是对目标进行信息资产收集了,收集的越好,你挖到洞也就越多了…………当然这一切的前提,就是要有耐心了!!!由于要写工具较多,SO,我会分两部分写……

0×02 端口扫描脚本编写

image.png端口扫描的原理:

端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的己知漏洞就可进行攻击。其原理是当一个主机向远端一个服务器的某一个端口提出建立一个连接的请求,如果对方有此项服务,就会应答,如果对方未安装此项服务时,即使你向相应的端口发出请求,对方仍无应答,利用这个原理,如果对所有熟知端口或自己选定的某个范围内的熟知端口分别建立连接,并记录下远端服务器所给予的应答,通过查看一记录就可以知道目标服务器上都安装了哪些服务,这就是端口扫描,通过端口扫描,就可以搜集到很多关于目标主机的各种很有参考价值的信息。例如,对方是否提供FPT服务、WWW服务或其它服务。

代理服务器还有很多常用的端口

比如HTTP协议常用的就是:80/8080/3128/8081/9080,FTP协议常用的就是:21,Telnet协议常用的是23等等

来个较全的…

代理服务器常用以下端口:

⑴. HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080

⑵. SOCKS代理协议服务器常用端口号:1080

⑶. FTP(文件传输)协议代理服务器常用端口号:21

⑷. Telnet(远程登录)协议代理服务器常用端口:23

HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口);

HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp;

Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口);

FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口);

TFTP(Trivial File Transfer Protocol),默认的端口号为69/udp;

SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp;

SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口);

POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp;

WebLogic,默认的端口号为7001;

Webshpere应用程序,默认的端口号为9080;

webshpere管理工具,默认的端口号为9090;

JBOSS,默认的端口号为8080;

TOMCAT,默认的端口号为8080;

WIN2003远程登陆,默认的端口号为3389;

Symantec AV/Filter for MSE,默认端口号为 8081;

Oracle 数据库,默认的端口号为1521;

ORACLE EMCTL,默认的端口号为1158;

Oracle XDB(XML 数据库),默认的端口号为8080;

Oracle XDB FTP服务,默认的端口号为2100;

MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp;

MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp;

QQ,默认的端口号为1080/udp

等等,更具体的去百度吧,啊哈哈

端口的三种状态

OPEN  –端口是开放的,可以访问,有进程
CLOSED  –端口不会返回任何东西..可能有waf
FILTERED  –可以访问,但是没有程序监听

这里用一个工具–nmap举下栗子吧…

image.png

说的差不多了,咱们开始用Python实现它….端口扫描在Python中可以用的模块有很多,本文用socket模块演示单线程的在之前的文章有说过,具体传送门:

一个精壮的代购骗子被我彻底征服

#-*- coding: UTF-8 -*-

import socket

  

def Get_ip(domain):  

    try:  

        return socket.gethostbyname(domain)  

    except socket.error,e:  

        print ‘%s: %s’%(domain,e)  

        return 0

  

def PortScan(ip):

    result_list=list()

    port_list=range(1,65535)

    for port in port_list:

        try:

            s=socket.socket() 

            s.settimeout(0.1)

            s.connect((ip,port))

            openstr= ” PORT:”+str(port) +” OPEN “

            print openstr

            result_list.append(port)

            s.close()

        except:

            pass

    print result_list

def main():

    domain = raw_input(“PLEASE INPUT YOUR TARGET:”)

    ip = Get_ip(domain)

    print ‘IP:’+ip

    PortScan(ip)

if __name__==’__main__’:  

    main()

速度是不是巨慢,既然是告别脚本小子,写个单线程的。。肯定是不行的,啊哈哈

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值