网站建设煊煊网,甘肃做网站找谁,服务好的企业做网站,高端品牌包包都有哪些用途#xff1a;个人学习笔记#xff0c;有所借鉴#xff0c;欢迎指正#xff01;
总结#xff1a; #xff08;1#xff09;使用python脚本Scapy库实现指定网卡的流量抓包分析 #xff08;2#xff09;使用python脚本Watchdog实现指定目录文件行为监控 #xff08;… 用途个人学习笔记有所借鉴欢迎指正
总结 1使用python脚本Scapy库实现指定网卡的流量抓包分析 2使用python脚本Watchdog实现指定目录文件行为监控 3兴趣拓展python脚本实现将文本信息隐写入图片图片效果不变 一、Python-蓝队项目-Scapy库完成网卡流量抓包分析 脚本简单功能对指定网卡(可指定端口)的流量进行抓包可拓展上传平台分析。 1、漏洞攻击-先监控流量发现攻击 预警流量监控
from scapy.all import *
def handelPacket(packet):print(packet.show())#可进一步对数据包分析监控恶意流量if __name__ __main__:# sniff(prnhandelPacket,count0) iface以太网适配器 以太网 5,# 显示网卡信息show_interfaces()sniff(filtertcp port 5000,ifaceSoftware Loopback Interface 1,prnhandelPacket, count0, store0)#iface参数填网卡名称或者网卡编号
2、详细解释参考blog.51cto.com/frytea/4224260 二、Python-蓝队项目-Watchdog文件行为监控 脚本功能监控指定的网站目录 如有新增、删除、修改、移动文件等就能捕获分析 1、文件分析-发现新出文件 将文件上传至平台分析文件监控
import sys,time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandlerclass FileEventHandler(FileSystemEventHandler):# def on_moved(self, event):# print(ffile moved from {event.src_path} to {event.dest_path}.)def on_created(self, event):print(ffile created:{event.src_path}.)#手动分析新增文件或上传平台分析......预警def on_deleted(self, event):print(ffile deleted:{event.src_path}.)# def on_modified(self, event):# print(ffile modified:{event.src_path}.)if __name__ __main__:src_path . #指定监控的目录 .是指当前脚本所在目录event_handler FileEventHandler()observer Observer()observer.schedule(event_handler, pathsrc_path, recursiveTrue)print(Monitoring started)observer.start()try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join() 三、Python-兴趣拓展-图片隐写技术 脚本功能可以将指定文本隐藏在图片当中并不影响图片效果也可以解码查看图片中的隐藏信息。 #!/usr/bin/env python3
#codingutf-8Encode png image via command-line.Usage:imageEncoding (-e|encode) originImage [text] [encodedImage]imageEncoding (-d|decode) encodedImageOptions:-h,--help 显示帮助菜单-e 加密-d 解密Example:imageEncoding -e coffee.png hello textOrFileToEncode encodedImage.pngimageEncoding -d encodedImage.pngfrom PIL import Image
from docopt import docopt
取得一个 PIL 图像并且更改所有值为偶数使最低有效位为 0def RGBAmakeImageEven(image):pixels list(image.getdata()) # 得到一个这样的列表 [(r,g,b,t),(r,g,b,t)...]evenPixels [(r11,g11,b11,t11) for [r,g,b,t] in pixels] # 更改所有值为偶数魔法般的移位evenImage Image.new(image.mode, image.size) # 创建一个相同大小的图片副本evenImage.putdata(evenPixels) # 把上面的像素放入到图片副本return evenImagedef RGBmakeImageEven(image):pixels list(image.getdata()) # 得到一个这样的列表 [(r,g,b,t),(r,g,b,t)...]evenPixels [(r11,g11,b11) for [r,g,b] in pixels] # 更改所有值为偶数魔法般的移位evenImage Image.new(image.mode, image.size) # 创建一个相同大小的图片副本evenImage.putdata(evenPixels) # 把上面的像素放入到图片副本return evenImage
内置函数 bin() 的替代返回固定长度的二进制字符串def constLenBin(int):binary 0*(8-(len(bin(int))-2))bin(int).replace(0b,) # 去掉 bin() 返回的二进制字符串中的 0b并在左边补足 0 直到字符串长度为 8return binary
将字符串编码到图片中def RGBAencodeDataInImage(image, data):evenImage RGBAmakeImageEven(image) # 获得最低有效位为 0 的图片副本binary .join(map(constLenBin,bytearray(data, utf-8))) # 将需要被隐藏的字符串转换成二进制字符串if len(binary) len(image.getdata()) * 4: # 如果不可能编码全部数据 抛出异常raise Exception(Error: Cant encode more than len(evenImage.getdata()) * 4 bits in this image. )encodedPixels [(rint(binary[index*40]),gint(binary[index*41]),bint(binary[index*42]),tint(binary[index*43])) if index*4 len(binary) else (r,g,b,t) for index,(r,g,b,t) in enumerate(list(evenImage.getdata()))] # 将 binary 中的二进制字符串信息编码进像素里encodedImage Image.new(evenImage.mode, evenImage.size) # 创建新图片以存放编码后的像素encodedImage.putdata(encodedPixels) # 添加编码后的数据return encodedImagedef RGBencodeDataInImage(image, data):evenImage RGBmakeImageEven(image) # 获得最低有效位为 0 的图片副本binary .join(map(constLenBin,bytearray(data, utf-8))) # 将需要被隐藏的字符串转换成二进制字符串if len(binary)%3 ! 0: # 将转换的比特流数据末位补零使其长度为3的倍数防止其在下面重新编码的过程中发生越界rema len(binary)%3binary binary(0*(3-rema))
# print(len(binary))if len(binary) len(image.getdata()) * 3: # 如果不可能编码全部数据 抛出异常raise Exception(Error: Cant encode more than len(evenImage.getdata()) * 3 bits in this image. )encodedPixels [(rint(binary[index*30]),gint(binary[index*31]),bint(binary[index*32])) if index*3 len(binary) else (r,g,b) for index, (r,g,b) in enumerate(list(evenImage.getdata()))] # 将 binary 中的二进制字符串信息编码进像素里encodedImage Image.new(evenImage.mode, evenImage.size) # 创建新图片以存放编码后的像素encodedImage.putdata(encodedPixels) # 添加编码后的数据return encodedImage
从二进制字符串转为 UTF-8 字符串def binaryToString(binary):index 0string []rec lambda x, i: x[2:8] (rec(x[8:], i-1) if i 1 else ) if x else # rec lambda x, i: x and (x[2:8] (i 1 and rec(x[8:], i-1) or )) or fun lambda x, i: x[i1:8] rec(x[8:], i-1)while index 1 len(binary):chartype binary[index:].index(0) # 存放字符所占字节数一个字节的字符会存为 0length chartype*8 if chartype else 8string.append(chr(int(fun(binary[index:indexlength],chartype),2)))index lengthreturn .join(string)
解码隐藏数据def RGBAdecodeImage(image):pixels list(image.getdata()) # 获得像素列表binary .join([str(int(r11!r))str(int(g11!g))str(int(b11!b))str(int(t11!t)) for (r,g,b,t) in pixels]) # 提取图片中所有最低有效位中的数据# 找到数据截止处的索引locationDoubleNull binary.find(0000000000000000)endIndex locationDoubleNull(8-(locationDoubleNull % 8)) if locationDoubleNull%8 ! 0 else locationDoubleNulldata binaryToString(binary[0:endIndex])return datadef RGBdecodeImage(image):pixels list(image.getdata()) # 获得像素列表binary .join([str(int(r11!r))str(int(g11!g))str(int(b11!b)) for (r,g,b) in pixels]) # 提取图片中所有最低有效位中的数据# 找到数据截止处的索引locationDoubleNull binary.find(0000000000000000)endIndex locationDoubleNull(8-(locationDoubleNull % 8)) if locationDoubleNull%8 ! 0 else locationDoubleNulldata binaryToString(binary[0:endIndex])return datadef isTextFile(path):if path.endswith(.txt):return Trueelif path.endswith(.m):return Trueelif path.endswith(.h):return Trueelif path.endswith(.c):return Trueelif path.endswith(.py):return Trueelse:return Falseif __name__ __main__:command-line interfacearguments docopt(__doc__)
# print(arguments)if arguments[-e] or arguments[encode]:if arguments[text] is None:arguments[text] 待加密的文本if arguments[encodedImage] is None:arguments[encodedImage] encodedImage.pngif isTextFile(arguments[text]):with open(arguments[text], rt) as f:arguments[text] f.read()print(载体图片:)print(arguments[originImage]\n)print(待加密密文:)print(arguments[text]\n)print(加密后图片:)print(arguments[encodedImage]\n)print(加密中……\n)im Image.open(arguments[originImage])if im.mode RGBA:RGBAencodeDataInImage(im, arguments[text]).save(arguments[encodedImage])# elif im.mode RGB:# RGBencodeDataInImage(im, arguments[text]).save(arguments[encodedImage])else:print(暂不支持此图片格式……)print(加密完成,密文为\narguments[text]\n)elif arguments[-d] or arguments[decode]:print(解密中……\n)im Image.open(arguments[encodedImage])if im.mode RGBA:print(解秘完成密文为\nRGBAdecodeImage(im)\n)# elif im.mode RGB:# print(解秘完成密文为\nRGBdecodeImage(im)\n)else:print(非法的图片格式……)