A hash függvény egy függvénytípus általános kifejezése. Ennek a függvénytípusnak a bemenete tetszőleges bináris adat, a kimenet pedig egy fix hosszúságú bináris adat, ez a függvénytípus a következő jellemzőkkel rendelkezik:
Egyirányúság: A bemenetből származó kimenet kiszámítása egyszerű és gyors, de matematikailag nem megvalósítható a kimenetből származó bemenet levezetése
Ütközési korlátok: Rendkívül nehéz két különböző bemenetet találni azonos kimenettel
Az ezeknek a jellemzőknek megfelelő függvények hash függvényeknek nevezhetők. Használjon egy bizonyos adatot a hash függvény bemeneteként a kimenet kiszámításához. Ezt a kimenetet szokás az adatok hash értékének nevezni. A
hash függvény egyik fő funkciója a jelszó biztonságos tárolása nem közvetlenül menti el a jelszót (vagyis nem tárolja a jelszót egyszerű szövegben), hanem a jelszó hash értékét az ellenőrzés során csak a bevitt jelszót kell újra kiszámítani. Hasonlítsa össze a hash értéket a mentett jelszó hash értékével, hogy megtudja, hogy a jelszó helyes-e. A hash függvény egyirányú jellege és az ütközési korlátok jellemzői miatt a támadó nehéz tudni magát a jelszót, még akkor is, ha megkapja a jelszó hash értékét.
A támadó megkapta a jelszó hash értékét, tényleg nem lehet tudni magát a jelszót? Természetesen nem, bár matematikailag nem kivitelezhető közvetlenül kiszámítani a jelszót a jelszó hash értékéből, tudjuk, hogy a hash függvény egyszerű és gyors a bemenetből származó kimenet kiszámításához. A legrosszabb esetben csak az emberek beállíthatnak jelszavakat, próbáld ki egyenként, ha szerencséd van, akkor is kipróbálhatod. A hash értéknek megfelelő bemenet folyamatos megszerzésének műveletét robbantásnak nevezik.
Ezen ötlet alapján jött létre a hashcat. Állítólag a hashcat azért született, hogy bebizonyítsa, hogy a hash felrobbantása nagyon egyszerű dolog. A hashcat azt állítja, hogy a világ leggyorsabb hash-robbantó eszköze, és még a GPU-t és az FGPA-t is támogatja, ha van ilyen.
A hashcat nemcsak gyors, hanem több mint kétszáz hash függvényt is profi módon támogat, a parancsok segítségével:
hashcat - -help
láthatja a hashcat által támogatott összes hash függvény listáját, annyi, hogy nem teszem fel itt.
A hashcat alapértelmezés szerint telepítve van a Kali-ba, és közvetlenül használható. De a kalim a virtualboxba van telepítve, és mindig úgy érzem, hogy a virtuális gép lassabb, ezért szeretném használni a hashcatot a fizikai gazdagépben. Először keresse fel a hashchat hivatalos webhelyét a hashcat letöltéséhez. Jelenleg a legújabb verzió a v3.5.0, amely 2017.04.05-én jelent meg. A frissítés dátumából látható, hogy a hashchat tele van életerővel. Megkímélve a fordítás gondját, közvetlenül töltse le a bináris csomagot, ami mindössze 2,7 millió, ami nagyon kicsi a több tucat gigabytba kerülő játékokhoz képest.
A letöltés befejezése után pakolja ki a hashcatot, és látja:
Az ilyen fájlok 32 bites és 64 bites Linuxban és Windowsban futtatható fájlok, csak válasszon egyet a számítógép helyzetének megfelelően. A hashcat64.bin-t választottam, és a szépség kedvéért adok hozzá egy sort a ~ /. bashrc fájlba:
alias hashcat = ' hashcat64.bin '
Mentés után nyissa meg újra a virtuális terminált, hogy a ~ /. bashrc fájl érvényesüljön. Ily módon, bárhol is van, csak írja be a hashcat parancsot anélkül, hogy könyvtárakat váltana, vagy beírja a csúnya "64.bin"-t. az alábbi ábrán látható.
Nos, most elkezdhetjük robbantani a különféle hash-okat a hashcat segítségével.
Az MD5 legyen az egyik leghíresebb és legszélesebb körben használt hash függvény. Először használjon Pythont néhány MD5 érték generálására a robbantáshoz. A kód a következő:
import hashlib. jelszavak = [' 123123 ', ' bond007 ', ' xxxxxx ', ' *H@ & (NT*@BR#^ '] jelszóhoz a jelszavakban: MD5 = hashlib.MD5 () MD5.update (jelszó) print MD5.hexdigest ()
A fenti kód kiszámítja a négy karakterlánc hash értékét, és a kimeneti eredmény:
4297f44b13955235245b2497399d7a93 cbdb7e2b1ed566ceb796af2df07205a3 dad3a37aa9d50688b5157698acfd7aee d77db958c179bbffae04b2b908b75c26
Mentse el a kimenetet az MD5.hash fájlba, soronként egy hahs értékkel. Ezután használja a hashcat-t, hogy felrobbantsa ezeket a hash-értékeket. A parancs a következő:
hashcat -w 3 -a 0 -m 0 - -remove -o MD5.out MD5.hash wordlist.dic
A-w paraméter a működési módok megadására szolgál, négy, az alábbi táblázat szerint:
| N | Teljesítmény | Futásidő | Energiafogyasztás | Asztali hatás |
|---|---|---|---|---|
| 1 | alacsony | 2 ms | alacsony | minimális |
| 2 | alapértelmezett | 12 ms | gazdasági | észrevehető |
| 3 | magas | 96 ms | magas | nem reagál |
| 4 | rémálom | 480 ms | őrült | fejtelen |
A-a paraméter a támadási mód megadására szolgál, a 0 jelentése közvetlen és folyamatos, vagyis a jelszószótár felrobbantása, a-a ötféle értéke van, amint az az alábbi táblázatban látható:
| N | mód |
|---|---|
| 0 | egyenes |
| 1 | kombináció |
| 3 | Brute-force |
| 6 | Hibrid szólista + maszk |
| 7 | Hibrid maszk + szólista |
-m Felrobbantandó hash megadására szolgál Az érték hash függvénye, 0 azt jelenti, hogy a hash függvény MD5, és a többi érték a következő táblázatban látható:
| N | név | kategória |
|---|---|---|
| 0 | MD5 | nyers Hash |
| 300 | MySQL4.1/MySQL5 | Adatbázisszerver |
| 1000 | NTLM | Operációs rendszerek |
| 1800 | sha512crypt $6$, SHA512 (Unix) | Operációs rendszerek |
| 2611 | vBulletin < v3.8.5 | Fórumok, CMS, e-kereskedelem, keretrendszerek |
Ez a táblázat túl hosszú. Csak néhány hash függvényt mutatok be ebben a cikkben. A
paraméter – remove azt jelenti, hogy ha egy hash értéket sikeresen felrobbant, távolítsa el az értéket az MD5.hash-ból. A
paramétert-o egy fájlnév követi, jelezve, hol van mentve a robbantási eredmény.
Az utolsó két paraméter, az MD5.hash és a wordlist.dic a felrobbantandó hash érték és a jelszó szótár. A hash érték és a jelszó szótár egyaránt egy sorban van. Az MD5.hash tartalmát a Python kiszámította. Ha nincs kéznél megfelelő jelszószótár, használhatja a következő parancsot:
wget -O wordlist.dic https://samsclass.info/123/proj10/500_passwords.txt
下载一个。现在完事具备,按下回车,结果华丽地报错:(
clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR
Valószínűleg hiányzik valami futókörnyezet, ezért telepítse. Telepítettem összesen ezeket a dolgokat:
sudo apt-get install gcc make p7zip-full git lsb-core wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz cd opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25 sudo . /install.sh
Ha jó a hálózati sebesség, rövid időn belül telepítjük. Az első parancs hibát jelentett:
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 nem nem egy szimbolikus link /sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 nem nem a szimbolikus link
De úgy tűnik, ez nem befolyásolja semmit, csak hagyja figyelmen kívül. Ezek telepítése után nyomja meg ismét az Enter gombot, és futtassa az eredetileg hibajelző parancsot. Megállapította, hogy nem jelentettek újra hibát, és a végrehajtás egy szempillantás alatt befejeződött. A parancs végrehajtása után ellenőrizze az MD5.hash és az MD5.out fájlok tartalmát, és megállapítja, hogy csak egy hash maradt az MD5.hash-ban. Az MD5.out fájlba került. Három hash érték és eredeti értékeik az alábbi ábrán látható módon:
A Windows bejelentkezési jelszó hash értéke a SAM fájlban van mentve, a SAM a "security account manager" rövidítése. Általában a
C: \Windows\system32\config\SAM
SAM fájlt a Windows védi, és nem olvasható közvetlenül, és olyan eszközöket igényel, mint a SAMInside. Keressen egy Windows 7 virtuális gépet, hozzon létre egy új hashcat nevű rendszergazda felhasználót, és állítsa be a jelszót, töltse le és bontsa ki a saminside-t a Windows 7-ben, és futtassa rendszergazdai jogosultsággal, majd kattintson a Fájl- > Import Local Users vis Scheduler gombra, amint az alábbi képen látható:
Lehet, hogy a SAMInside "nem válaszol" után, de nem számít, várjon türelmesen néhány másodpercet, a SAMInside megfelel a várakozásoknak, és elolvasta a kívánt hash, amint az alábbi képen látható:
Válassza ki a "hashcat" felhasználót, akinek a jelszavát fel akarjuk robbantani, nyomja meg a Ctrl +5 gombot az NT-hash másolásához, majd térjen vissza az Ubuntuhoz, ahol a hashcat telepítve van, és használja a következő parancsot a másolt hash érték mentésére a win7.hash fájlba:
echo 356CEAE0C89FB65ED6D6AA7A445C4CE5 > win7.hash
NT-hash
hashcat -w 3 -a 0 -m 1000 - -remove -o win7.out win7.hash wordlist.dic
A végrehajtás egy idő után befejeződött, ellenőrizte a win7.out fájlt, és megállapította, hogy a robbantás sikeres volt. A felhasználó hashcat bejelentkezési jelszava rush2112:
werner@Yasser: ~ /hashcat$ cat win7.out 356ceae0c89fb65ed6d6aa7a445c4ce5: rush2112
A SAM fájl beszerzéséhez olvassa el a "Windows Hash Series 1 exportálása" című részt. Az alábbiakban rögzítettem a SAM fájl olvasásának folyamatát a Windows 7 virtuális gépben.
Ha fizikai gépről van szó, indítsa el a gépet a Win PE segítségével, és olvassa el a SAM fájlt a lemezen. Az enyém egy virtuális gép, és a virtuális lemezfájlokat a fájlrendszerbe szerelve olvashatom a virtuális lemezen lévő fájlokat. Az általam használt virtuális gép a VirtualBox, amit a vdfuse paranccsal lehet megtenni. Ha nincs vdfuse, először telepítenie kell a virtualbox-fuse-t:
sudo apt-get install virtualbox-fuse
Töltse le a virtualbox-fuse telepítőcsomagját is, és telepítse magának.
A telepítés befejezése után megjelenik a vdfuse parancs, amely elindíthatja a virtuális lemez leképezését és szerelését:
mkdir -p ~ /vmdisk sudo vdfuse -t vmdk -f Win7Pro32.vmdk ~ /vmdisk/
Ezt követően ellenőrizze a ~ /vmdisk könyvtárat, amely három fájlt tartalmaz: EntireDisk, Partition1 és Partition2, új könyvtár:
mkdir -p ~ /vmdisk_en mkdir -p ~ /vmdisk_1 mkdir -p ~ /vmdisk_2
Használja a mount parancsot az entire disk, a Partition1 és a Partition2 fájlok csatlakoztatásához:
sudo mount ~ /vmdisk/entire disk ~ /vmdisk_en sudo mount ~ /vmdisk/Partition1 ~ /vmdisk_1 sudo mount ~ /vmdisk/Partition2 ~ /vmdisk_2
Megállapítottam, hogy a teljes lemez rögzítése nem sikerült, a Partition1 tartalma nem az, amit akartam, a Partition2 fájl a Windows 7 virtuális gépben, pontosan azt, amit akartam. Másolja a cél SAM fájlunkat a vmdisk_fs-ből:
cp ~ /vmdisk_2/Windows/System32/config/SAM . /
Mellesleg másolja ki a rendszer fájlt is:
cp ~ /vmdisk_2/Windows/System32/config/SYSTEM . /
Nézze meg a SAM fájl tartalmát, amint az alábbi képen látható, nem egy sima szöveges fájl, hanem valóban a Windows stílusa,
Nos, bár sikeresen megnyitottuk a SAM fájlt, még mindig nem kaptuk meg a hash-t. Mit tegyünk, ha legközelebb módosítjuk? A SAM fájl tartalmának elemzésére csak eszközök segítségével lehet használni. Helyezze be a sam fájlt és a rendszerfájlt a kalibe, és futtassa a parancsot:
samdump2 -o sam.hash SYSTEM sam
Ezután nézze meg a sam.hash-t, és láthatja az egyes felhasználók bejelentkezési jelszavainak hash értékét is. A sam.hash fájl minden sora egy felhasználó, és az egyes sorok formátuma a következő:
Felhasználónév: RID:LM-hash érték: NTLM-hash érték
Vegye figyelembe, hogy ez a formátum a samdump2 parancs kimeneti formátuma, nem a "hash jelszó formátuma Windows alatt".
Először is rendelkeznie kell egy linux rendszert futtató számítógéppel. Ezt könnyű megmondani, csak egy virtuális gép. Ezután futtassa a következő parancsot egy új felhasználó hozzáadásához és egy jelszó beállításához a robbanáshoz:
sudo adduser justforfun
A felhasználó bejelentkezési jelszavának hash értéke a Linuxban a/etc/shadow fájlban van tárolva (megjegyzés: nem/etc/passwd), használja a következő parancsot az új felhasználó bejelentkezési jelszavának hash értékének megtekintéséhez:
test@test-VirtualBox: ~ $ sudo tail -n 1 /etc/shadow justforfun:$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:17373:0:99999:7:::
A tail parancs egy fájl utolsó néhány sorának olvasására szolgál, az alapértelmezett 10 sor, a sorok számát a-n paraméterrel adja meg. Az újonnan létrehozott felhasználó természetesen az utolsó sorban van, ezért a tail-n 1-et használjuk az olvasáshoz. Az olvasott eredmény az ":"-vel osztott adatok, az első rész a "justforfun" felhasználónév, a második rész a jelszó hash értéke, a többi részre nem kell törődni ebben a cikkben. A második részre összpontosítunk.
A-tól kezdődő "$6$" azt jelenti, hogy a használt hash függvény típusa SHA512. A "$6$" kivételével Linuxban a "$1$" az MD5-re, a "$2a$" a Blowfish-re, a "$2y$" pedig a Blowfish-re utal. (8 bites karakterek helyes kezelése), "$5$" Az SHA256-ra utal, részletekért lásd a Wikipédiát: passwd. Ezenkívül a/etc/login.defs fájl is leírja a hash algoritmust.
A "0fokwg59" rész, amely a "$6$" kezdetétől a következő "$" előtt kezdődik, só (só). Mi az a só? A Baidu tudja, hogy a CNB2009 válasza a " Mi az MD5 sóértéke " kérdésre egyszerű és könnyen érthető:
Egyszerűen fogalmazva, ez egy módja annak, hogy ugyanazt a jelszót különböző hash értékekkel rendelkezzen. Az eszköz a sózás. Maga az MD5 visszafordíthatatlan, de jelenleg számos adatbázis van az interneten, amely támogatja a fordított lekérdezést. Ha a felhasználói jelszó adatbázis véletlenül kiszivárog, a hackerek fordított lekérdezéssel megszerezhetik a felhasználói jelszót, vagy gyakrabban megjelenő hash kódokat használhatnak. az adatbázisban (azaz sokan használják) brute force feltöréshez (mert általában gyenge jelszó). A sóérték egy további véletlenszerű érték, amelyet a jelszó hash folyamata során adnak hozzá. Például az azonosítóm a 123456, és a jelszavam 123456. Ha az adatbázisban van tárolva, a "123456/epilepszia" karakterláncot hash, és a jelszó ellenőrzésekor a "(ellenőrzendő jelszó) /epilepszia ω invert④" karakterláncot is használják az ellenőrzéshez. Ily módon, ha van egy másik idióta jelszó 123456, akkor is különböző hash értékeket lehet létrehozni és sikeresen ellenőrizni. Jelenleg az azonosítómat só értékként használják a jelszó összetett hash végrehajtásához. Szóval.. A sóérték szerepe az adatbázis-szivárgás okozta veszteségek csökkentése. Ha nagyon jó az RP-d, és kitaláltad, hogy a jelszavam 123456, akkor nem tudom megállítani
Ez a válasz az MD5-re vonatkozik, és ugyanez vonatkozik a többi hash függvényre is. A só utáni rész a hash érték. Most másold le a teljes második részt a linux.hash fájlba, a linux.hash tartalma legyen:
$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0
Ezután robbantsa fel a linux bejelentkezési jelszó hash-ját a következő parancssal:
hashcat -w 3 -a 0 -m 1800 - -remove -o linux.out linux.hash wordlist.dic
Egy pillanat múlva befejeződött a robbantás, az eredmény megtekintése:
werner@Yasser: ~ /hashcat$ cat linux.out $6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:4321
Látható, hogy a robbantás sikeres volt.
Először is MySQL-nek kell lennie. Történt, hogy van a virtuális gépemben. A Baidu tudja, hogy a Mysql bejelentkezési jelszó hash értéke a user.MYD fájlban van mentve. Hol van a user.MYD fájl? Én sem tudom, csak keressem:
test@test-VirtualBox: ~ $ sudo find / -name user.MYD /var/lib/mysql/mysql/user.MYD
megtalálta, a/var/lib/mysql/mysql/user.MYD oldalon található, nézze meg a fájl tartalmát:
sudo cat /var/lib/mysql/mysql/user.MYD
nem sima szöveges fájl, és nem sok köze van. Még mindig látható, hogy a felhasználó root bejelentkezési jelszavának hash értéke:
6B825255FB466413D6B1B724644E23428C94BBCB
Mentse el ezt az értéket a mysql.hash fájlba, és használja a következő parancsot a mysql bejelentkezési jelszó hash felrobbantására:
hashcat -w 3 -a 0 -m {Egy pillanat múlva befejeződött a robbantás, az eredmény megtekintése:
werner@Yasser: ~ /hashcat$ cat mysql.out 6b825255fb466413d6b1b724644e23428c94bbcb: viperLátható, hogy a robbantás sikeres volt.
5. Robbantás Discuz! Fórum jelszó
Discuz! Ez egy jól ismert php fórum program Kínában, és széles körben használják. Most robbantsuk fel a Discuzt! A felhasználói jelszó hash értéke. Először meg kell találnod a hash értéket. Hol találom? Természetesen a Discuz-tól! az adatbázisban.
Discuz! Hol van az adatbázis? Így oldottam meg, töltsd le a Discuz legújabb verzióját a hivatalos honlapjáról! Forráskód, futtassa és telepítse, és megkapja a Discuz-t! Adatbázis
![]()
Discuz! Az alapértelmezett adatbázis neve ultrax, és a pre_ucenter_members táblázat a bejelentkezési jelszó hash értékét tárolja. A "pre_" az alapértelmezett előtag, amely a telepítés során módosítható, de az "ucenter_members" nem változik. Használja a következő sql utasítást a bejelentkezési jelszó hash értékének lekérdezéséhez:
select password,salt from pre_ucenter_members;
![]()
hash érték és só érték mentése fájlba:
echo 69bcba126b93c6f397983629a0f70553: c13fd9 > discuz.hashA hash érték és a só érték ugyanabban a sorban van, ":"-vel elosztva. Végül használja a következő parancsot a Discuz bejelentkezési jelszó hash felrobbantására:
hashcat -w 3 -a 0 -m 2611 - -remove -o discuz.out discuz.hash wordlist.dicEgy pillanat múlva befejeződött a robbantás, az eredmények megtekintése:
werner@Yasser: ~ /hashcat$ cat discuz.out 69bcba126b93c6f397983629a0f70553: c13fd9:winterLátható, hogy a robbantás sikeres volt.
6. Nagy szótár teszt
Eddig egy kis szótárat használunk, amely mindössze 500 szót tartalmaz, és minden alkalommal csak egy pillanatba telik, amíg sikeresen felrobbantjuk a különféle hash-okat nem gondolja furcsa? Ez azért van, mert szándékosan gyenge jelszót állítottam be a szótárban, hogy gyakoroljam a hashcat használatát, különben nem lenne rossz hangulat, ha nem tudná felrobbantani. A gyakorlatban nem lehet ilyen jó szerencse. Számítsuk ki véletlenszerűen egy kevésbé gyenge jelszó MD5 értékét, robbantsuk fel egy nagy szótárral, próbáljuk ki a szerencsét egyrészt, másrészt lássuk, milyen gyors lehet a hashcat.
Számítsa ki először az MD5 értéket:
import hashlib MD5 = hashlib.MD5 () MD5.update (" werner123456!!! ") print MD5.hexdigest ()A kimenet:
b17133f9abff287ed0546c1af2b171f7Ezután válasszon egy 10,5G méretű szótárat, amely 940 millió jelszót tartalmaz, és kezdje el robbantani:
hashcat -w 3 -a 0 -m 0 - -remove -o big.out b17133f9abff287ed0546c1af2b171f7 big.dicVegye figyelembe, hogy ha csak egy hash érték van, akkor nem kell elmenteni a fájlba, hanem közvetlenül a parancssori paraméterekbe írhatja. Lefekvés előtt elkezdtem robbantani, másnap felkeltem és megnéztem az eredményeket, és megállapítottam:
Kezdett: Szerda Júl 26 22:55:27 2017 Stopped: Wed Jul 26 23:02:28 2017Kiderült, hogy csak 7 percbe telt! Azt hittem, hogy 7 óra lesz, ami 60-szor gyorsabb, mint amire számítottam! Kicsit kár, hogy a hash értéket nem sikerült felrobbantani. Úgy tűnik, hogy a "werner123456!!!" nincs a jelszószótárban. Úgy tűnik, elő kell készítenem egy 100G-os jelszószótárat, de nagyon kényelmetlen egy ekkora szótárat menteni és átvinni. Nincs más mód? Természetesen van, emlékszel a támadási módra? Az "egyenes" módot használtuk. Ezután nézzük meg a többi módot.
7. Összefoglaló
A hashcat használatához a hash felrobbantásához az első lépés a hash megtalálása. A különböző rendszerek és szoftverek hash-tárolási helyei eltérőek, ezért pontosan meg kell találni a hash értéket. A második a hash típus helyes meghatározása, annak meghatározása, hogy a hashcat támogatja-e ezt a hash-t, és a megfelelő-m paraméter kiválasztása, különben szinte lehetetlen a siker; A harmadik az, hogy a jelszószótár jobb, ha végül sikerül-e felrobbantani, az a szótárból függ. Bár a nagyobb jelszótár nem annál jobb, a hashcat is híres a sebességéről, és a nagy szótár nem jelent problémát a hashcat számára. Itt van egy jobb szótár: Előző szivárgási kapu + gyakran használt gyenge jelszó szótár gyűjteménye.7Z , a dekompressziós jelszó: anywlan. Ezen túlmenően, ha sok kis szótárat gyűjt össze, egyesítheti, rendezheti és eltávolíthatja a kis szótárakat, hogy egy nagy szótárat kapjon a hashcat robbantáshoz. Ha a kis szótár ugyanabban a könyvtárban van, használjon egy parancsot:
cat * | sort | uniq > Merge.dicMi van, ha a kis szótárakat kategóriák szerint rendezik és többszintű könyvtárakban osztják el? Nyilvánvalóan nem működik csak a cat parancs használata, de valójában csak egy parancsra van szükség. Feltételezve, hogy a kis szótárak mind a MyDictionary könyvtárban vannak tárolva, a parancs így írható:
find . /MyDictionary -type f -exec cat {} \; | rendezés | uniq > Merge.dic