tags: Filtri_Linux CUT


L’esempio di file sul quale andremo a lavorare per gli esempi è il seguente:

nxc smb cicada.htb -u 'Guest' -p '' --rid-brute
SMB         10.129.231.149  445    CICADA-DC        [*] Windows Server 2022 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         10.129.231.149  445    CICADA-DC        [+] cicada.htb\Guest: 
SMB         10.129.231.149  445    CICADA-DC        498: CICADA\Enterprise Read-only Domain Controllers (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        500: CICADA\Administrator (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        501: CICADA\Guest (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        502: CICADA\krbtgt (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        512: CICADA\Domain Admins (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        513: CICADA\Domain Users (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        514: CICADA\Domain Guests (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        515: CICADA\Domain Computers (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        516: CICADA\Domain Controllers (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        517: CICADA\Cert Publishers (SidTypeAlias)
SMB         10.129.231.149  445    CICADA-DC        518: CICADA\Schema Admins (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        519: CICADA\Enterprise Admins (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        520: CICADA\Group Policy Creator Owners (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        521: CICADA\Read-only Domain Controllers (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        522: CICADA\Cloneable Domain Controllers (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        525: CICADA\Protected Users (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        526: CICADA\Key Admins (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        527: CICADA\Enterprise Key Admins (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        553: CICADA\RAS and IAS Servers (SidTypeAlias)
SMB         10.129.231.149  445    CICADA-DC        571: CICADA\Allowed RODC Password Replication Group (SidTypeAlias)
SMB         10.129.231.149  445    CICADA-DC        572: CICADA\Denied RODC Password Replication Group (SidTypeAlias)
SMB         10.129.231.149  445    CICADA-DC        1000: CICADA\CICADA-DC$ (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        1101: CICADA\DnsAdmins (SidTypeAlias)
SMB         10.129.231.149  445    CICADA-DC        1102: CICADA\DnsUpdateProxy (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        1103: CICADA\Groups (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        1104: CICADA\john.smoulder (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        1105: CICADA\sarah.dantelia (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        1106: CICADA\michael.wrightson (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        1108: CICADA\david.orelious (SidTypeUser)
SMB         10.129.231.149  445    CICADA-DC        1109: CICADA\Dev Support (SidTypeGroup)
SMB         10.129.231.149  445    CICADA-DC        1601: CICADA\emily.oscars (SidTypeUser)

Tieni a mente il tuo file come una tabella. Ogni riga ha colonne separate da un delimitatore (di solito spazio).

cut dice: “Voglio solo la colonna 5” e scarta il resto.

cut -d DELIMITATORE -f NUMERO file.txt

Analogy: una riga di output è come col1 | col2 | col3 | col4. Con -d ' ' (space) e -f 2 estraiamo solo col2.

cat output.txt | awk '{ print $6 }' | cut -d '\' -f 2
Windows
Guest:
Enterprise
Administrator
Guest
krbtgt
Domain
Domain
Domain
Domain
Domain
Cert
Schema
Enterprise
Group
Read-only
Cloneable
Protected
Key
Enterprise
RAS
Allowed
Denied
CICADA-DC$
DnsAdmins
DnsUpdateProxy
Groups
john.smoulder
sarah.dantelia
michael.wrightson
david.orelious
Dev
emily.oscars

La Regola Universale di Cut

echo "A:B:C:D" | cut -d ':' -f 2

Output: B

Perché cut:

  1. Divide per : dovunque lo troviA | B | C | D
  2. Conta i campi da sinistra: 1=A, 2=B, 3=C, 4=D
  3. Stampa il numero che chiedi: -f 2 → stampa B

Applicato al nostro caso

CICADA\Administrator | cut -d '\' -f 2
  1. Divide per \CICADA | Administrator
  2. Conta: 1=CICADA, 2=Administrator
  3. Stampa il 2° → Administrator

Cut in Cascata

Dato questo output:

admin:root:12345
guest:users:67890
john.doe:developers:11111

Che succede se voglio il dominio + il nome? Cioè john.doe:developers?

bash

cat users.txt | cut -d ':' -f 1-2

-f 1-2 = “Stampa i campi da 1 a 2” (range!)

Output:

admin:root
guest:users
john.doe:developers

Cut con delimitatori multipli

Torniamo al nostro output iniziale:

domain\user:password:uid
CICADA\john.smoulder:P@ssw0rd:1104
CICADA\sarah.dantelia:AnotherPass:1105

Se volessimo estrarre solo il nome utente senza il dominio potremmo usare il seguente comando:

cat file.txt | cut -d ':' -f 1 | cut -d '\' -f 2