gzip: stdin: nie w formacie gzip

26

Kiedy biegnę:

tar -zxvf john-1.7.0.2.tar.gz

Rozumiem:

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

Powinien rozpocząć rozpakowywanie.

Niektórzy mówili mi, żebym nie używał, zale pojawia się ten sam błąd.

To plik, który pobrałem w ten sposób:

wget http://openwall.com/john/f/john-1.7.0.2.tar.gz
Zespół Red Fusion
źródło
4
john-1.7.0.2.tar.gz: HTML document, ASCII text, with very long lines
Wydany przez

Odpowiedzi:

25

Diagnozowanie pobranego pliku niewłaściwego typu

Jak mówi steeldriver , oznacza to, że plik tak naprawdę nie jest plikiem spakowanym gzipem - lub jakimkolwiek innym plikiem spakowanym gzipem - pomimo tego, że ma taką nazwę.

Podczas pobierania pliku wgetczęsto pojawiają się oznaki, że otrzymałeś inny rodzaj pliku niż to, czego szukałeś:

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]

W tym przypadku głównymi znakami są:

  • 301 Moved PermanentlyWiadomość, przekierowanie do adresu z oznaczeniami /. Spowoduje to załadowanie domyślnej strony dla jakiegoś katalogu na serwerze, który zwykle index.htmli prawie zawsze jest plikiem HTML.
  • Length: unspecified [text/html], informując, że otrzymujesz zwykły tekst ( text) i że ma on być interpretowany jako html. To naprawdę coś więcej niż znak - możesz być całkiem pewien, że nie otrzymałeś na podstawie tego prawdziwego pliku spakowanego gzipem.

Możesz także skorzystać z filenarzędzia, które sprawdza plik i informuje, jaki to plik:

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

I oczywiście można sprawdzić samemu plik za pomocą narzędzi takich jak head, lessoraz view:

ek@Io:~$ head john-1.7.0.2.tar.gz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>John the Ripper password cracker</TITLE>
<link href="/ubuntu//style.css" type="text/css" rel="stylesheet">
<META name="keywords" content="John the Ripper, password cracker, JtR, password checker, password recovery, password, cracker, crackers, cracking, crack, crypt, passwd, shadow, Unix, Linux, Windows, Win32, Mac OS X, Mac OSX, MacOS X, OS X, OSX, DOS, VMS, OpenVMS, hash, DES, MD5, Blowfish, Kerberos, AFS, LM, LanMan, LanManager, NT, 2000, XP, 2003, Vista, 7, NTLM, NTLMv1, MD4, Netscape LDAP, SHA, SSHA, MySQL, TGT, s/key, Eggdrop, Apache, apr1, SYSUAF, SYSUAF.DAT, AltiVec, MMX, SSE, SSE2, AVX, XOP, wordlist, wordlists, dictionary, brute force, decrypt, challenge, response, John, Ripper, john, jhon, jonh, jack, Jack the Ripper">
<META name="description" content="A fast password cracker for Unix, Windows, DOS, and OpenVMS, with support for Unix, Windows, and Kerberos AFS passwords, plus a lot more with contributed patches">
</HEAD>

<BODY bgcolor="#E0E0E0" text="black" link="blue" alink="red" vlink="navy">

Gdyby to był naprawdę plik binarny, dostałbyś całą masę bezsensownych śmieci, ponieważ jakikolwiek pager lub przeglądarka bezowocnie próbuje interpretować coś jako zwykły tekst, który tak naprawdę nie jest. Na przykład w poprawnym pliku:

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▒<d▒↓▒7▒H_-l▒7▒▒▒Z▒▒.m▒▒ʒ%F,▒۬▒*▒▒hrW▒cY▒▒
▒+▒O1▒-y>▒▒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▒<gyw͍▒9▒?▒,▒▒▒▒h&▒V"▒▒▒▒▒▒▒l▒▒3▒▒▒▒\▒▒i#▒▒综▒◄0▒▒▒.e♠>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▒▒ߪ▒▒▒▒▒▒▒▒▒▒_♠▒-▒

