gzip:stdin:不是gzip格式

当我跑:

tar -zxvf john-1.7.0.2.tar.gz 

我明白了:

 gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 

它应该开始拆包。

有些人告诉我不要使用z但我得到了同样的错误。

这是我用这种方式下载的文件:

 wget http://openwall.com/john/f/john-1.7.0.2.tar.gz 

诊断错误类型的下载文件

正如steeldriver所说 ,这意味着该文件实际上并不是一个gzip压缩文件 – 或任何类型的gzip压缩文件 – 尽管它被命名为一个。

当您使用wget下载文件时,通常会有迹象表明您最终获得的文件与您查找的文件不同:

 ek@Io:~$ wget http://openwall.com/john/f/john-1.7.0.2.tar.gz --2017-01-28 23:57:33-- http://openwall.com/john/f/john-1.7.0.2.tar.gz Resolving openwall.com (openwall.com)... 195.42.179.197 Connecting to openwall.com (openwall.com)|195.42.179.197|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://www.openwall.com/john/ [following] --2017-01-28 23:57:40-- http://www.openwall.com/john/ Resolving www.openwall.com (www.openwall.com)... 195.42.179.202 Connecting to www.openwall.com (www.openwall.com)|195.42.179.202|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'john-1.7.0.2.tar.gz' john-1.7.0.2.tar.gz [ <=> ] 15.27K 3.61KB/s in 4.2s 2017-01-28 23:57:51 (3.61 KB/s) - 'john-1.7.0.2.tar.gz' saved [15633] 

在这种情况下,主要标志是:

  • 301 Moved Permanently消息,重定向到带尾随/的地址。 这会加载服务器上某个目录的默认页面,通常是index.html ,几乎总是HTML文件。
  • Length: unspecified [text/html] ,告诉您正在接收纯文本( text ),并且它旨在被解释为html 。 这不仅仅是一个标志 – 你可以非常肯定你没有得到一个基于此的真正的gzip压缩文件。

您还可以使用file实用程序,它检查文件并告诉您它看起来是什么类型的文件:

 ek@Io:~$ file john-1.7.0.2.tar.gz john-1.7.0.2.tar.gz: HTML document, ASCII text, with very long lines 

当然,您可以使用headlessview等工具自行检查文件:

 ek@Io:~$ head john-1.7.0.2.tar.gz    John the Ripper password cracker      

