Autorzy popularnego Flipper Zero kontynuują pracę nad nowym projektem – Flipper One. Nowe urządzenie ma mieć bardziej mobilny i sieciowy charakter w porównaniu do radiowego Flippera Zero.
Wielkie plany, projekt portalu dla developerów, pełna adaptacja Linuxa
Mówiąc o Flipperze Zero to moje szczere przemyślenia są takie, że w moim przypadku okazał się zupełnie nieprzydatnym urządzeniem.
O ile funkcje takie jak monitorowanie pasm radiowych, nagrywanie i odtwarzanie sygnałów działają tak, jak powinny, to sama funkcjonalność zostaje szybko zrewidowana w zetknięciu z rzeczywistością.
Rzeczywistością w tym przypadku są algorytmy tzw. rolling-key jak np. Kee Loq, używane powszechnie w większości rozwiązań bezpiecznej komunikacji radiowej, np. w przypadku bram wjazdowych.
Algorytmy rolling-key zabezpieczają przed atakami replay (czyli nagraniem sygnału i jego odtworzeniem). Do poprawnego działania wymagane byłoby nagranie poprawnego sygnału, zablokowanie go i późniejsze odtworzenie (tak jak robią to złodzieje samochodów). Alternatywą jest wygenerowanie kolejnej sekwencji poprawnego klucza otwierającego. Do tego wymagana jest znajomość klucza producenta lub brute-forcowanie 64-bitowego klucza drogą radiową, co jak się domyślacie, nie jest realne.
Czasami klucze producentów jakichś systemów gdzieś wyciekają i można spróbować ich użyć do generowania kodów, ale to rzadkość.
U mnie Flipper Zero niestety leży na dnie biurka, ale jeśli znacie jakieś ciekawe zastosowanie – chętnie posłucham co mnie ominęło i nie mówie tutaj o chodzeniu po galeriach handlowych i masowym wyłączaniu ekranów 😉
Świetny, techniczny artykuł prezentujący, jakie wyzwania czekają twórców obfuscatorów w dobie AI. Dogłębna analiza, jakie metody obfuskacyjne zawodzą w starciu z deobfuskacją przez Claude 4.6 oraz jakie techniki warto zastosować, żeby chociaż wypalić tokeny przy próbach deobfuskacji.
Z okazji rocznicy, okrągłej oczywiście — odkodowania 133541 (tak — stu trzydziestu trzech tysięcy pięciuset czterdziestu jeden) haseł przez mój dekoder online, publikuję kody źródłowe algorytmu dekodowania haseł FTP Total Commandera w formie paczek dla popularnych języków programowania.
Dostępne są paczki dla PHP, Pythona, JS i waszego ukochanego Rust. Kody źródłowe wszystkich paczek są dostępne na moim GitHubie.
Zachęcony pozytywnymi komentarzami dotyczącymi mojego projektu StringEncrypt, postanowiłem zaktualizować wszystko, co się dało i spełnić marzenia fanów tego niezwykłego rozwiązania.
Silnik projektu jest wykorzystany w moich pozostałych narzędziach do masowego, polimorficznego szyfrowania stringów (w AutoIt Obfuscator i JObfuscator).
Szyfrować i generować kod można w następujących językach programowania:
Nowa wersja przynosi ogrom zmian, w tym najważniejsze – wsparcie dla wielu nowych języków programowania, tony bugfixów i najważniejsze – zagnieżdżone pętle polimorficzne.
Zagnieżdżone pętle polimorficzne
Jednym z zarzutów i wektorów ataku na StringEncrypt (w przypadku generatorów np. C/C++) było wykorzystanie narzędzi do ekstrakcji stringów, takich jak flare-floss. Narzędzie to potrafi przeskanować gotowy plik EXE, przeanalizować kod i wyciągnąć nawet zaszyfrowane stringi.
Zgłębiłem temat i cała filozofia tego rozwiązania bazuje na detekcji tzw. tight-loops, czyli ciasnych pętli. flare-floss potrafi rozpoznać krótkie pętle deszyfrujące i poprzez ich emulację wyciągnąć zaszyfrowane stringi, jeśli takie pętle zostały wykorzystane do ich odszyfrowania.
Rozwiązaniem tego problemu było wygenerowanie wielopoziomowo zagnieżdżonych pętli z polimorficznym kodem deszyfrującym co nie wpisuje się już w detekcję prostych pętli.
#!/usr/bin/env python
###############################################################################
#
# String Encrypt WebApi interface usage example.
#
# In this example we will encrypt sample string with default options.
#
# Version : v1.0.1
# Language : Python
# Author : Bartosz Wójcik
# Project page : https://www.stringencrypt.com
# Web page : https://www.pelock.com
#
###############################################################################
#
# include StringEncrypt module
#
from stringencrypt import StringEncrypt
#
# if you don't want to use Python module, you can import it directly from the file
#
#from stringencrypt.stringencrypt import StringEncrypt
#
# create StringEncrypt class instance (we are using our activation code)
#
myStringEncrypt = StringEncrypt("YOUR-API-KEY-HERE") # leave empty for demo mode
#
# encrypt a string using all the default options
#
result = myStringEncrypt.encrypt_string("Hello, world!", "label_encrypted")
#
# result[] array holds the encryption results as well as other information
#
# result["error"] (int) - error code
# result["source"] (string) - decryptor source code
# result["expired"] (boolean) - expiration flag
# result["credits_left"] (int) - number of credits left
# result["credits_total"] (int) - initial number of credits
if result and "error" in result:
# display source code of the decryption code
if result["error"] == StringEncrypt.ErrorCodes.ERROR_SUCCESS:
print(result["source"])
else:
print(f'An error occurred, error code: {result["error"]} ({result["error_string"]})')
else:
print("Something unexpected happen while trying to encrypt the string.")
Pełna wersja
Klucz można zakupić za śmieszne pieniądze lub za darmo go zdobyć, pisząc o tym rozwiązaniu na social mediach, artykułach, na forach czy gdziekolwiek się da z linkiem do strony projektu i krótkim opisem oraz screenshotem. Niewiele, prawda?
Na koniec chciałbym jeszcze raz podziękować wszystkim fanom, którzy w dobie AI zmotywowali mnie do tak dużych aktualizacji – bez waszych słów wsparcia by mi się nie chciało aż tak 🙂