Windows下读取Linux分区的免费工具——WinAllFS http://www.lirui.name/post/63.html

Windows下读取Linux分区的免费工具——WinAllFS

得找本皇历看看,最近严重不顺 ing。过了一个有喜有悲的周末,由于以替补身份在最后关头成功进入由 大山率领的 沿河城--镇边城1日穿越 ,结果周五在超市买东西一激动把手机扔地上了。摩托罗拉的破手机真不经摔,上一个诺基亚手机被摔了无数次就是不坏。这个破 V3X 才用了一个月,仅仅摔了三次就无法开机了……

拉练回来后感觉精神很好,被堵在山谷里面强制接受大雨和冰雹的洗礼。路上居然还看见了近郊看不到的野生小獾子,被一群极其没有爱心的驴友抱着照相机一路追到洞里,可怜的小家伙在洞里瑟瑟发抖的时候洞口还有四个相机不停的拍……。

走山大哥拍的照片
其他照片

周日在家里犯懒,找个舒服的姿势欣赏 CSI ,系统提示更新需要重新启动。没想到点了确认以后就再也没有办法进入系统了。

真是流年不利,喝凉水塞牙。去中关村看了看,人家说有坏道,修复要¥60,备份数据¥300。自己把硬盘抱回家找了个工具开始备份数据。

这个能在Windows下面读取Linux分区的工具叫 WinAllFS ,作者:阿凡提

软件主页: http://yjh.9966.org

软件下载地址: http://yjh.9966.org/download/WinAllFS.zip

http://yjh.9966.org/

我把硬盘装在USB硬盘盒里,接在本本上。启动软件等上一分钟左右,就能看见所有的分区了。目前支持从EXT3分区向外拷贝数据,但是不支持直接修改删除。而且对中文文件名支持不是很好,经常有无法复制的文件。速度到还可以接受,而且是个免费的绿色软件。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,您需要编写一个智能合约,其中包含注册和登录功能。以下是一个简单的示例: ```solidity pragma solidity ^0.8.0; contract Auth { struct User { bytes32 username; bytes32 password; } mapping(address => User) private users; function register(bytes32 _username, bytes32 _password) public { require(users[msg.sender].username == 0, "User already exists"); users[msg.sender] = User(_username, _password); } function login(bytes32 _username, bytes32 _password) public view returns (bool) { User storage user = users[msg.sender]; return user.username == _username && user.password == _password; } } ``` 在这个智能合约中,我们定义了一个 `User` 结构体,其中包含用户名和密码。我们使用一个映射将每个用户的地址映射到他们的用户信息。 `register` 函数允许用户注册,但要求该地址尚未注册。 `login` 函数允许用户通过提供他们的用户名和密码进行身份验证。 接下来,您需要使用 Web3.js 将此智能合约连接到您的 HTML 界面。以下是一个示例 HTML 页面: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Auth Example</title> <script src="https://cdn.jsdelivr.net/npm/web3@1.3.5/dist/web3.min.js"></script> <script src="./app.js"></script> </head> <body> <h1>Auth Example</h1> <div id="register"> <h2>Register</h2> <label for="reg-username">Username:</label> <input type="text" id="reg-username"> <br> <label for="reg-password">Password:</label> <input type="password" id="reg-password"> <br> <button onclick="register()">Register</button> </div> <div id="login"> <h2>Login</h2> <label for="login-username">Username:</label> <input type="text" id="login-username"> <br> <label for="login-password">Password:</label> <input type="password" id="login-password"> <br> <button onclick="login()">Login</button> </div> <div id="dashboard" style="display: none;"> <h2>Welcome!</h2> <p>You are logged in.</p> </div> </body> </html> ``` 在这个 HTML 页面中,我们有三个部分:注册、登录和仪表板。 注册和登录部分都包含用户名和密码字段以及相应的按钮。 仪表板部分是一个简单的欢迎消息。 最后,您需要编写一个 JavaScript 文件来处理注册、登录和页面跳转。以下是一个示例 JavaScript 文件: ```javascript window.addEventListener('load', async () => { if (window.ethereum) { window.web3 = new Web3(window.ethereum); await window.ethereum.enable(); } else if (window.web3) { window.web3 = new Web3(web3.currentProvider); } else { console.log('No web3 detected'); } const contractAddress = '0x1234567890123456789012345678901234567890'; // Replace with actual contract address const abi = []; // Replace with actual contract ABI const authContract = new web3.eth.Contract(abi, contractAddress); const register = async () => { const username = document.getElementById('reg-username').value; const password = document.getElementById('reg-password').value; const accounts = await web3.eth.getAccounts(); await authContract.methods.register(web3.utils.utf8ToHex(username), web3.utils.utf8ToHex(password)).send({from: accounts[0]}); }; const login = async () => { const username = document.getElementById('login-username').value; const password = document.getElementById('login-password').value; const accounts = await web3.eth.getAccounts(); const result = await authContract.methods.login(web3.utils.utf8ToHex(username), web3.utils.utf8ToHex(password)).call({from: accounts[0]}); if (result) { document.getElementById('register').style.display = 'none'; document.getElementById('login').style.display = 'none'; document.getElementById('dashboard').style.display = 'block'; } else { alert('Invalid username or password'); } }; }); ``` 在这个 JavaScript 文件中,我们首先检查用户的浏览器是否支持 Ethereum。 如果支持,我们将创建一个 Web3 实例,并启用用户的帐户访问。 接下来,我们将加载我们的智能合约并创建一个 `Auth` 实例。 `register` 和 `login` 函数将从 HTML 字段中获取用户名和密码,并调用相应的智能合约函数。如果登录成功,我们隐藏注册和登录部分,并显示仪表板部分。 这是一个非常简单的示例,您可能需要根据您的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值