Posts
Veracrypt Electrum
2020-03-06-truecrypt/veracrypt加密解密electrum钱包方案 加密货币越来越普及,怎样保存钱包是一个大问题。
如果是小额的加密货币可以放在交易所里面,但是大额的货币还是放在钱包里面比较放心。
这篇文章里面以保存比特币最常用的钱包electrum为例,提供一个保存/加密/解密钱包的方案。
软件介绍 需要用到的软件有truecrypt或者veracrypt和electrum。这里分别介绍一下这两个软件。
TrueCrypt 是用来对整个硬盘或某个分区进行实时加密的工具。它具有非常高的知名度和用户使用量。2008年,老美的 FBI 拿到某个犯罪分子用 TrueCrypt 加密的数据,结果 FBI 里的一堆密码专家都无计可施(有兴趣的可以看这里报道)。
可惜truecrypt官网从2014年就不再更新了,因为truecrypt的开发团队一直保持匿名,外界无从得知项目停止开发的原因,但是他们官网上面挂出的公告信息非常诡异,外界普遍推测是受美国国安局(National Security Agency)胁迫才停止项目的,因为恐怖分子可能用truecrypt加密信息。(我觉得美国国安局应该把汽车禁掉,因为汽车是恐怖分子最常用的交通工具。对吧?)
幸好truecrypt的是开源软件, 所以我们有veracrypt这个替代品。VeraCrypt 是从 TrueCrypt 派生出来的开源项目,成立于2013年6月。其官网在https://veracrypt.fr/。
如果选择用truecrypt,不要用最新版,用7.1版本,因为最新版是官网发生变故之后发布的一个只能解密的不可靠版本。
如果选择用veracrypt, 直接是官网下载最新版即可。
再介绍一下electrum,这是比特币官方推荐的钱包之一。官网是https://electrum.org/。
加密 这里用veracrypt为例。假设你已经下载安装好了veracrypt和electrum。
第一步打开veracrypt, 长这样:
点create volume.
然后一路next:
这里点select file, 就是把生成的加密盘放在哪里。
保存的加密盘可以取一个误导性的名字,比如make-love.jpg, 或者fuck.avi, 三个代表.pdf之类的。
然后继续一路Next.
这里写加密盘的大小,因为electrum的钱包文件比较小,所以5MB够用了。
这里可以用密码,但是个人建议用文件密码,就是Use keyfiles,
选电脑上的一个文件做密码,注意要选jpg, avi,pdf这种不会变动内容的文件做密码。用文件密码的好处就是不用去记口令,只要记住是用哪个文件做密码就行了。如果你想要更安全,可以选多个文件作密码,但是你要确保你能记得住用了哪些文件来作密码产生加密盘。
千万不要忘记或者丢失你作密码用的文件!
千万不要忘记或者丢失你作密码用的文件!
千万不要忘记或者丢失你作密码用的文件!
继续Next, 到这里之后,随机移动鼠标来产生随机数来加密你的盘。等到你觉得足够随机了(一般那个蓝条走到一半就差不多行了。)就点Format.
出现这个提示就说明你的加密盘生成好了。你可以检查你前面选的保存位置,会多一个make-love.jpg文件,就是你的加密盘。
解密 解密就比较简单了,打开veracrypt
点击Select File
选择你的加密盘文件,比如我刚才保存的make-love.jpg.
点击Mount.
出现这个界面之后勾上Use keyfiles, 点击Keyfiles,跟上面一样选择你用来作密码的文件。
如果你是用truecrypt加密的,这里一定要选上Truecrypt Mode。
如果你是用truecrypt加密的,这里一定要选上Truecrypt Mode。
如果你是用truecrypt加密的,这里一定要选上Truecrypt Mode。
否则打不开加密盘。
点击OK
打开文件浏览器,你会发现多一个叫NO NAME的盘出来。
Posts
twitter视频下载
今天在twitter上面看到一个好玩的视频,我就想下载下来,结果折腾了几个小时。
首先看网页代码,视频那里是一个blob:
<video preload="none" playsinline="" aria-label="Embedded video" poster="https://pbs.twimg.com/ext_tw_video_thumb/1200926756321951745/pu/img/l-V1sNMeAZL5tcGN.jpg" src="blob:https://twitter.com/dd866381-2ada-4c2b-80af-9cec2a580039" style="width: 100%; height: 100%; position: absolute; background-color: black; top: 0%; left: 0%; transform: rotate(0deg) scale(1.005);"></video> 我google了一下,这是流媒体的格式,要下载的话需要找到对应的m3u8文件,就是在chrom浏览器的Network里面过滤m3u8. 看到一个https://video.twimg.com/ext_tw_video/1200926756321951745/pu/pl/460x258/Kuir9CTQnfaw-EWA.m3u8
Google说可以用youtube-dl下载,然后我先去下载这个玩意,因为还有同学说可以直接用ffmpeg转换格式。
等youtube-dl下载完了之后,我运行下面的命令:
./youtube-dl -f mp4 -o baby.mp4 https://video.twimg.com/ext_tw_video/1200926756321951745/pu/pl/460x258/Kuir9CTQnfaw-EWA.m3u8 结果提示需要ffmpeg或者avconv,尼玛还是得安装ffmpeg。
然后我就老实的brew install ffmpeg。完事之后。
运行:
./youtube-dl -f mp4 -o baby.mp4 https://video.twimg.com/ext_tw_video/1200926756321951745/pu/pl/460x258/Kuir9CTQnfaw-EWA.m3u8 结果卡在那儿不动弹。
我就试一下直接用ffmpeg转换:
ffmpeg -i 'https://video.twimg.com/ext_tw_video/1200926756321951745/pu/pl/460x258/Kuir9CTQnfaw-EWA.m3u8' -vcodec copy -acodec copy -absf aac_adtstoasc o.mp4 也是一样的,下到一半卡在那儿不动弹。
我就换了个思路,想先看看m3u8里面的内容,
wget https://video.twimg.com/ext_tw_video/1200926756321951745/pu/pl/460x258/Kuir9CTQnfaw-EWA.m3u8 cat Kuir9CTQnfaw-EWA.m3u8 结果是这样:
#EXTM3U #EXT-X-VERSION:6 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-TARGETDURATION:4 #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-ALLOW-CACHE:YES #EXTINF:3.
Posts
How to Read a Book
How to read a book abstract Read the whole thing! Major arguments and evidence matter more than details. Grasping the structure of the whole is more important than reading every word. Decide how much time you will spend! Real-world time is limited. If you know exactly how long you can actually spend on reading, you can plan how much time to devote to each item. Have a purpose and a strategy!
Posts
Elasticsearch Rest High Level Client
昨天折腾了一下Elasticsearch, 今天把过程记录下来免得忘记。
首先当然是安装,我用的mac, 所以安装很简单:
brew tap elastic/tap brew install elastic/tap/elasticsearch-full elasticsearch 搞定。
然后就是按照官方的教程, 用curl把这几个页面上(index, search, aggregations)的命令跑了一遍。 为了免得以后重新打命令,我把这个命令都放到一个reference.sh里面去了,想要跑哪一行,就把那个命令前面的#去掉,然后bash reference.sh就可以了。
最后还折腾了一下官方的Java REST Client 7.4, 其中有一个坑就是Maven Repository页面上写的是7.4.1,但是我在pom.xml里面用7.4.1死活编译不了,我还以为是因为我用了阿里云的maven源,里面没有更新,换成官方的源还是不行,我去官方的源上一看,到今天(2019-10-23)为止, 官方源上最新的版本是7.4.0,所以上面应该写7.4.0.
其它的就没什么了,先搞个project:
mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.laogongshuo.es -DartifactId=elasticsearch cd elasticsearch 然后把依赖关系加到pom.xml里面去:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.0</version> </dependency> </dependencies> 在src/main/java/com/laogongshuo/es/App.java里面撸一些代码:
package com.laogongshuo.es; import java.io.IOException; import org.apache.http.HttpHost; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.
Posts
Java Mnk
学习java最少必要知识
Java是由Sun Microsystems公司于1995年5月推出的一种跨平台的,面向对象的通用编程语言。
随着Java的发展,SUN给Java又分出了三个不同版本:
Java SE:Standard Edition
Java EE:Enterprise Edition
Java ME:Micro Edition
简单来说,Java SE就是标准版,包含标准的JVM和标准库,而Java EE是企业版,它只是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同。
Java ME就和Java SE不同,它是一个针对嵌入式设备的“瘦身版”,Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”。
毫无疑问,Java SE是整个Java平台的核心,而Java EE是进一步学习Web应用所必须的。我们熟悉的Spring等框架都是Java EE开源生态系统的一部分。不幸的是,Java ME从来没有真正流行起来,反而是Android开发成为了移动平台的标准之一,因此,没有特殊需求,不建议学习Java ME。
JDK:Java Development Kit
JRE:Java Runtime Environment
简单地说,JRE就是运行Java字节码的虚拟机。但是,如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具。
JSR规范:Java Specification Request
JCP组织:Java Community Process
为了保证Java语言的规范性,SUN公司搞了一个JSR规范,凡是想给Java平台加一个功能,比如说访问数据库的功能,大家要先创建一个JSR规范,定义好接口,这样,各个数据库厂商都按照规范写出Java驱动程序,开发者就不用担心自己写的数据库代码在MySQL上能跑,却不能跑在PostgreSQL上。
Java基础语法
一个 Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
大小写敏感:Java是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
主方法入口:所有的 Java 程序由 public static void main(String []args) 方法开始执行。