原以为Linux下读取Windows注册表是个异想天开、无法实现的想法,但这篇文章的作者就把他给实现了。想知道作者是如何实现的?那就继续往下读吧!

Linux系统中使用curl命令时,偶尔会遇到一些URL跳转到新的URL,即HTTP中的3XXredirection,重定向,如HTTP
302
)。

作为 Linuxer,必须具备一定的 CLI 操作能力。有时候用 CLI 会比用 GUI
会更方便快捷。

为了在linux下能够解读注册表文件,需要几个小工具:首先是一个Pascal语言写的dumphive,负责将windows注册表文件转换为文本格式;另外还需要Win32-Registry-File-1.10,这是一个用perl语言写的,分析、读取注册表的工具,同时Win32-Registry-File-1.10还依赖另外一个perl工具Tie-IxHash-1.22。

$curl -s -I $URL > log

以下列出我所知道的一些常用CLI软件,仅供参考。

dumphive的下载地址为

这时在返回的报文中,有Location字段标明了新的URL。

1、中文终端。

Win32-Registry-File-1.10下载地址为

$cat log 
HTTP/1.1 302 Found 
Expires: -1 
Cache-Control: private, max-age=0
Pragma: no-cache 
Location: http://182.118.2.11/youku/5571865A52945820CFCE162719/03000811074CDDB614769602996C24421AE8D8-C2A3-1BD9-74AC-F5B071A94E33.MP4 
Content-type: text/html 
Connection: close 
Date: Tue, 05 Apr 2011 08:37:07 GMT 
Server: F_LIGHTY_TJ8

据我所知,目前主要有两个解决方案:zhcon和fbterm。两个我都用过,zhcon较长时间不更新了,问题比较多。不小心加错参数,甚至可能会导致死机。所以我推荐fbterm,这个还是很不错的,要使用的话,必须开启framebuffer。虽然某些方面也有些瑕疵,不过就目前而言,应该算是一个比较好用的中文终端了。有人可能会问:“中文输入怎么解决?”嘿嘿,这个倒不用担心。比较简陋的有fbterm_ucimf,另外还有基于ibus的ibus-fbterm可供选择。

Tie-IxHash-1.22下载地址为

当我试图获取这个新的URL,再进行curl时,总是报HTTP 400 (Bad
Request,错误的请求)。

2、多窗口管理神器:tmux

在正式开始工作前,先要将工具软件安装好,首先解压缩dumphive包,由于它是由Pascal语言写出的,所以要下载free
Pascal的编译器,在Ubuntu下,用apt-get install
fpc即可,然后进入src目录下,直接make就可以获得dumphive可执行程序了。再安装Win32-Registry-File-1.10和Tie-IxHash-1.22,这两个perl程序的安装方法类似,先解压,在运行perl
MakeFile.pl 生成makfile,再运行make,最后make install

$URL=`cat log | grep '^Location' | cut -f2 -d ' ' ` 
$curl -s -I $URL > log 
$cat log 
HTTP/1.1 400 Bad Request
Content-Type: text/html 
Content-Length: 349 
Connection: close 
Date: Tue, 05 Apr 2011 08:32:04 GMT 
Server: YOUKU.ZZ

功能和screen差不多,不过我感觉tmux更加强大、友好!可以横着切、竖着切窗口。让你充分利用你的屏幕!实乃远程管理、多任务控之必备神器啊!具体介绍请猛击这里围观。

真正的工作就可以开始了

直接将新的URL打印出来,复制粘贴再curl,却没有问题 。

3、文件管理器:vim

1.
首先将windows所在分区挂载到/mnt/目录上,如果挂载不了,需要下载并安装ntfsprogs)

