磁盘数据恢复软件开发计划

无用:pyfilesystem2 :不适合磁盘数据恢复

pip install  fs --trusted-host pypi.tuna.tsinghua.edu.cn

pyfilesystem2 doc pdf

有用的?

直接python读取磁盘例子

直接python读取磁盘例子

ntfs结构遍历例子: nneonneo/ntfsrecover

ntfsrecover.py

没啥用:PabloLec/RecoverPy: 仅仅在linux下可用,偷懒 的 搜索了linux的裸磁盘sda1

PabloLec/RecoverPy

PabloLec/RecoverPy: 看起来像是完整的磁盘数据恢复工具(python linux) , 但是由于以下取巧,导致没啥用
哎,grep -a -b 搜索目标字符串 /dev/sda1 这条命令在linux下估计是按二进制在裸磁盘sda1中目标字符串,但微软windows显然没法这么弄,所以作者说只支持linux 估计就是这原因,作者太取巧了 此项目也没啥用

Open Source Digital Forensics (数字取证)也得从裸磁盘做数据恢复,所以很像

Open Source Digital Forensics : autopsy 对比 sleuthkit

autopsy==sleuthkit+GUI

sleuthkit源码

autopsy源码

最终选择

选择 将 autopsy 改造为 磁盘数据恢复软件:

python代码增加逆向难度: Boris-code/jmpy

Boris-code/jmpy

nodejs 桌面应用 自带打包为exe,因此无需增加逆向难度

GUI

nodejs GUI
mimecorg/vuido

mimecorg/vuido

python GUI
hoffstadt/DearPyGui

hoffstadt/DearPyGui

参考

  1. 跨平台GUI库 ,注意这其中有些不成熟

autopsy

本文csdn链接

    1. autopsy == sleuthkit + java GUI (以netbeans为骨架?) + solr搜索 等各种库,甚至有用到testdisk,可以说是各种大杂烩
    1. sleuthkit == cpp 解析各种文件系统 等功能 + java包装(jni+java调用jni)

autopsy 整体上是java GUI项目,调用sleuthkit的java包装以实现磁盘能力

理论上,按照 Linux下autopsy安装手册 安装 autopsy后,
启动 autopsy GUI后
用netbeans打开autopsy的源码目录,应该可以用netbeans远程attach到autopsy GUI进程

但注意 autopsy GUI不是直接以java.exe启动的 而是以 autospy安装目录/platform/lib/nbexec 启动的,
注意同样有netbeans暗黄目录/platform/lib/nbexec

autopsy 安装、启动过程 (Ubuntu22.04x64)

参考: Linux下autopsy安装手册

0. 下载autopsy Linux 安装包

下载页面

或 autopsy github下载页面

autopsy-4.20.0.zip

mkdir app/autopsy-home/;   cd /app/autopsy-home/wget https://github.com/sleuthkit/autopsy/releases/download/autopsy-4.20.0/autopsy-4.20.0.zip
unzip autopsy-4.20.0.zipfile /app/autopsy-home/autopsy-4.20.0.zip 
#/app/autopsy-home/autopsy-4.20.0.zip: Zip archive data, at least v1.0 to extract, compression method=storels /app/autopsy-home/autopsy-4.20.0/
#autopsy  CoreTestLibs  etc      icon.ico  LICENSE-2.0.txt              NEWS.txt  README.txt            unix_setup.sh    
# bin      docs          harness  java      linux_macos_install_scripts  platform  Running_Linux_OSX.md

1. Installing Prerequisites (jdk8)

bash -x    /app/autopsy-home/autopsy-4.20.0/linux_macos_install_scripts/install_prereqs_ubuntu.sh#安装了bellsoft-java8-full, 据说是带了javaFX.     autopsy用的JAVA GUI即javaFX?
/usr/lib/jvm/bellsoft-java8-full-amd64/bin/javac  -version
#javac 1.8.0_372

2. Installing The Sleuth Kit

  1. 下载Sleuth Linux .deb安装包

sleuthkit github下载页面
sleuthkit-java_4.12.0-1_amd64.deb

cd /app/autopsy-home/
wget https://github.com/sleuthkit/sleuthkit/releases/download/sleuthkit-4.12.0/sleuthkit-java_4.12.0-1_amd64.debsudo apt update && sudo apt install /app/autopsy-home/sleuthkit-java_4.12.0-1_amd64.deb#安装结果
ldconfig -p  | grep tsk
#	libtsk_jni.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libtsk_jni.so.0
#	libtsk_jni.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libtsk_jni.so
#	libtsk.so.19 (libc6,x86-64) => /lib/x86_64-linux-gnu/libtsk.so.19
#	libtsk.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libtsk.so

