记一次计算机学习-sdn实验室进入考核作业
自我介绍
姓名:胡智凯
学号:212006240
班级:计算机科学与技术3班
杂谈:在高考后迷茫的我迷迷糊糊的选择了计算机科学与技术这个专业,在这之前,我与计算机并无多大交集,无非是玩玩游戏,看看视频,聊聊天罢了,直到进入大学生活,第一次的python课,第一次的计算机导论,我才得以窥得计算机真正的含义,是无限的可能性和未来。在日常生活里我喜欢做些手工,学习上我喜欢新鲜的知识,正如我这次试图加入SDN实验室一样,我不了解这里是做什么的,我对计算机一无所知,对发布的任务一窍不通,甚至在截止前2天我才刚刚拿到我的电脑开始研究,希望这次勇敢的决定不会无果而终,希望我可以在过程中,在未来学到更多的知识,找到自己研究目标与方向。
Github与GitHub仓库
虚拟机 + ubuntu的安装
这里我直接使用了学校电脑同款的VMware进行安装。
相关组件的安装
tcpdump抓包与数据清洗
tcpdump抓包-1。
tcpdump抓包-2。
我的收获
1、学到了虚拟机及虚拟机系统的安装
2、一些组件的安装,tcpdump的简单使用
3、wireshark的简单操作。
4、python的简单编写。
5、提升了找资料分析资料的能力。
参考资料
Markdown的学习
方法/思路
通过吞吐量图可以看出每秒平均接收量,以及段长度。
I/O graphs可以看出每秒数据包接收数量,设定一个阈值超过则为高频率。
代码
1、wireshark:"tcp.len>=K"
“frame.time_delta<k”如果两个包接收时间小于k秒,则标记
2、python
import dpkt
import socket
def FindPcapWord(pcap,WordKey):
for timestamp,packet in pcap:
try:
eth = dpkt.ethernet.Ethernet(packet)
ip = eth.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
tcp = ip.data
http = dpkt.http.Request(tcp.data)
if(http.method == "GET"):
uri = http.uri.lower()
if WordKey in uri:
print("[+] 源地址: {} --> 目标地址: {} 检索到URL中存在 {}".format(src,dst,uri))
except Exception:
pass
def FindHivemind(pcap):
for timestamp,packet in pcap:
try:
eth = dpkt.ethernet.Ethernet(packet)
ip = eth.data
tcp = ip.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
sport = tcp.sport
dport = tcp.dport
# print("[+] 源地址: {}:{} --> 目标地址:{}:{}".format(src,sport,dst,dport))
if dport == 80 and dst == "125.39.247.226":
# 如果数据流中存在cmd等明文命令则说明可能存在后门
if '[cmd]# ' in tcp.data.lower():
print("[+] {}:{}".format(dst,dport))
except Exception:
pass
def FindDDosAttack(pcap):
pktCount = {}
for timestamp,packet in pcap:
try:
eth = dpkt.ethernet.Ethernet(packet)
ip = eth.data
tcp = ip.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
sport = tcp.sport
# 累计判断各个src地址对目标地址80端口访问次数
if dport == 80:
stream = src + ":" + dst
if pktCount.has_key(stream):
pktCount[stream] = pktCount[stream] + 1
else:
pktCount[stream] = 1
except Exception:
pass
for stream in pktCount:
pktSent = pktCount[stream]
# 如果超过设置的检测阈值500,则判断为DDOS攻击行为
if pktSent > 500:
src = stream.split(":")[0]
dst = stream.split(":")[1]
print("[+] 源地址: {} 攻击: {} 流量: {} pkts.".format(src,dst,str(pktSent)))
if __name__ == "__main__":
fp = open("F://1.pcap","rb")
pcap = dpkt.pcap.Reader(fp)
FindPcapWord(pcap,"wang.zip")
复制粘贴来的完全看不懂但应该可以用,没有时间去实践学习了,希望能在作业后弥补遗憾。
实现效果
wireshark
frame.time_delta<0.00001
困难问题与解决方法
在一开始安装虚拟机时,弹出了AMD-V未开启的错误提示,通过进入BIOS后进行设置解决
随之而来的问题是相关组件安装,在资料以及黄中天同学的帮助下完成
wireshark的认识和使用通过b站视频以及黄中天同学的帮助下明白基本操作
Markdown大概是最简单的一个问题,轻松通过b站视频解决
在后面我提出能否使用python来进行数据清洗,在这个过程中最麻烦的问题是pandas库的安装以及代码的学习以及越发紧张的时间
这次学习过程中最大的问题来自于对问题的茫然,在一无所知的前提下去学习解决问题的方案。
总结
在这次学习中遇到了很多的困难也接触到并且学到了很多计算机相关的知识,对于我来说最重要的大概就是极大增长了对计算机世界的见识以及寻找知识、自我学习的能力,在仅有2天的时间内完成对任务的了解和解答实在压力山大,但带来的收获已经足以令我感到兴奋,在这次挑战之后,我相信自己也可以在之后的计算机学习中保持热情与主动,努力攻克更多的难题。
python代码在最后的2小时找到,但已没有时间研究。
wireshark的分析相关方法在最后1小时找到同样没有时间研究分析。
本次作业实属遗憾,相见恨晚,操劳两天一夜只能做到这种程度,但后悔已经来不及,下次加油。