(Skopiowałem dopiero początek.)

Uzyskiwanie właściwego pliku

To mówi, jak dowiedzieć się, co poszło nie tak w tych sytuacjach (aw tym przypadku w szczególności). Ale jak znaleźć i pobrać właściwy plik?

Zależy to od sytuacji. Jednak dobrym początkiem jest:

  • Przejdź do oficjalnej strony oprogramowania i sprawdź, czy zawierają linki do pobrania. Nawet jeśli tak otrzymałeś link, którego pierwotnie używasz, jeśli minie trochę czasu, może się okazać, że link się zmienił.

    Na przykład w tym konkretnym przypadku bieżąca wersja to 1.8.0 zamiast 1.7.0.2 (i podana w jpodkatalogu zamiast f), a stara wersja nie jest już dostępna pod tym samym adresem URL.

  • Przejdź do strony, na którą zostałeś przekierowany podczas pobierania pliku. W tym przypadku jest to: http://www.openwall.com/john/

    Lub możesz nawet zbadać pobrany plik. (Lub otwórz go w przeglądarce internetowej).

Nastąpiło przekierowanie do głównej strony pobierania oprogramowania . Możesz pobrać w przeglądarce internetowej lub skopiować poprawny bieżący link do pobrania i pobrać go za pomocą wget. Istnieje kilka opcji, ale zakładając, że w rzeczywistości nie potrzebują tej konkretnej starą wersję ty próbujesz pobrać, a na podstawie pliku określonego ty zrobił próbę pobrania, podejrzewam http://openwall.com/john/j/ john-1.8.0.tar.gz jest tym, czego szukasz.

Oczywiście czytelnicy, którzy znajdą ten post później, mogą uznać, że ten link już nie działa. Ale przedstawione tutaj podejście do rozwiązywania tego rodzaju problemów pozostanie aktualne.

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]

Pobrałem plik. Zauważ, że tym razem nie nastąpiło żadne niepożądane przekierowanie, a typ jest podany jako application/x-tarzamiast text/html.

(Przekierowanie HTTP nie zawsze jest złe. Dzieje się tak, gdy przekierowuje Cię do czegoś, co nie wydaje się, że może to być plik, którego szukasz, co do którego możesz podejrzewać, że pobieranie się nie powiodło.)

file zgadza się:

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

I rozpakowuje się pomyślnie:

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

(Masz rację, że nie ma znaczenia, czy używasz z; nadal by działał tar xzf, ponieważ jest to właściwy plik).

Możesz przystąpić do budowania kodu źródłowego i instalacji.

Pamiętaj, że nie zawsze musisz budować ze źródła

Czasami naprawdę chcesz najnowszej wersji programu i nie ma go w repozytoriach Ubuntu. Możesz spróbować znaleźć umowę PPA, ale jeśli nie znajdziesz takiej, której tak naprawdę ufasz lub która zapewnia dokładnie to, czego chcesz, lub chcesz zbudować ją z niestandardowymi opcjami lub po prostu lubisz budować z kodu źródłowego, a następnie budować z kod źródłowy jest cenną i przydatną techniką.

Zalecam jednak sprawdzenie przynajmniej oprogramowania dostępnego w oficjalnych repozytoriach Ubuntu dla twojego systemu. W moim systemie 16.04:

ek@Io:~$ apt show john
Package: john
Version: 1.8.0-2
Priority: optional
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Ruben Molina <[email protected]>
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.

Istnieje kilka innych sposobów wyszukiwania pakietów. Często przydaje się korzystanie ze strony wyszukiwania pakietów Ubuntu .

Ponieważ miałeś zamiar zainstalować wersję 1.7.0.2, prawdopodobnie wersja 1.8.0 w oficjalnych repozytoriach jest dość aktualna. (Rzeczywiście, 1.8.0 wydaje się być tą samą wersją, co wersja przeznaczona do pobrania z oficjalnej strony internetowej.) Naprawdę możesz po prostu chcieć zainstalować to:

sudo apt update
sudo apt install john
Eliah Kagan
źródło