垃圾邮件检测
1. 数据集tre06ctre06c/data:邮件数据,包括真实世界的正常邮件和垃圾邮件
tre06c/full:标签
2. 数据提取&处理jieba官方文档
列表推导式(expression for li in list if condition)
读取邮件数据递归读取目录trec06c/data的文件,获取邮件数据并进行分词处理,返回处理后的邮件列表。
# 读取邮件数据
def read_file(file_path):
# print(file_path)
email_list = []
files = os.listdir(file_path)
for file in files:
if os.path.isdir(file_path + '/' + file):
email_list = email_list + read_file(file_path + '/' + file)
else:
w ...
SEED:MD5 Collision Attack Lab
你可以到SEED官网获取实验资料:MD5 Collision Attack Lab
MD5碰撞概述哈希函数哈希究竟代表什么?哈希表和哈希函数的核心原理
归纳起来,哈希函数应该有以下几个特点:
单向
压缩
弱抗碰撞性:给出一个输入,无法找到一个不同的输入使得它们输出相同。
强抗碰撞性:无法找到两个不同的输入有相同的输出。
MD5碰撞由于哈希函数压缩的特性,因此必然产生碰撞。但是一个好的哈希函数应该让寻找碰撞的计算代价尽可能的大,让它在计算上满足抗碰撞性。
然而,MD5不是这样一个合格的哈希函数。对于MD5哈希函数,使用特定程序能够轻易的找出两个不同输入。
哈希函数 && 安全哈希函数广泛用于数据完整性校验。
在网络中,在一条消息后面附上其哈希输出,那么接收消息后检查消息的哈希输出是否一致就可以判断消息是否被更改。
在计算机系统中,可以为文件附上哈希,那么当这个文件被恶意篡改就能够及时发现。
另外,由于单向的特性,哈希函数也能用于信息保密。
在账号口令系统中,通常使用哈希加盐的方式存储口令,这样可以避免泄露用户的真实口令。
一、 作业题目本次实验主要是加深大家对MD5碰 ...
SEED:TCP
一、 作业题目TCP攻击实验二、 实验步骤及结果1. 实验环境拓扑结构:
关于容器启动:使用命令dcbuild构建镜像。使用命令dcup,dcdown控制容器启动与关闭。使用命令dockps查看容器id,使用命令dcsh 转到容器。关于容器启动:共享文件夹:攻击机与主机共享文件夹volumes。主机模式:攻击机使用主机模式可以访问虚拟机的所有网络接口。Seed账户:在所有容器中都创建了一个名为seed的账户,它的密码是dees。它可以被远程登录。SYN洪泛攻击概述:SYN泛洪攻击是DOS的一种形式,攻击者向受害者的TCP端口发送大量伪造源IP的SYN请求,但是不完成整个连接,这样受害者存储半连接的队列被充满,无法接收正常用户的连接。
队列的大小被操作系统设置,一般来说计算机内存越大,这个值也就越大。在Ubuntu系统中可以使用下面命令编辑队列大小:
同时可以使用“netstat -nat”查看队列的使用情况,状态为“SYN-RECV”为半连接,完成3次握手状态为“ESTABLISHED”。SYN Cookie策略:默认情况下,这种策略在Ubuntu中被默认开启,你可以通过下面命令查看: ...
SEED:Sniff and Spoof
课程实践报告
课程 网络攻防技术(314006040)课 序 号 3作业名称 网络流量嗅探和窃取实验评分姓名 杨森 学号 2021141530084评阅意见
一、 作业题目嗅探和欺骗二、 实验步骤及结果1. 实验环境设置1) 拓扑结构
网路接口bridge,host,none都是docker自己创建的。三个容器使用我们自定义的网络接口:636082fa98c9,这个网络接口相当于三个容器的交换机:
容器使用首先进入Labsetup文件夹,使用命令dcbuild和dcup编译和启动容器。如果需要关闭:dcdown。
你可以通过以下命令(dockps)查看容器id:
如果需要使用某个容器的终端,需要执行命令:docksh ,或者这样也行:(键入exit退出)
关于攻击机共享文件夹/volumes:虚拟机和attacker容器之间的共享文件夹,为了方便在docker容器中使用虚拟机的 ...
SEED:DNS
一 DNS概述为什么需要DNS?网络中的计算机使用IP地址进行标识,如果你想连接一台网络中的计算机,你必须知道它的IP地址。
然而记住一串点分二进制的表示是困难的,因为它们没有什么实际意义,因此在公开的网络中,服务器使用对外公开的域名进行标识。
DNS:Domain Name System域名系统将域名转换为IP地址。
DNS如何构建?DNS被设计成树状结构,就像这样:
Root根服务器:
TLS顶级域名服务器:
NS权威域名服务器:
另外还有本地DNS服务器,这个DNS服务器帮助主机对DNS进行查询,包括迭代查询和递归查询:
DNS如何使用?进行DNS查询非常简单,因为本地DNS服务器会帮助主机完成这个工作。
因此,本地DNS服务器可以收集用户访问网站的信息。
DNS缓存和Hosts文件DNS的安全问题DNS被要求一个快的速度,DNS解析的速度越快,那么浏览器访问网页的速度也就越快,因此DNS使用明文。这样DNS就会出现问题:受到恶意的DNS回复。现在的DNS系统使用DNS缓存和随机化的DNS端口和序列号。DNS本地攻击实验&&DNS远程攻击实验二、 实验步骤及结 ...
ARP毒化
一. ARP协议概述建议你先学习计算机网络以及ARP协议部分。
1. arp缓存查看你的主机arp缓存arp缓存表存储在主机的内存中。
对于Windows操作系统,你可以在终端中使用命令 arp -a 查看电脑的arp缓存表。
对于Linux操作系统,使用命令 arp 即可。
你的arp缓存表的内容一般来说,arp缓存只关心子网下其他主机。
对于路由器下的子网,arp缓存其他主机的MAC地址为路由器(网关)的MAC地址,因为主机访问其他主机的下一跳是路由器。
对于交换机下的子网,arp缓存其他主机的真实MAC地址。
当你访问子网外的IP地址时,MAC地址默认为网关地址。
2. arp报文你可以使用python的scapy库写一个arp请求函数,这非常简单。
def arp(ipy):
dst_ip_list = IPY(ipy)
alive_ip_list = []
for dst_ip in dst_ip_list:
pkt = ARP(pdst=str(dst_ip))
# pkt.show()
an ...
DHCP安全性分析
一. DHCP协议概述1. 上网配置信息计算机在连入WIFI后,需要获取网络配置信息才能正常上网,这些信息包括以下:
主机IP地址
子网掩码
网关IP地址
DNS服务器IP地址
2. DHCP报文当你连入WIFI之前,使用Warshark对进行抓包,可以捕获到到以下DHCP报文:
DISCOVER
OFFER
REQUEST
ACK
如果你已经接入WIFI,你可以在终端输入命令 ipconfig release 释放你已经获取的网络配置信息。重新接入WIFI。
如果你只是单纯断开WIFI,那么原来的网络配置信息并不会清空。相比正常的DHCP交互缺少 DISCOVER 和 OFFER 报文。
二. DHCP饿死攻击1. 概述DHCP服务器根据DHCP报文中提供的MAC地址分发IP地址。
因此,使用主机伪造DHCP报文中的MAC地址,耗尽DHCP能够分配的IP地址,那么正常连接网络的主机将不能够接入网络,攻击完成。
2. 试试?环境Windows7(虚拟机);Ubuntu20.04(虚拟机)
下载Yersiniasudo apt install yersinia
打开Yersin ...
网络扫描
网络扫描通过网络扫描,可以获取网段内存活的主机以及其开放的端口,更加深入的扫描则能够探测主机的操作系统,配置,安装的软件等。
主机发现在网络中发现主机有很多方法,如果在局域网内使用arp协议可以轻易的发现存活的kv主机,如果在不同的网段使用ICMP协议也可以尝试和主机取得联系,TCP和UDP协议同样可以
ARP协议探测ARP协议通过向局域网广播的方式将同网段主机IP地址解析为MAC地址。
在一个路由器下的局域网内,如果对某个IP发起ARP请求,如果这个IP通过路由器上网,那么路由器肯定有这个主机的MAC地址,因此广播到路由器时会受到主机的IP地址;如果不存在这个IP,那么将没有MAC地址的回复。根据是否受到MAC地址,就可以判断局域网内的这个主机是否存活。
def arp(ipy):
dst_ip_list = IPY(ipy)
alive_ip_list = []
for dst_ip in dst_ip_list:
pkt = ARP(pdst=str(dst_ip))
ans = sr1(pkt, timeout=1, v ...
微博爬虫实例
你需要先了解…
关于此文章…
一. 帖子懒得写,贴个源码。爬不了的话,传入你的cookie
import requests # 网络请求
import random # 与time控制网络请求频率
import time # 与random控制网络请求频率
import json # 响应的json数据分析
from tqdm import tqdm # 进度条
# 由此函数完成 请求-响应解析 的过程
# 接收评论json文件的url,解析json文件并返回评论信息字典(max,total_number,max_id,max_id_type,commentlist[])
def getCommentTnfo(commenturl):
# 请求评论json文件
# print(commenturl)
headers = {
"cookie": "",
'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; ...
子域名爬虫
子域名爬虫百度百度子域名搜索语法:domain:xxx.com
百度将子域名存在于 div 标签的 mu 属性中,你可以通过 class=”result c-container xpath-log new-pmd” 找到这个 div 标签。
# 定义一个采用baidu搜索的方法
def baidu_search():
print("Powered by baidu...")
domain = input("input the domain you want to query:")
page = int(input("The more page,the more subdomain(not sure):"))
if page < 1 or page > 100:
exit(418)
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win6 ...