{"id":13777068,"url":"https://github.com/getreu/stringsext","last_synced_at":"2025-05-11T10:31:33.418Z","repository":{"id":57668829,"uuid":"72929571","full_name":"getreu/stringsext","owner":"getreu","description":"Find multi-byte-encoded strings in binary data (Gitlab mirror).","archived":false,"fork":false,"pushed_at":"2024-10-13T08:45:45.000Z","size":626,"stargazers_count":122,"open_issues_count":3,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-30T14:13:53.896Z","etag":null,"topics":["forensics","rust","string-search","unicode"],"latest_commit_sha":null,"homepage":"https://blog.getreu.net/projects/stringsext/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getreu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-05T14:00:37.000Z","updated_at":"2025-03-19T13:31:32.000Z","dependencies_parsed_at":"2024-03-15T10:47:58.409Z","dependency_job_id":"e501d36c-e6cc-43ac-a5b3-5009fdd17fee","html_url":"https://github.com/getreu/stringsext","commit_stats":{"total_commits":187,"total_committers":9,"mean_commits":20.77777777777778,"dds":"0.22459893048128343","last_synced_commit":"1d7efab7414290a89c62c0b0ecc5d6df31343599"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getreu%2Fstringsext","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getreu%2Fstringsext/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getreu%2Fstringsext/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getreu%2Fstringsext/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getreu","download_url":"https://codeload.github.com/getreu/stringsext/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253551813,"owners_count":21926368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["forensics","rust","string-search","unicode"],"created_at":"2024-08-03T18:00:37.167Z","updated_at":"2025-05-11T10:31:31.983Z","avatar_url":"https://github.com/getreu.png","language":"Rust","funding_links":[],"categories":["Applications"],"sub_categories":["System tools"],"readme":"---\ntitle:    stringsext - search for multi-byte encoded strings in binary data\n---\n\n[![Cargo](https://img.shields.io/crates/v/stringsext.svg)](\nhttps://crates.io/crates/stringsext)\n[![Documentation](https://docs.rs/stringsext/badge.svg)](\nhttps://docs.rs/stringsext)\n[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](\nhttps://gitlab.com/getreu/stringsext)\n\n\n**stringsext** is a Unicode enhancement of the *GNU strings* tool with\nadditional functionalities: **stringsext** recognizes Cyrillic, Arabic, CJKV\ncharacters and other scripts in all supported multi-byte-encodings, while\n*GNU strings* fails in finding any of these scripts in UTF-16 and many other\nencodings.\n\n**stringsext** prints all graphic character sequences in *FILE* or\n*stdin* that are at least *MIN* bytes long.\n\nUnlike *GNU strings* **stringsext** can be configured to search for\nvalid characters not only in ASCII but also in many other input\nencodings, e.g.: UTF-8, UTF-16BE, UTF-16LE, BIG5-2003, EUC-JP, KOI8-R\nand many others. The option **\\--list-encodings** shows a list of valid\nencoding names based on the WHATWG Encoding Standard. When more than one\nencoding is specified, the scan is performed in different threads\nsimultaneously.\n\nWhen searching for UTF-16 encoded strings, 96% of all possible two byte\nsequences, interpreted as UTF-16 code unit, relate directly to Unicode\ncodepoints. As a result, the probability of encountering valid Unicode\ncharacters in a random byte stream, interpreted as UTF-16, is also 96%.\nIn order to reduce this big number of false positives, **stringsext**\nprovides a parametrizable Unicode-block-filter. See **\\--encodings**\nand **\\--same-unicode-block** options in the manual page for more details.\n\n**stringsext** is mainly useful for extracting Unicode content out of\nnon-text files.\n\nWhen invoked with `stringsext -e ascii` **stringsext** can be used\nas *GNU strings* replacement.\n\n\n# Screenshot\n\n```\nstringsext -tx -e utf-8 -e utf-16le -e utf-16be \\\n           -n 10 -a None -u African  /dev/disk/by-uuid/567a8410\n\n 3de2fff0+\t(b UTF-16LE)\tݒݓݔݕݖݗݙݪ\n 3de30000+\t(b UTF-16LE)\tݫݱݶݷݸݹݺ\n\u003c3de36528 \t(a UTF-8)\tفيأنمامعكلأورديافىهولملكاولهبسالإنهيأيقدهلثمبهلوليبلايبكشيام\n\u003e3de36528+\t(a UTF-8)\tأمنتبيلنحبهممشوش\n\u003c3de3a708 \t(a UTF-8)\tعلىإلىهذاآخرعددالىهذهصورغيركانولابينعرضذلكهنايومقالعليانالكن\n\u003e3de3a708+\t(a UTF-8)\tحتىقبلوحةاخرفقطعبدركنإذاكمااحدإلافيهبعضكيفبح\n 3de3a780+\t(a UTF-8)\tثومنوهوأناجدالهاسلمعندليسعبرصلىمنذبهاأنهمثلكنتالاحيثمصرشرححو\n 3de3a7f8+\t(a UTF-8)\tلوفياذالكلمرةانتالفأبوخاصأنتانهاليعضووقدابنخيربنتلكمشاءوهياب\n 3de3a870+\t(a UTF-8)\tوقصصومارقمأحدنحنعدمرأياحةكتبدونيجبمنهتحتجهةسنةيتمكرةغزةنفسبي\n 3de3a8e8+\t(a UTF-8)\tتللهلناتلكقلبلماعنهأولشيءنورأمافيكبكلذاترتببأنهمسانكبيعفقدحس\n 3de3a960+\t(a UTF-8)\tنلهمشعرأهلشهرقطرطلب\n 3df4cca8 \t(c UTF-16BE)\tփօև։֋֍֏֑֛֚֓֕֗֙֜֝֞׹\n\u003c3df4cd20 \t(c UTF-16BE)\t־ֿ׀ׁׂ׃ׅׄ׆ׇ׈׉׊׋\n```\n\n\n# Documentation\n\nUser documentation\n\n*   [Manual page (html)](https://blog.getreu.net/projects/stringsext/stringsext--manpage.html)\n\n*   [Manual page (pdf)](https://blog.getreu.net/_downloads/stringsext--manpage.pdf)\n\n*   [Blogposts about Stringsext](https://blog.getreu.net/tags/stringsext/)\n\n*   [Paper about Stringsext](https://commons.erau.edu/jdfsl/vol14/iss2/4)\n\nDeveloper documentation\n\n*   [API documentation](https://blog.getreu.net/projects/stringsext/_downloads/doc/stringsext/)\n\n*   [Forensic Tool Development with Rust](https://blog.getreu.net/projects/forensic-tool-development-with-rust)\n\n# Source code\n\nRepository\n\n*   [Stringsext on Gitlab](https://gitlab.com/getreu/stringsext)\n\n*   [Stringsext on Github (mirror)](https://github.com/getreu/stringsext)\n\n# Distribution\n\n* Binaries for Ubuntu-Linux 18.04, Windows, MacOS (see below for\n  Debian binaries)\n\n    1. Open: [Releases - getreu/stringsext](https://github.com/getreu/stringsext/releases)\n\n    2. Open the latest release.\n\n    3. Open *assets*.\n\n    4. Download the packed executable for your operating system.\n\n    5. Installation: see below.\n\n* Binaries and packages (usually built from latest commit):\n\n  - Executable for Windows:\n\n    [x86_64-pc-windows-gnu/release/stringsext.exe](https://blog.getreu.net/projects/stringsext/_downloads/x86_64-pc-windows-gnu/release/stringsext.exe)\n\n  - Binary for Debian 10 Buster:\n\n    [x86_64-unknown-linux-gnu/release/stringsext](https://blog.getreu.net/projects/stringsext/_downloads/x86_64-unknown-linux-gnu/release/stringsext)\n\n    [x86_64-unknown-linux-musl/release/stringsext](https://blog.getreu.net/projects/stringsext/_downloads/x86_64-unknown-linux-musl/release/stringsext)\n\n    [i686-unknown-linux-gnu/release/stringsext](https://blog.getreu.net/projects/stringsext/_downloads/i686-unknown-linux-gnu/release/stringsext)\n\n    [i686-unknown-linux-musl/release/stringsext](https://blog.getreu.net/projects/stringsext/_downloads/i686-unknown-linux-musl/release/stringsext)\n\n  - Package for Debian 10 Buster:\n\n    [x86_64-unknown-linux-gnu/debian/stringsext_2.3.5_amd64.deb](https://blog.getreu.net/projects/stringsext/_downloads/x86_64-unknown-linux-gnu/debian/stringsext_2.3.5_amd64.deb)\n\n    [i686-unknown-linux-gnu/debian/stringsext_2.3.5_i386.deb](https://blog.getreu.net/projects/stringsext/_downloads/i686-unknown-linux-gnu/debian/stringsext_2.3.5_i386.deb)\n\n  - Package Raspberry Pi 32 bit:\n\n    [armv7-unknown-linux-gnueabihf/release/stringsext](https://blog.getreu.net/projects/stringsext/_downloads/armv7-unknown-linux-gnueabihf/release/stringsext)\n \n  - Package Raspberry Pi 64 bit:\n\n    [aarch64-unknown-linux-gnu/release/stringsext](https://blog.getreu.net/projects/stringsext/_downloads/aarch64-unknown-linux-gnu/release/stringsext)\n  \n\n* Installable Unix man-page:\n\n  - [stringsext.1.gz](https://blog.getreu.net/projects/stringsext/_downloads/stringsext.1.gz)\n\n* Zipfile with all binaries and documentation:\n\n  - [stringsext all](https://blog.getreu.net/_downloads/stringsext.zip)\n\n\n\n# Building and installing\n\n1. [Install Rust](https://www.rust-lang.org/tools/install), e.g.\n\n       curl https://sh.rustup.rs -sSf | sh\n\n2. Download, compile and install:\n\n       cargo install stringsext\n       sudo cp ~/.cargo/bin/stringsext /usr/local/bin\n\nThis project follows [Semantic Versioning](https://semver.org/).\n\n\n\n# About\n\nAuthor\n\n*   Jens Getreu\n\nCopyright\n\n*   Apache 2 license or MIT license\n\nBuild status\n\n*   ![status](https://travis-ci.org/getreu/stringsext.svg?branch=master)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetreu%2Fstringsext","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetreu%2Fstringsext","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetreu%2Fstringsext/lists"}