3.Installing Autopsy

######sudo rm -fr ~/.autopsy/
/app/autopsy-4.20.0-install/linux_macos_install_scripts/install_application.sh -z   /app/autopsy-home/autopsy-4.20.0.zip -i /app/autopsy-home/ -j /usr/lib/jvm/bellsoft-java8-full-amd64/

4.启动autopsy

export JAVA_HOME=/usr/lib/jvm/bellsoft-java8-full-amd64/
export PATH=$JAVA_HOME/bin:$PATH
which java
#/usr/lib/jvm/bellsoft-java8-full-amd64//bin/java
sudo bash -x  /app/autopsy-home/autopsy-4.20.0/bin/autopsy 
#等同于以下命令:
sudo  /app/autopsy-home/autopsy-4.20.0/bin/../platform/lib/nbexec --jdkhome /usr/lib/jvm/bellsoft-java8-full-amd64/ --clusters /app/autopsy-home/autopsy-4.20.0/autopsy:/app/autopsy-home/autopsy-4.20.0/CoreTestLibs:/app/autopsy-home/autopsy-4.20.0/harness:/app/autopsy-home/autopsy-4.20.0/java: --userdir /root/.autopsy/dev --branding autopsy -J-Xms24m -J-Xmx4G -J-Xverify:none -J-XX:+UseG1GC -J-XX:+UseStringDeduplication -J-Dprism.order=sw    -J-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005    #有打印:
#SleuthkitJNI: loaded libtsk_jni
#说明找到了libSleuthkitJNI.so#正常启动#need:
chmod +x /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec

注意 :

可能要注意这几点
  1. 启动一个autopsy后 ,第二个autopsy肯定启动报错
  2. 同理,若启动了netbeans ,很可能autopsy也启动不了?
  3. Linux下 , 如果要选真磁盘(比如u盘), 启动autopsy必须 sudo /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec … ,否则没权限选择真磁盘
提前执行:
chmod +x /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec

提醒

