Jednou z mnoha užitečných věcí, které můžeme s APT dělat, je vytvářet metabalíčky, což jsou v podstatě prázdné balíčky, které deklarují seznam dalších balíčků jako závislosti. Kali Linux obsahuje metabalíčky pro prolomení hesel, softwarově definované rádio, bezdrátové, webové aplikace a další, ale pokud máte specifické potřeby (jako většina lidí), je rychlé a snadné definovat své vlastní metabalíčky, které si ukážeme v tomto příspěvku.
Než začneme, musíme nainstalovat devscripts balíček, který obsahuje řadu nástrojů a utilit pro správu balíčků.
[email protected]:~# apt install devscripts
V Kali jsou všechny metabalíčky definovány ve vhodně pojmenovaném kali-meta balíček, abychom jej mohli naklonovat a upravit tak, aby vyhovoval našim potřebám.
[email protected]:~# git clone git://gitlab.com/kalilinux/packages/kali-meta
Cloning into 'kali-meta'...
remote: Counting objects: 998, done.
remote: Compressing objects: 100% (809/809), done.
remote: Total 998 (delta 365), reused 0 (delta 0)
Receiving objects: 100% (998/998), 179.90 KiB | 570.00 KiB/s, done.
Resolving deltas: 100% (365/365), done.
warning: remote HEAD refers to nonexistent ref, unable to checkout.
Výše uvedená zpráva „unable to checkout“ vypadá znepokojivě, ale znamená to pouze to, že je třeba nejprve zkontrolovat výchozí větev (kali/master), což lze provést následovně.
[email protected]:~# cd kali-meta/
[email protected]:~/kali-meta# git checkout kali/master
Branch 'kali/master' set up to track remote branch 'kali/master' from 'origin'.
Switched to a new branch 'kali/master'
[email protected]:~/kali-meta#
Chcete-li vytvořit nový metabalík (nebo aktualizovat stávající), musíme upravit debian/control soubor s informacemi o balíčku. Každý metabalík je pouze seznam závislostí balíčku oddělený čárkami, jako je ten pro kali-linux-gpu zobrazeno níže.
Package: kali-linux-gpu
Architecture: any
Depends: ${misc:Depends},
kali-linux,
oclhashcat [amd64 i386],
pyrit,
oclgausscrack [amd64 i386],
truecrack,
Náš nový metabalík se bude jmenovat „kali-linux-mytools“ a nainstaluje Vagrant, VirtualBox, LibreOffice a Chromium. Náš záznam pro tento metabalík v debian/control vypadá takto:
[email protected]:~/kali-meta# tail -n 14 debian/control
Package: kali-linux-mytools
Architecture: any
Depends: ${misc:Depends},
kali-linux,
virtualbox,
vagrant,
libreoffice,
chromium,
Description: My required Kali tools
This is Kali Linux, the most advanced penetration testing and security
auditing distribution.
.
This metapackage depends on the tools I install most often.
S novým definovaným metabalíkem musíme před vytvořením balíčku změnit číslo verze pomocí „dch“. Tím se spustí editor, do kterého zadáte podrobnosti o vašich změnách v debian/changelog .
[email protected]:~/kali-meta# dch --local dookie
[email protected]:~/kali-meta# head -n 5 debian/changelog
kali-meta (2018.3.2dookie1) UNRELEASED; urgency=medium
* Added kali-linux-mytools
-- dookie <[email protected]> Tue, 11 Sep 2018 09:40:10 -0600
Nakonec můžeme přistoupit k vytvoření nového balíčku pomocí příkazu ‚dpkg-buildpackage‘. Vzhledem k tomu, že metabalíčky jsou pouze seznamy závislostí, proces sestavení je velmi rychlý.
[email protected]:~/kali-meta# dpkg-buildpackage -us -uc -b
dpkg-buildpackage: info: source package kali-meta
dpkg-buildpackage: info: source version 2018.3.2dookie1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by dookie <[email protected]>
dpkg-buildpackage: info: host architecture amd64
...
dpkg-deb: building package 'kali-linux-pwtools' in '../kali-linux-pwtools_2018.3.2dookie1_amd64.deb'.
dpkg-deb: building package 'kali-linux-top10' in '../kali-linux-top10_2018.3.2dookie1_amd64.deb'.
dpkg-deb: building package 'kali-linux-mytools' in '../kali-linux-mytools_2018.3.2dookie1_amd64.deb'.
dpkg-genbuildinfo --build=binary
dpkg-genchanges --build=binary >../kali-meta_2018.3.2dookie1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source --after-build kali-meta
dpkg-buildpackage: info: binary-only upload (no source included)
Po dokončení sestavení lze náš nový metabalíček nainstalovat pomocí „apt“ jako jakýkoli jiný balíček.
[email protected]:~/kali-meta# apt install ../kali-linux-mytools_2018.3.2dookie1_amd64.deb
...
[email protected]:~/kali-meta# apt-cache policy vagrant virtualbox libreoffice chromium
vagrant:
Installed: 2.1.2+dfsg-1
Candidate: 2.1.2+dfsg-1
Version table:
*** 2.1.2+dfsg-1 500
500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status
virtualbox:
Installed: 5.2.18-dfsg-2
Candidate: 5.2.18-dfsg-2
Version table:
*** 5.2.18-dfsg-2 500
500 http://192.168.86.4/kali kali-rolling/contrib amd64 Packages
100 /var/lib/dpkg/status
libreoffice:
Installed: 1:6.1.1~rc1-2
Candidate: 1:6.1.1~rc1-2
Version table:
*** 1:6.1.1~rc1-2 500
500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status
chromium:
Installed: 68.0.3440.75-2
Candidate: 68.0.3440.75-2
Version table:
*** 68.0.3440.75-2 500
500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status
Stejně tak máme svůj vlastní metabalíček, který můžeme uložit na sdílené síťové kartě nebo na nějaké jiné místo, abychom mohli rychle nastavit a nakonfigurovat naše čerstvé instalace Kali Linuxu.