Skip to main content

Vis en fils udskrevne tegn med strings

SAO Abridged Parody: Episode 02 (Juli 2025)

SAO Abridged Parody: Episode 02 (Juli 2025)
Anonim

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:

  1. Vi oprettede filen
  2. 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:

strings -d din filnavnstrings - data yourfilename

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:

strings-et dit filnavn

Formatering Output

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:

strings -f dit filnavnstrings - print-fil-navn yourfilename

Udgangen vil nu se sådan ud:

dinfilnavn: et stykke tekstdinfilnavn: et andet stykke tekst

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:

strings -o dit filnavn

Udgangen vil se sådan ud:

16573 din

17024 tekst

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:

strings -t d dinfilnavnstrings -t o yourfilenamestrings -th yourfilename

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:

strings -s "|" yourfilename

Juster strengbegrænsningen

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:

strings -n 8 yourfilename

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:

strings --bytes = 8 dit filnavn

Inkluder hvide rum

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:

strings -w dit filnavn

Skift kodning

Der er 5 kodningsindstillinger til rådighed til brug med strenge:

  • s = 7 bit byte (bruges til ASCII, ISO 8859)
  • S = 8 bit byte
  • b = 16 bit bigendian
  • l = 16 bit littleendian

Standard er 7 bit byte.

For at ændre kodningskørslen, skal du følge følgende kommando:

strings-er dit filnavnstrings --encoding = s dit filnavn

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.

Skift navnet på den binære filbeskrivelse

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:

strings -T bfdname

Læseindstillinger fra en fil

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:

nano stringsopts

I filen indtaste følgende tekst:

-f -o -n 3 -s "|"

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:

strings @ stringsopts yourfilename

Indstillingerne læses fra filstringsopts, og du skal se filnavnet før hver streng, forskydningen og "|" som en separator.

Få hjælp

Hvis du vil læse mere om strenge, kan du køre følgende kommando for at få hjælp.

strings --hjælp

Alternativt kan du også læse den manuelle side:

mand strenger

Find ud af hvilken version af strings du kører

For at finde den version af strenge, du kører, kør en af ​​følgende kommandoer:

strings -vstrings -Vstrings - version