$curl -s -I http://182.118.2.11/youku/5571865A52945820CFCE162719/03000811074CDDB614769602996C24421AE8D8-C2A3-1BD9-74AC-F5B071A94E33.MP4 
HTTP/1.1 200 OK 
Content-Type: video/MP4 
Accept-Ranges: bytes 
ETag: "392853628"
Last-Modified: Fri, 12 Nov 2010 21:48:23 GMT 
Content-Length: 19971197 
Connection: close 
Date: Tue, 05 Apr 2011 08:41:18 GMT 
Server: YOUKU.ZZ

风格的可以选ranger,另外还有mc之类的。

  1. cp /mnt/WINDOWS/system32/config/SYSTEM /tmp/system
    将注册表文件拷贝到tmp目录下

  2. dumphive /tmp/system /tmp/system.reg 将注册表文件转换为文本格式

  3. 再编写一个test.pl脚本 ,比如:

    use Win32::Registry::File;
    $reg = new Win32::Registry::File();
    $reg->open(‘system.reg’);
    use Data::Dumper;
    print Dumper($reg->get([‘system\ControlSet001\Control’]));

百思不得其解!

4、任务管理器:htop

然后perl
test.pl就可以看的ControlSet001\Control下的结构了。注意这里的get后的参数中的system,跟第2步时生成的文件名有关,如果将windows下的注册表文件拷贝成aaa,再用dumphive去转换,则生成的注册表文本文件都是以aaa开头的。当执行用cat
system.reg,后就可以明显的看出来。

最后。发现这个新的$URL中和“

这个可以理解为top的加强版。

另外Win7跟xp的注册表文件,在linux下解读出来还是有很大差异的,每一个字段前都有一个类似UUID的值。

$echo $URL > url_1 
$echo http://182.118.2.11/youku/5571865A52945820CFCE162719/03000811074CDDB614769602996C24421AE8D8-C2A3-1BD9-74AC-F5B071A94E33.MP4 > url_2 
$hexdump url_1
0000000 7468 7074 2f3a 312f 3238 312e 3831 322e
0000010 312e 2f31 6f79 6b75 2f75 3935 3337 4538
0000020 3244 4637 3335 3834 3831 4239 4144 4336
0000030 4533 3941 302f 3033 3030 3138 3031 3437
0000040 4443 4244 3136 3734 3936 3036 3932 3639
0000050 3243 3434 3132 4541 4438 2d38 3243 3341
0000060 312d 4442 2d39 3437 4341 462d 4235 3730
0000070 4131 3439 3345 2e33 706d 0d34 000a


$hexdump url_2
0000000 7468 7074 2f3a 312f 3238 312e 3831 322e
0000010 312e 2f31 6f79 6b75 2f75 3935 3337 4538
0000020 3244 4637 3335 3834 3831 4239 4144 4336
0000030 4533 3941 302f 3033 3030 3138 3031 3437
0000040 4443 4244 3136 3734 3936 3036 3932 3639
0000050 3243 3434 3132 4541 4438 2d38 3243 3341
0000060 312d 4442 2d39 3437 4341 462d 4235 3730
0000070 4131 3439 3345 2e33 706d 0a34

5、音乐播放器:moc

Linux 下读取 Windows 的 注册表
是个异想天开、无法实现的想法,但这篇文章的作者就把他给实现了。想知道作者是如何实现的?那就…

去掉这个换行符,一切OK

这个用来播放mp3,wma,flac等常见音频文件还是不错的,但是不支持ape和cue。如果这类文件比较多的,那就只能另寻他方了。cmus也不支持ape。

URL=`cat log | grep '^Location' | cut -f2 -d ' ' |sed 's/\r//' ` 
Been dazed and confused for so long

6、视频播放器:mplayer

系统中使用curl命令时,偶尔会遇到一些URL跳转到新的URL,即HTTP中的3XXredirection,重定向,如
HTTP 302 )。 $curl -s -I $URL log 这时在返回的…

说这个之前,我想咆哮几句:

是谁说Linux终端下只能用字符方式看视频啊!!!!

是谁说在终端下看视频纯属找虐啊!!!!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注