如果这真的是一个二进制文件,那么你就会得到一大堆毫无意义的垃圾,就像你使用的任何寻呼机或者查看器毫无结果地试图将某些东西解释为真正不是的纯文本一样。 例如,在正确的文件上:

 ek@Io:~$ head john-1.8.0.tar.gz WӦQ♥john-1.8.0.tar ▒▒kw▒ر&▒▒ٿ▒▒▒▒4E]|▒v▒NF▒d[▒n▒▒▒L&▒HB▒$▒ ▒df͚▒▒▒▒▒ꩪ▒7@▒▒▒9ӳf▒▒J▒m ▒ؗ▒u▒▒~,▒ї▒▒▒ˣ▒▒ӣ_▒▒▒▒C▒▒|▒▒▒▒▒şw▒v▒▒>▒|w▒▒▒}▒▒▒ί▒▒i9▒?7+▒gY7i▒$▒▒ʲ▒▒s?▒J'MV%▒rY4ur[▒4▒▒e▒▒.▒▒▒▒▒&/u▒-2▒W▒▒V▒▒!o▒0b▒▒▒♥▒|Q▒4▒▒▒&▒▒Y1Y▒F▒▒Iy▒▒▒▒$▒▒▒▒,▒]▒h▒▒8▒"▒▒M▒,Һ~(▒i▒4Y▒d▒QgQ▒*ۚf7yA▒.▒&i▒▒▒J▒yM?▒4I▒▒▒kYS▒▒:▒▒n▒C▒▒%▒▒▒v▒▒▒{[[tN▒9▒▒▒kA▒▒▒▒▒/[▒▒▒▒u▒▒▒z▒▒▒▒>▒▒5▒▒▒▒t▒t▒▒Y6Û<▒*/i▒i{K>▒,▒▒▒▒▒;9)▒Z.mJSeiLB▒▒▒▒▒j▒▒eQ緅▒_▒α▒Ŋ▒▒▒W▒▒▒▒▒_▒▒ˢ▒▒-q▒a▒▒▒▒▒▒$klt:▒▒rA▒M▒'F▒R▒▒▒▒Lo▒♥1z▒\▒↓X▒▒▒P"֕▒▒▒♦▒▒▒▒|▒▒▒▒▒▒1I▒o"'#|6e▒▒t▒Ц▒FVL▒▒S▒ޓ▒▒;▒x▒▒▒▒▒▒▒QVrr▒▒▒9O▒W7▒♠Og▒ ▒▒▒8▒▒/▒▒dm▒FG'▒'t2L▒▒&L▒Y:▒▒▒▒▒4▒rI<▒#▒+▒je▒▒▒>T9▒▒M▒XE-ʆ▒▒'n▒▒$↑▒m▒W▒▒w̕▒▒m▒n%▒|A_▒yGp↑D▒↓߻▒▒▒i▒▒}ӡH▒▒▒▒׍$$H▒▒&▒▒4▒▒▒Z-@♣▒*~▒▒▒ y6▒▒▒`▒v↓▒s▒+̱▒?▒1▒▒▒<▒>▒^▒▒Y#k▒ 7`N'▒o▒.&▒▒(▒Դ~AD▒"E◄' lq▒`▒▒`▒[▒9◄▒▒wzuK▒N▒▒Y▒▒%or▒▒)▒▒i↓▒▒▒l5.S▒޶r▒_*▒RO▒{▒$▒(▒▒▒▒C▒·▒▒׀f2ˊ[:▒▒▒,|ew▒▒▒Ag▒'▒▒▒H▒▒t▒{͓▒▒▒▒JH˭s▒)g▒ON▒▒eŚQ▒▒▒♠ s▒▒ߪ▒▒▒▒▒▒▒▒▒▒_♠▒-▒ 

(我只是复制了它的开头。)

获得正确的文件

这告诉你如何弄清楚在这些情况下出了什么问题(特别是在这种情况下)。 但是你如何找到并下载正确的文件呢?

这因情况而异。 但是,一个良好的开端是:

  • 转到该软件的官方网站,看看它们是否提供下载链接。 即使你是如何得到你最初使用的链接,如果过了一段时间你可能会发现链接已经改变。

    例如,在这种特殊情况下,当前版本是1.8.0而不是1.7.0.2(并在j子目录而不是f ),旧版本在同一URL上不再可用。

  • 转到下载文件时重定向到的页面。 在这种情况下,那是: http : //www.openwall.com/john/

    或者您甚至可以检查下载的文件。 (或者在Web浏览器中打开 。)

您被重定向到该软件的主下载页面 。 您可以在Web浏览器中下载,也可以复制正确的当前下载链接并使用wget下载。 有一些选择,但假设您实际上并不需要您尝试下载的特定旧版本,并且基于您尝试下载的特定文件,我怀疑http://openwall.com/john/j/ john-1.8.0.tar.gz正是你要找的。

当然,稍后发现这篇文章的读者可能会发现链接不再有效。 但是,此处演示的解决此类问题的方法仍然有效。

 ek@Io:~$ wget http://openwall.com/john/j/john-1.8.0.tar.gz --2017-01-29 00:16:19-- http://openwall.com/john/j/john-1.8.0.tar.gz Resolving openwall.com (openwall.com)... 195.42.179.197 Connecting to openwall.com (openwall.com)|195.42.179.197|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 5450412 (5.2M) [application/x-tar] Saving to: 'john-1.8.0.tar.gz' john-1.8.0.tar.gz 100%[================================================================================>] 5.20M 78.8KB/s in 26s 2017-01-29 00:16:47 (202 KB/s) - 'john-1.8.0.tar.gz' saved [5450412/5450412] 

我已经下载了这个文件。 请注意,这次没有发生意外的重定向,类型以application/x-tar而不是text/html

(HTTP重定向并不总是坏的。当你被重定向到一些看起来不像你正在寻找的文件时,你应该怀疑你的下载还没有真正成功。)

file同意:

 ek@Io:~$ file john-1.8.0.tar.gz john-1.8.0.tar.gz: gzip compressed data, was "john-1.8.0.tar", last modified: Thu May 30 04:19:35 2013, max compression, from Unix 

并成功解压缩:

 ek@Io:~$ tar xf john-1.8.0.tar.gz ek@Io:~$ cd john-1.8.0/ ek@Io:~/john-1.8.0$ ls -l total 12 drwxrwxr-x 2 ek ek 4096 Jan 29 00:22 doc lrwxrwxrwx 1 ek ek 10 May 29 2013 README -> doc/README drwxrwxr-x 2 ek ek 4096 Jan 29 00:22 run drwxrwxr-x 2 ek ek 4096 Jan 29 00:22 src 

(你是对的,如果你使用z无关紧要;它仍然适用于tar xzf ,因为这是正确的文件。)

您可以继续构建源代码并进行安装。

记住,你不必总是从源代码构建

有时你真的想要一个程序的最新版本,它不在Ubuntu的存储库中。 您可能会尝试找到PPA,但如果您没有找到任何您真正信任或提供您想要的东西,或者您想使用自定义选项构建它,或者您只是想从源代码构建,那么从源代码是一种有价值且有用的技术。

我建议至少检查Ubuntu官方存储库中为您的系统提供的软件。 在我的16.04系统上:

 ek@Io:~$ apt show john Package: john Version: 1.8.0-2 Priority: optional Section: admin Origin: Ubuntu Maintainer: Ubuntu Developers  Original-Maintainer: Ruben Molina  Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 452 kB Depends: libc6 (>= 2.14), john-data (= 1.8.0-2) Suggests: wordlist Homepage: http://www.openwall.com/john/ Supported: 5y Download-Size: 184 kB APT-Sources: http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages Description: active password cracking tool John the Ripper is a tool designed to help systems administrators to find weak (easy to guess or crack through brute force) passwords, and even automatically mail users warning them about it, if it is desired. . Besides several crypt(3) password hash types most commonly found on various Unix flavors, supported out of the box are Kerberos AFS and Windows NT/2000/XP/2003 LM hashes, plus several more with contributed patches. 

还有其他几种搜索包的方法。 使用Ubuntu软件包搜索网页通常很方便。

由于您打算尝试安装1.7.0.2版本,因此官方存储库中的1.8.0版本可能已经足够了。 (事实上​​,1.8.0似乎与从官方网站下载的版本相同。)所以你真的可能只想安装它:

 sudo apt update sudo apt install john