注:此篇博文不允许转载,详情,源码等,可以添加qq: 1254455173 私聊!
题目
wireshark验证软件是否加密
没有加密算法截获字符串
-
首先,运行程序,没有加密算法,运行程序,客户端向服务端发送字符串:计算机网络
-
其次,
- 用wireshark工具截获客户端数据包,如下:
- 将数据字符串保存到本地,用记事本打开,如下,
- 最后,结果分析:分析程序可知,本程序默认采用utf-8格式编码和解码,当用wireshark截获字符串数据包,用记事本打开数据包文件。根据记事本也是默认utf-8格式编码和解码,如果没有加密手段,就可以直接读取其中的内容:计算机网络。
有加密算法截获字符串
- 首先,补充加密和解密代码到程序中,重新运行程序,依然是客户端向服务端发送字符串:计算机网络
- 其次,
- 用wireshark工具截获客户端数据包,如下:
- 将数据字符串保存到本地,用记事本打开,如下,
-
最后,结果分析:分析程序可知,本程序默认采用utf-8格式编码和解码,当用wireshark截获字符串数据包,用记事本打开数据包文件。根据记事本也是默认utf-8格式编码和解码,如果没有加密手段,就可以直接读取其中的内容,可以发现这时读取的内容是乱码。所以成功验证了,这时我们已经添加了加密手段了,必须要用相应的解密手段才能读取出想要的内容!
-
下面再单独对此字符串,用解密算法进行解密,进一步验证,只有通过对应的解密算法才能,获得想要的字符串内容,如下程序:
def decrypt_string(message): # 解密函数
decode_result = ""
# 将message转换为list
message_list = message.split("|")
message_list.remove("") # 移除list中的空元素
for i in message_list:
type_ = i[:2]
char_number = int(i[2:])
# 按之前加的多余数据一步一步解码
if type_ == "00":
char_number = int(char_number / 2 - 13)
elif type_ == "01":
char_number = char_number + 23
elif type_ == "02":
char_number = char_number - 24
else:
char_number = char_number
decode_result += chr(char_number)
return decode_result
def main():
# wireshark 截取下来的字符串
msg = '0135722|0131616|0126403|0132570|0132453|'
# 解码函数进行解码
msg = decrypt_string(msg)
# 转为 UTF-8 格式输出字符串
print(msg)
main()
程序思想很简单,就是将tcp中解码函数单独拿出来,然后对记事本中的文本进行解密操作。
- 运行结果:
- 结果分析:可以看见成功将加密密文转换成了,想要的字符串,所以进一步验证了,加密手段是成功的