Har du nogensinde forsøgt at åbne en fil i en editor for at finde ud af, at den indeholder ulæseligt binært indhold?
Linux-kommandoen "strings" gør det muligt at se de læsbare tegn i en hvilken som helst fil.
Hovedformålet med at bruge kommandoen "strings" er at finde ud af, hvilken type fil det er, du kigger på, men du kan også bruge det til at udtrække tekst. Hvis du f.eks. Har en fil fra et proprietært program, der gemmer filer i et mærkeligt binært format, kan du bruge "strenge" for at udtrække den tekst, du lægger ind i filen.
Eksempel Anvendelse af Strengen Command
En fantastisk måde at demonstrere strengenes kommando på er at oprette et dokument ved hjælp af LibreOffice Writer.
Du skal blot åbne LibreOffice Writer og indtaste nogle tekst og derefter gemme det i standard ODT format.
Åbn nu et terminalvindue (tryk på CTRL, ALT og T samtidig), og brug derefter kommandoen til at vise filen som følger:
cat yourfilename.odt | mere
(Udskift yourfilename.odt med navnet på den fil du oprettede)
Det du vil se er en hel mur af ulæselig tekst.
Tryk på mellemrumstasten for at rulle gennem filen. Sporadisk i hele filen ses der en del af teksten, du har indtastet.
Kommandoen strenger kan bruges til kun at vise de dele, der er læsbare.
I sin enkleste form kan du køre følgende kommando:
strings yourfilename.odt | mere
Som før vises en tekstmur, men kun tekst, som du kan læse som menneske. Hvis du er heldig så vil du kunne se din tekst.
Hvad du vil kunne se, er nøglen, men er på første linje:
mimetypeapplication / vnd.oasis.opendocument.text
Vi ved, at filtypen er en LibreOffice Writer ODT-fil af 2 grunde:
- Vi oprettede filen
- Udvidelsen er .ODT
Forestil dig, at du ikke oprettede filen, eller du fandt filen på en gendannet disk, og filen ikke havde en udvidelse.
Windows-opsving vil ofte genoprette filer med navne som 0001, 0002, 0003 osv. Det faktum, at filerne blev genoprettet, er fantastisk, men forsøger at finde ud af, hvad typerne af disse filer var, var et mareridt.
Ved at bruge strenge har du en kamp chance for at udarbejde filtypen. At vide, at en fil er en opendocument.text-fil betyder, at du kan gemme den med ODT-udvidelsen og åbne den i LibreOffice-forfatter.
Hvis du ikke var klar over, er en ODT-fil i grunden en komprimeret fil. Hvis du omdøber yourfilename.odt til yourfilename.zip kan du åbne den i et arkiveringsværktøj og endda pakke filen ud.
Alternative Behaviors
Som standard returnerer kommandoen strenger alle strenge i en fil, men du kan skifte adfærd, så den returnerer strenge fra initialiserede, indlæste datasektioner i en fil.
Hvad betyder det præcist? Ingen synes at vide det.
Det er fornuftigt at antage, at du bruger strenge til at prøve og enten finde ud af filtypen eller at søge efter specifik tekst i en fil.
Hvis du kører kommandoen strenger med standardadfærd, får du ikke den output, du håbede på, så prøv at køre en af følgende kommandoer for at se, om det gør en forskel:
Den manuelle side angiver, at ovenstående kommando kan bidrage til at reducere mængden af affald, der returneres fra strenge. Kommandoen "strenge" kan indstilles til at fungere i omvendt, så minus d-switchen er standardadfærd. Hvis dette er tilfældet på dit system, kan du returnere alle data ved at bruge følgende kommando: Du kan få teksten i output til at vise navnet på filen sammen med hver tekstlinje. For at gøre dette køre en af følgende kommandoer: Udgangen vil nu se sådan ud: Som en del af udgangen kan du også vise forskydningen af, hvor teksten vises i en fil. For at gøre det skal du køre følgende kommando: Udgangen vil se sådan ud: Modregningen er faktisk oktalforskydningen, selvom det afhænger af, hvordan strenge er blevet kompileret til dit system, det også nemt kan være hex eller decimal. En mere præcis måde at få den forskydning, du ønsker, er at bruge følgende kommandoer: Minus t betyder returnering af forskydningen, og tegnet som følger bestemmer forskydningstypen. (dvs. d = decimal, o = oktal, h = hex). Som standard udskriver kommandoen strenger hver ny streng på en ny linje, men du kan indstille afgrænsningen efter eget valg. For eksempel at bruge et rørsymbol ("|") som afgrænseren kører følgende kommando: Strenge-kommandoen søger som standard en streng på 4 udskrivbare tegn i træk. Du kan justere standarden, så den kun returnerer en streng med 8 udskrivbare tegn eller 12 udskrivbare tegn. Ved at justere denne grænse kan du skræddersy output for at få det bedst mulige resultat. Ved at kigge efter en streng, der er for lang, risikerer du at udelade brugbar tekst, men ved at gøre det for kort kan du ende med langt mere junk tilbage. For at justere strenggrænsen kør følgende kommando: I ovenstående eksempel har jeg ændret grænsen til 8.Du kan erstatte 8 med antallet af dit valg. Du kan også bruge følgende kommando til at gøre det samme: Som standard indeholder kommandoen strenger hvide rum som f.eks. En fane eller et rum som en udskrivbar tegn. Derfor, hvis du har en streng, der står som "katten sad på måtten", ville kommandoen strenger returnere hele teksten. Nye linjetegn og vognretur anses ikke som udskrivbare tegn som standard. For at få strenge til at genkende nye linjetegn og vognretur tilbage som et udskriveligt tegn, skal du køre strenge på følgende måde: Der er 5 kodningsindstillinger til rådighed til brug med strenge: Standard er 7 bit byte. For at ændre kodningskørslen, skal du følge følgende kommando: I ovenstående kommando har jeg angivet standard "s", hvilket betyder 7 bit byte. Du skal blot erstatte "s" med det kodende brev efter eget valg. Du kan ændre opførelsen af strenge, så den bruger et andet binært fildeskriptorbibliotek bortset fra det, der er angivet for dit system. Denne switch er en for eksperterne. Hvis du har et andet bibliotek til at bruge, kan du gøre det ved at køre kommandoen følgende strenge: Hvis du vil bruge de samme muligheder hver gang, så ønsker du ikke at skulle angive alle omskifterne hver gang du kører kommandoen, fordi det tager tid. Hvad du kan gøre er at oprette en tekstfil ved hjælp af nano og angive valgmulighederne i den pågældende fil. For at prøve dette ud i en terminal, kør følgende kommando: I filen indtaste følgende tekst: Gem filen ved at trykke på CTRL og O og afslut ved at trykke på CTRL og X. For at køre strengene kommandoer med disse indstillinger, kør følgende kommando: Indstillingerne læses fra filstringsopts, og du skal se filnavnet før hver streng, forskydningen og "|" som en separator. Hvis du vil læse mere om strenge, kan du køre følgende kommando for at få hjælp. Alternativt kan du også læse den manuelle side: For at finde den version af strenge, du kører, kør en af følgende kommandoer:strings -d din filnavn
strings - data yourfilenamestrings-et dit filnavn
Formatering Output
strings -f dit filnavn
strings - print-fil-navn yourfilenamedinfilnavn: et stykke tekst
dinfilnavn: et andet stykke tekststrings -o dit filnavn
16573 din
17024 tekst
strings -t d dinfilnavn
strings -t o yourfilenamestrings -th yourfilenamestrings -s "|" yourfilename
Juster strengbegrænsningen
strings -n 8 yourfilename
strings --bytes = 8 dit filnavn
Inkluder hvide rum
strings -w dit filnavn
Skift kodning
strings-er dit filnavn
strings --encoding = s dit filnavn Skift navnet på den binære filbeskrivelse
strings -T bfdname
Læseindstillinger fra en fil
nano stringsopts
-f -o -n 3 -s "|"
strings @ stringsopts yourfilename
Få hjælp
strings --hjælp
mand strenger
Find ud af hvilken version af strings du kører
strings -v
strings -Vstrings - version