autopsy启动了哪些进程? 3个nbexec、1个jvm
ps auxf 
#手工找到autopsy的进程们(3个nbexec、1个jvm),如下:
root       58819   |   \_ sudo /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec --jdkhome /usr/lib/jvm/bellsoft-java
root       58820   |       \_ sudo /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec --jdkhome /usr/lib/jvm/bellsoft-
root       58821   |           \_ /bin/sh /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec --jdkhome /usr/lib/jvm/be
root       58889   |               \_ /usr/lib/jvm/bellsoft-java8-full-amd64/bin/java -Djdk.home=/usr/lib/jvm/bellsoft-jps auxf | grep java  #这些进程的完成命令行如下:
root       58819   sudo /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec --jdkhome /usr/lib/jvm/bellsoft-java8-full-amd64/ --clusters /app/autopsy-home/autopsy-4.20.0/autopsy:/app/autopsy-home/autopsy-4.20.0/CoreTestLibs:/app/autopsy-home/autopsy-4.20.0/harness:/app/autopsy-home/autopsy-4.20.0/java: --userdir /home/zz/.autopsy/dev --branding autopsy -J-Xms24m -J-Xmx4G -J-Xverify:none -J-XX:+UseG1GC -J-XX:+UseStringDeduplication -J-Dprism.order=swroot       58820  sudo /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec --jdkhome /usr/lib/jvm/bellsoft-java8-full-amd64/ --clusters /app/autopsy-home/autopsy-4.20.0/autopsy:/app/autopsy-home/autopsy-4.20.0/CoreTestLibs:/app/autopsy-home/autopsy-4.20.0/harness:/app/autopsy-home/autopsy-4.20.0/java: --userdir /home/zz/.autopsy/dev --branding autopsy -J-Xms24m -J-Xmx4G -J-Xverify:none -J-XX:+UseG1GC -J-XX:+UseStringDeduplication -J-Dprism.order=swroot       58821    /bin/sh /app/autopsy-home/autopsy-4.20.0/platform/lib/nbexec --jdkhome /usr/lib/jvm/bellsoft-java8-full-amd64/ --clusters /app/autopsy-home/autopsy-4.20.0/autopsy:/app/autopsy-home/autopsy-4.20.0/CoreTestLibs:/app/autopsy-home/autopsy-4.20.0/harness:/app/autopsy-home/autopsy-4.20.0/java: --userdir /home/zz/.autopsy/dev --branding autopsy -J-Xms24m -J-Xmx4G -J-Xverify:none -J-XX:+UseG1GC -J-XX:+UseStringDeduplication -J-Dprism.order=swroot       58889   /usr/lib/jvm/bellsoft-java8-full-amd64/bin/java -Djdk.home=/usr/lib/jvm/bellsoft-java8-full-amd64 -classpath /app/autopsy-home/autopsy-4.20.0/platform/lib/boot.jar:/app/autopsy-home/autopsy-4.20.0/platform/lib/org-openide-modules.jar:/app/autopsy-home/autopsy-4.20.0/platform/lib/org-openide-util-lookup.jar:/app/autopsy-home/autopsy-4.20.0/platform/lib/org-openide-util-ui.jar:/app/autopsy-home/autopsy-4.20.0/platform/lib/org-openide-util.jar:/usr/lib/jvm/bellsoft-java8-full-amd64/lib/dt.jar:/usr/lib/jvm/bellsoft-java8-full-amd64/lib/tools.jar -Dnetbeans.dirs=/app/autopsy-home/autopsy-4.20.0/autopsy:/app/autopsy-home/autopsy-4.20.0/CoreTestLibs:/app/autopsy-home/autopsy-4.20.0/harness:/app/autopsy-home/autopsy-4.20.0/java: -Dnetbeans.home=/app/autopsy-home/autopsy-4.20.0/platform -Xms24m -Xmx4G -Xverify:none -XX:+UseG1GC -XX:+UseStringDeduplication -Dprism.order=sw -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/zz/.autopsy/dev/var/log/heapdump.hprof org.netbeans.Main --cachedir /home/zz/.autopsy/dev/var/cache --userdir /home/zz/.autopsy/dev --branding autopsy
#注意看此进程 是真java进程(jvm进程)
autopsy的jvm进程用的jar和so
autopsy的jvm进程pid
#autopsy的jvm进程命令行中有openide字符串 ,据此 找到autopsy的jvm进程id:  
for pid in `pidof java `; do grep openide  /proc/$pid/cmdline && autopsy_pid=$pid;  done
#比如,autopsy_pid 为 87542
autopsy的jvm进程用的jar

#autopsy的jvm进程用的jar
sudo lsof -p $autopsy_pid  | grep app |  grep ".jar"  |tr -s " "| cut -d" " -f 9 > ./autopsy_process_open_jars.txt
autopsy的jvm进程用的 so
#autopsy的jvm进程用的 so:   libtsk.so、libtsk_jni*.so 的完整路径
sudo lsof -p $autopsy_pid  | grep "\.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网协议Coap之C#基于Mozi的CoapClient调用解析

目录 前言 一、CoapClient相关类介绍 1、CoapClient类图 2、CoapClient的设计与实现 3、SendMessage解析 二、Client调用分析 1、创建CoapClient对象 2、实际发送请求 3、Server端请求响应 4、控制器寻址 总结 前言 在之前的博客内容中,关于在ASP.Net Co…

node.js 分布式锁看这篇就够用了

Redis SETNX 命令背后的原理探究 当然,让我们通过一个简单的例子,使用 Redis CLI(命令行界面)来模拟获取锁和释放锁的过程。 在此示例中 获取锁: # 首先,设置锁密钥的唯一值和过期时间(秒) 127.0.0.1:6379> SET …

数字三角形(很经典的动态规划问题)

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 73 88 1 02 7 4 4 4 5 2 6 …

OpenCV:绘制图像中mask的最小外接矩形

在计算机视觉和图像处理中,我们经常需要计算直线与外接矩形边的交点。这在进行边缘检测、图像分割、目标跟踪等任务时非常有用。本文将介绍如何使用OpenCV和NumPy计算直线与外接矩形边的交点,并展示如何在实际图像中绘制直线。 1.使用OpenCV读取图像 i…

第2章-神经网络的数学基础——python深度学习

