• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Challenge - Forensics Flag Finder

VPS Starter Arubacloud
+7 głosów
2,140 wizyt
pytanie zadane 15 maja 2020 w Bezpieczeństwo, hacking przez Mirosław Zelent Nałogowiec (34,750 p.)
przywrócone 17 maja 2021 przez Mirosław Zelent

To jest challenge programistyczny dołączony do drugiego tutoriala z serii CTF:

https://www.youtube.com/watch?v=YEMTR8zAZTI

Napisz własny program, który zachowuje się jak linuxowe polecenie strings - potrafi otworzyć i przebadać na obecność łańcuchów n-znakowych plik o dowolnym rozszerzeniu (albo w bardziej wymagającej wersji wskazany programowi folder z plikami). Przykładowe funkcje / parametry aplikacji (skryptu):

  • język programowania dowolny, 
  • interfejs terminalowy lub okienkowy,
  • możliwość określenia minimalnej długości szukanych łańcuchów,
  • możliwość szukania konkretnej frazy (wzorca),
  • opcja rozpoznawana typu pliku (po nagłówku),
  • wybór stosowanego zestawu znaków, 
  • pokazywanie offsetu (położenia) znalezionego łańcucha w pliku

Challenge jest realizowany dla zajawki, jako zadanie do zrealizowania podczas nauki / ćwiczenia danego (wybranego przez siebie) języka. Zachęcam do postowania / linkowania swoich rozwiązań oraz komentowania i podpowiadania kodów innych biorących udział w zabawie. 

5 odpowiedzi

+3 głosów
odpowiedź 15 maja 2020 przez Peter Ja Początkujący (290 p.)
przywrócone 15 maja 2020 przez Peter Ja

Siemka,

ogarnąłem taką apkę (okienkowa, C# WPF).

Wydaje się działać poprawnie, pokazuje numer znaku i oczywiście wynik. Da się w niej wyszukiwać oraz zmieniać minimalną liczbę znaków, które będą szukane (domyślnie oczywiście 4) smiley

https://github.com/PiotrekPKP/ForensicsFlagFinder

Linkacz do apki na gicie, jeśli komuś nie chce się wchodzić tu wrzucam kod samej apki:

using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Win32;

namespace ForensicsFlagFinder
{
    public partial class MainWindow
    {
        private string _filename = "blank";
        private int _charNr;
        private int _combo;
        private readonly List<char> _chars = new List<char>();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonChoose_OnClick(object sender, RoutedEventArgs e)
        {
            Initialize();
            var dialog = new OpenFileDialog();
            dialog.ShowDialog();
            _filename = dialog.FileName;
        }

        private void Initialize()
        {
            _charNr = 0;
            _combo = 0;
            _chars.Clear();
            ListView.Items.Clear();
        }
        
        private void Search(object sender, RoutedEventArgs e)
        {
            if (_filename == "blank")
            {
                Error.Content = "Nie wybrano pliku :)";
                return;
            }
            if (int.TryParse(Num.Text, out _))
            {
                if (int.Parse(Num.Text) < 1)
                {
                    Error.Content = "Wpisz poprawną wartość :)";
                    return;
                }
            }
            else
            {
                Error.Content = "Wpisz numer :)";
                return;
            }
            Initialize();
            Error.Content = "";
            foreach (var character in File.ReadAllText(_filename))
            {
                if (character < 127 && character > 32)
                {
                    _chars.Add(character);
                    _combo++;
                }
                else
                {
                    if (_combo >= int.Parse(Num.Text))
                    {
                        var content = new string(_chars.ToArray());
                        if (SearchField.Text != "")
                        {
                            if (content.Contains(SearchField.Text))
                            {
                                content = _charNr - _combo + ": " + content;
                                var listViewItem = new ListViewItem {Content = content};
                                ListView.Items.Add(listViewItem);
                            }
                        }
                        else
                        {
                            content = _charNr - _combo + ": " + content;
                            var listViewItem = new ListViewItem {Content = content};
                            ListView.Items.Add(listViewItem);
                        }
                        _chars.Clear();
                        _combo = 0;
                    }
                    else
                    {
                        _chars.Clear();
                        _combo = 0;
                    }
                }
                _charNr++;
            }
            if (_combo < int.Parse(Num.Text)) return;
            {
                var content = new string(_chars.ToArray());
                content = _charNr - _combo + ": " + content;
                var listViewItem = new ListViewItem {Content = content};
                ListView.Items.Add(listViewItem);
            }
        }
    }
}

Piotrek smiley

2
komentarz 15 maja 2020 przez Mirosław Zelent Nałogowiec (34,750 p.)
Dobra robota, pozdrawiam serdecznie!
1
komentarz 16 maja 2020 przez Peter Ja Początkujący (290 p.)
Dzięki ;)
+2 głosów
odpowiedź 17 maja 2020 przez deb Nowicjusz (180 p.)

Z mojej strony narzędzie nie stricte do wyszukiwania w pliku, ale do wypisywania wartości bajtów (oraz ich odpowiednika Unicode) z pliku w terminalu.

Można oczywiście zastosować dodatkowo polecenie grep.

https://github.com/damianzim/hexss

Mam nadzieję, że się komuś przyda! smiley

komentarz 24 maja 2020 przez Mirosław Zelent Nałogowiec (34,750 p.)
Dzięki za włączenie się do challenge'u! Pozdrawiam serdecznie
+2 głosów
odpowiedź 17 maja 2020 przez Macek Kolo Mądrala (5,480 p.)
No to ja też coś wrzucę. Proszę o recenzję: https://github.com/Dregorio1/Challenge-FFF
komentarz 24 maja 2020 przez Mirosław Zelent Nałogowiec (34,750 p.)
Dzięki za udział! Pozdrawiam! :)
+1 głos
odpowiedź 7 lutego 2022 przez Kameleon-07 Nowicjusz (160 p.)

Hej, ja także zrobiłem taką aplikacje. Testowana pod linuxem, działa w terminalu. Robiona w języku Rust.

Link do github: https://github.com/Kameleon-07/rstrings

komentarz 7 lutego 2022 przez Mirosław Zelent Nałogowiec (34,750 p.)

Awesome, mam nadzieję, że to był dobry trening Rusta, no i program przyda się przy kolejnych zadaniach! Dobra robota, pozdrawiam jako rownież posiadacz lenówkismiley

+1 głos
odpowiedź 11 czerwca 2022 przez peleni Nowicjusz (230 p.)

Może trochę czasu minęło, jednak tak czy siak zrobiłem aplikację konsolową w .NET w odpowiedzi na challenge.

link do projektu na githubie: https://github.com/MichalNiekrasz/TextFinderInBin.git

komentarz 11 czerwca 2022 przez Wiciorny Ekspert (269,120 p.)
Nie odświeżaj starych tematów.

Podobne pytania

+2 głosów
2 odpowiedzi 583 wizyt
pytanie zadane 25 września 2022 w Nasze projekty przez Mirosław Zelent Nałogowiec (34,750 p.)
+5 głosów
3 odpowiedzi 824 wizyt
0 głosów
3 odpowiedzi 1,192 wizyt
pytanie zadane 3 sierpnia 2017 w Rozwój zawodowy, nauka, praca przez secretname0x525 Początkujący (290 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...