Python教程-Python取证与虚拟化 | 哈希函数
在本教程中,我们将学习如何使用Python进行取证科学,了解基本的Python取证应用、哈希函数、破解加密、可视化、命名约定、Dshell和Scapy,以及网络取证并详细解释它们。
介绍
收集和保留证据对于计算机设备上的网络取证调查和分析至关重要。在法庭上,这扮演着对付犯罪分子的重要角色。如今,技术使我们能够通过在浏览器上输入查询来获取信息。但它也吸引了网络罪犯。网络罪犯是那些通过使用自己的系统和互联网进行恶意活动的人。他们可以从其他地方获取您的所有信息。
Python具有广泛的应用,还提供了与数字取证一起工作的功能。通过使用它,我们可以收集数据,提取证据,甚至加密密码。它将帮助我们恢复证据的可靠性。
在进一步之前,您必须熟悉 Python 及其高级概念。
计算取证简介
计算取证是解决各种取证领域问题的一部分研究。它使用基于计算机的建模、分析、计算机模拟和识别。Python取证是由 Chet Homster 发明的。还有模式证据,例如指纹、鞋印、工具标记和任何文档。它使用了程序、对象和物质的范围。还有生理和行为模式,如数字证据、DNA 和犯罪现场。
我们还可以使用各种算法来处理信号和图像处理。通过使用算法,我们还可以处理数据挖掘、计算机图形、机器学习、计算机视觉数据可视化和统计模式识别等方面的问题。
简而言之,计算取证用于研究数字证据,计算取证处理各种类型的证据。
Python取证应用的命名约定
我们必须熟悉Python取证指南中的命名约定和模式。请考虑以下表格。
命名约定 | 示例 | |
---|---|---|
对象 | 以驼峰式命名为前缀 | ob_studentName |
本地变量 | 带可选下划线的驼峰式命名 | studentName |
常量 | 大写,用下划线分隔的单词 | STUDENT_NAME |
全局变量 | 以可选下划线开头的驼峰式命名 | my_studentName |
函数 | 带可选下划线的帕斯卡式命名; 主动语态 | MystudentName |
模块 | 以驼峰式命名为前缀 | _studentname |
类 | 以帕斯卡式类前缀命名; 保持它简洁 | class_MyStudentName |
哈希算法是将二进制数据流作为输入的最佳方法之一。在现实生活中,我们可以加密密码、文件,甚至任何类型的数字文件或数据。该算法接受一个输入并生成加密消息。让我们看看给定的示例。
示例
import sys,string,md5
print("Enter the name")
line=sys.stdin.readline()
line=line.rstrip()
md5_object=md5.new()
md5_object.update(line)
print(md5_object.hexdigest())
Python哈希函数
Python哈希函数用于将大量数据映射到固定值。一个输入返回相同的输出。它是一个哈希和存储具体信息的功能。一旦我们将数据映射到固定值,就无法恢复。这就是为什么我们也将其称为单向加密算法的原因。
让我们了解以下示例 -
示例 -
import hashlib
import uuid
def hash_pass(password):
s = uuid.uuid4().hex
return hashlib.sha256(s.encode() + password.encode()).hexdigest() + ':' + s
def verify_password(hashed_password, user_password):
password, s = hashed_password.split(':')
return password == hashlib.sha256(s.encode() + user_password.encode()).hexdigest()
new_password = input('Enter your password :')
hashed_password = hash_pass(new_password)
print('The hash string to store in the db is: ' + hashed_password)
输出:
Enter your password: sharma
The hash string to store in the db is: 947782bdb0c7a5ad642f1f26179b6aef2d9857427b45a09af4fce3b8f1346e91:8a8371941513482487e5ab8af2ae6466
在上面的示例中,我们首先创建一个随机的UUID(通用唯一标识符),然后使用SHA-256哈希算法对随机UUID和用户提供的密码进行哈希处理。哈希值和UUID被分开存储在数据库中,以便在验证密码时使用。
破解哈希
有时,需要破解密码哈希,这通常是因为忘记了密码。在破解密码哈希时,可以使用暴力破解或字典攻击等技术。这些技术尝试所有可能的密码组合,直到找到与哈希匹配的密码。
以下是一个用于破解哈希的简单示例:
import sys
def decryption(text,cipher):
simple_text=''
for each in cipher:
x = (ord(each)-text) % 126
if x < 32:
x+=95
simple_text += chr(x)
print(simple_text)
cipher_text = input('Enter the message: ')
for i in range(1,95,1):
decryption(i,cipher_text)
请注意,破解密码哈希是非法的,除非您有合法的授权来执行此操作,例如在合法的渗透测试中。否则,这违反了计算机犯罪法律。
Dshell和Scapy
Dshell和Scapy是两个用于网络取证的Python库。
Dshell是一个用于网络取证和监视的网络分析工具。它可以捕获网络流量,分析数据包,并生成有关网络活动的报告。Dshell还包括一组内置的插件,用于执行各种网络取证任务。
Scapy是一个用于数据包操作的强大Python库。它可以用于创建、发送、捕获和分析网络数据包。Scapy允许您以编程方式控制数据包的构造和解析,这对于网络取证非常有用。
以下是使用Scapy捕获和分析网络数据包的简单示例:
#Imports scapy and GeoIP toolkit
import scapy, GeoIP
from scapy import *
geoIp = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
def locatePackage(pkg):
# extracts the source IP address
source = pkg.getlayer(IP).src
# extracts the destination IP address
destination = pkg.getlayer(IP).dst
# gets Country details of source
srcCountry = geoIp.country_code_by_addr(source)
dstCountry = geoIp.country_code_by_addr(destination)
# gets country details of destination
print src+"("+sourceCountry+") >> "+destination+"("+destinationcountry+")\n"
Dshell和Scapy都是强大的工具,可用于进行网络取证调查和分析,帮助识别网络攻击和威胁。
结论
在计算取证领域,Python是一个强大的工具,可用于处理数字证据、哈希函数、破解哈希、可视化数据以及执行网络取证任务。了解如何使用Python进行这些操作将有助于进行成功的取证调查和分析。但请注意,在进行计算取证时必须遵守法律和道德规范,以确保合法性和合规性。