diff --git a/content/posts/2024/linux/strings.md b/content/posts/2024/linux/strings.md new file mode 100644 index 0000000..e936cde --- /dev/null +++ b/content/posts/2024/linux/strings.md @@ -0,0 +1,107 @@ +--- +title: "🎹 Команда strings" +date: 2024-08-17T22:45:47+03:00 +draft: false +tags: [linux, tips] +--- + +## ℹ️ strings == строки + +## ΠŸΡ€ΠΈΠΌΠ΅Ρ€ + +Накидаю ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π‘ΠΈ, которая ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив символов `ololo_str` +со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ `It's unique text`, +Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² консоль `GrindCore \m/`. + +Листинг `strings.c` + +```c +#include + +int main(int argc, char const *argv[]) { + char * ololo_str = "It's unique text"; + + puts("GrindCore \\m/"); + + return 0; +} +``` + +Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ запуск + +```sh +tcc -o string string.c # ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ +./string # Запуск +``` + +Π’Ρ‹Ρ…Π»ΠΎΠΏ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: + +```text +GrindCore \m/ +``` + + +## О `strings` + +Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ строки Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ тСкста. +Но ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡ… Π²ΠΈΠ΄ΠΈΠΌ? Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `cat` ΠΈΠ»ΠΈ `less`, Ρ‚ΠΎ, скорСС всСго, +зависнСт ΠΎΠΊΠ½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, +Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС Π½Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ символы. + +_Π‘ΠΏΠΈΠ·ΠΆΠ΅Π½ΠΎ [ΠΎΡ‚ΡΡŽΠ΄Π°](https://wiki.merionet.ru/articles/kak-ispolzovat-komandu-strings-v-linux)._ + + +## ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ + +Π”Π°Π²Π°ΠΉ Π½Π°Ρ‚Ρ€Π°Π²ΠΈΠΌ `strings` Π½Π° исполняСмый Ρ„Π°ΠΉΠ» `string`? + +Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: + +```sh +strings ./string +``` + +ΠΈ Π²ΠΈΠΆΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: + +```text +/lib64/ld-linux-x86-64.so.2 +__libc_start_main +puts +main +__gmon_start__ +libc.so.6 +GLIBC_2.34 +GLIBC_2.2.5 +libc.so.6 +PTE1 +It's unique text +GrindCore \m/ +.text +.data +.bss +.rodata.cst4 +.eh_frame +.init +.fini +.preinit_array +.init_array +.fini_array +.interp +.dynsym +.dynstr +.hash +.dynamic +.got +.rela.got +.plt +.gnu.version +.gnu.version_r +.shstrtab +``` + +Много всСго, Π΄Π°, Π½ΠΎ ΠΎΠ±Π΅ строки ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΠ²ΡƒΡŽΡ‚. + +**Π’Ρ‹Π²ΠΎΠ΄:** Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ΠΎΡ‡Π΅Π½ΡŒ полСзная! ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅?... ΠΌΠ½ΠΎΠ³ΠΎ. +Π― Π²ΠΎΡ‚ сСгодня Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΠ» ΠΈΠ· Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ° ΠΏΠ°Ρ€ΠΎΠ»ΡŒ администратора ΠΎΡ‚ устройства, +ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° ΠΎΡ‡Π΅Π½ΡŒ цСнная информация. +(πŸ₯² ΡˆΡƒΡ‡Ρƒ).