第2章 神经网络的数学基础 2.1 初识神经网络 我们来看一个具体的神经网络示例,使用 Python 的 Keras 库 来学习手写数字分类。 我们这里要解决的问题是, 将手写数字的灰度图像(28 像素28 像素)划分到 10 个类别 中(0…

基于多种CNN模型在清华新闻语料分类效果上的对比

该实验项目目录如图: 1、 模型 1.1. TextCNN # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as npclass Config(object):"""配置参数"""def __init__(self, dataset, embedd…

java中如何使用Lambda表达式(一)

什么是Lambda表达式 Lambda 表达式(lambda expression)是一个匿名函数,基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个没有函数名的函数。Lambda表达式可以表…

【C++类与对象(上)】

C类与对象(上) 1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符4.2 封装 5.类的作用域6.类的实例化7.类的对象大小的计算7.1如何计算类对象的大小7.2 类对象的存储方式猜测7.3结构体内存对齐规则 8.类成员函数的this指针8.1…

Java多线程基础-18:线程安全的集合类与ConcurrentHashMap

Java标准库提供了很多集合类,但有一些集合类是线程不安全的,也就是说,在多线程环境下可能会出问题的。常用的ArrayList,LinkedList,HashMap,PriorityQueue等都是线程不安全的(Vector, Stack, Ha…

Android创建工程

语言选择Java,我用的Java 最小SDK:就是开发的APP支持的最小安卓版本 Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而…

关于ArcGIS的Update更新工具的疑问

Update更新工具官方帮助文件解释如下: 但是根据这个插图很让人疑惑,输入要素是蓝色,更新要素是黄色,输出要素为绿色,而且全部是绿色。我一直以为是与更新要素相交(被包含切割)的哪些输入要素都被…

【常用工具】7-Zip 解/压缩软件——基本使用方法

在实际日常工作或项目中,经常会遇到需要在window操作系统上压缩文件,在Linux操作系统上解压缩的场景,一款实用的压缩软件迫在眉睫,经过实际使用总结,7-Zip可以很好的解决很多压缩和解压缩问题,其基本使用方…

WordPress如何自定义日期和时间格式?附PHP日期和时间格式字符串

WordPress网站在很多地方都需要用到日期和时间,那么我们应该在哪里设置日期和时间呢?又如何自定义日期和时间格式呢?下面boke112百科就跟大家一起来学习一下PHP标准化的日期和时间格式字符串。 特别说明:格式字符是标准化的&#…

canvas绘制旋转的大风车

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

LCweekly-game

ExScorecomplete situation1220717/719(解答错误)30523/537(超时,弱智题已AC)40 有用的是Ex2和Ex4 Ex2 my solution class Solution { public://calculate xs l-time 幂乘int jiecheng(int x,int l){int zx;for(int i0;i<l;i){if(z>pow(10,4.5))return 0;zz*z;}return…

C#算法(11)—求三个点构成圆的圆心坐标和半径

前言 我们在上位机开发领域也经常会碰到根据三个点求出圆的圆形、半径等信息的场景,本文就是详细的介绍如何根据三个点使用C#代码求出三点构成的圆的圆心坐标、圆半径、三点构成的圆弧的角度。 1、3点求圆分析 A、B、C三个点都是圆上的坐标点,过向量AB做中垂线,过向量AC做…

What is `@Scheduled` does?

Scheduled 是Spring框架中用于定时任务调度的注解&#xff0c;它允许我们在类的方法上声明一个方法作为定时任务&#xff0c;由Spring容器统一管理和执行。使用此注解后&#xff0c;Spring会根据注解中的属性配置&#xff0c;按照指定的时间规则自动调用该方法。 public class…

文心一言 VS ChatGPT :谁是更好的选择?

前言 目前各种大模型、人工智能相关内容覆盖了朋友圈已经各种媒体平台&#xff0c;对于Ai目前来看只能说各有千秋。GPT的算法迭代是最先进的&#xff0c;但是它毕竟属于国外产品&#xff0c;有着网络限制、注册限制、会员费高昂等弊端&#xff0c;难以让国内用户享受。文心一言…

「优选算法刷题」:比特位计数

一、题目 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1…

ESP32 定时器和消息队列

简介 本章涉及知识点&#xff1a;ESP32通用定时器、日志输出&#xff0c;FreeRTOS消息队列。 实现功能&#xff1a;使用ESP32通用定时器实现每1S打印输出日志以及每1Min打印输出日志。 ESP-IDF版本&#xff1a;V5.1.2 源码 DesktopScreen 6 Timer&消息队列小智学长的源码&a…