Drobne programy

Zbiór aplikacji nie zasługujących na bezpośredni link ze strony głównej.

Konwerter obrazów do postaci ciągu heksadecymalnego i binarnego

Program w wersji alpha, posiadać może dużą liczbę błędów i niedociągnięć. Wszelkie uwagi mile widziane, w przypadku zainteresowania możliwy byłby rozwój aplikacji. Cechy użytkowe:
PICtoC.zip (442kB)

Pseudo-terminal libusb

Aplikacja przypominająca typowy terminal COM, ale współpracująca z urządzeniami USB wykorzystującymi sterownik libusb (zalecana do współpracy wersja snapshot: libusb-win32-device-bin-20051120).
2006.08.31 Dodana prezentacja odbieranych danych jako ciągu heksadecymalnego.
libusb_terminal_bin_20060418.zip (323kB)
libusb_terminal_bin_20060831.zip (334kB)
Kod źródłowy (BCB6 PE), GPL v2
libusb terminal screenshot

Konwerter plików binarnych na tablicę C

Pliki wejściowe traktowane mogą być jako bajtowe, typu word oraz int (little endian). Program napisany ze względu na problemy ze znalezieniem aplikacji przetwarzającej na tablicę dane typu word. Możliwość ustalenia separatora między poszczególnymi elementami (domyślnie przecinek + spacja) oraz zawijania tekstu (domyślnie po 70 znakach).
bin2hex.c
bin2hex.exe (26kB)
linux executable: bin2hex (12kB)

Konwerter kodu heksadecymalnego na plik

hex2bin.zip

Skaner TCP

Pierwsze zetknięcie z Turbo C++, mały programik szukający w sieci lokalnej komputerów z otwartym wskazanym portem. Z nieznanych powodów problemy ze znalezieniem opcji linkowania statycznego (Linker/Linking/Use dynamic RTL + Packages/Build with runtime packages). Oprócz tego zaskoczyło mnie korzystanie z wątków: Synchronize(&UpdateCaption); oraz inna niż przy BCB4-6 postać funkcji wywoływanej przy OnTerminate wątku.
skaner_tcp.zip (366kB)
skanerTCP screenshot

AV to MAP

Program parsuje plik map generowany przez linkery Borlanda (sprawdzona zgodność z BCB6 i BDS2006/Turbo C++ Explorer, Detailed map file) próbując odszukać funkcję do której należy adres zawarty w komunikacie o błędzie typu Access Violation. Prawdopodobnie niewielkim nakładem pracy dodać można obsługę innych formatów plików map.
Adres zawarty w komunikacie o błędzie AV zawiera użyteczną informację jedynie czasami - jeżeli błąd powstał w wyniku np. wywołania jakiejś funkcji winapi z nieprawidłowymi parametrami adres ten będzie jej adresem, a nie funkcji wywołującej. Jeżeli (szczęśliwie) błąd wygenerowany został bezpośrednio przez kod użytkownika, to adres funkcji generującej go będzie równy lub najbliższy mniejszy różnicy adresu zawartego w komunikacie o błędzie Access Violation i sumy adresu ładowania programu (Image Base, typowo 400000h) i przesunięcia kodu (Code Base, typowo 1000h).
Map Address <= AV Address - (Image Base + Code Base)
Niniejszy program ułatwia odnalezienie tej funkcji w pliku map.
AVtoMAP.zip (334 kB wraz ze źródłami)
AVtoMAP_test.zip (program generujący błędy do testów wraz z plikiem map, 383 kB)
Znacznie skuteczniejsze (nie wspominając o wygodzie) jest użycie narzędzi do śledzenia stosu - dla kompilatorów Borlanda JCL Debug, madExcept, EurekaLog.
AVtoMAP screenshot

Skype API - test komunikacji

Program demonstrujący komunikację z programem Skype z użyciem komunikatu WM_COPYDATA. Działanie programu jest analogiczne do dostępnego na stronie Skype przykładu example_win.zip, został jednak napisany w BDS2006/Turbo C++ Explorer.
binarka: skype_test.zip (326 kB)
źródła: skype_test_src.zip (47kB), beerware

AudioScope

Drobna aplikacja udająca oscyloskop. Korzysta z interfejsu WAVE IN.
audioscope.zip (340 kB wraz ze źródłami)
audioscope screenshot

Turbo C++ (BDS2006) project cleaner

Turbo C++ project cleaner screenshot
Proste narzędzie mające zastąpić pominiętą w BDS2006 funkcję "Clean Project". Usuwa wskazane, wybrane z zestawu typy katalogów i plików w celu przygotowania do zarchiwizowania lub publikacji, w tym ukryte katalogi __history. Wskazane ostrożne używanie i wykonanie kopii projektu przed użyciem.
turbocpp_clean.7z

Resolution

Narzędzie do szybkiej zmiany rozdzielczości ekranu. Pierwsze kliknięcie przełącza ekran na rozdzielczość 800x600, kolejne do na rozdzielczość domyślną jeżeli aktualna rozdzielczość jest taka jak żądana. Żądana rozdzielczość może być zmieniona z linii komend (skrót):
resolution rozdzielczoscX rozdzielczoscY
Projekt utworzony w Code::Blocks. resolution.zip

ECC DSA

Testowa aplikacja dla easy-ecc, zastosowana do generowania sygnatur w systemie licencjonowania.
Wybór schematu licencjonowania dla drobnej aplikacji jest tylko pozornie prostym zadaniem. Funkcje hashujące i szyfry symetryczne są złym wyborem ze względu na to, że umożliwiają stworzenie key generatora - narzędzia bardziej akceptowalnego niż crack i zazwyczaj umożliwiającego bezproblemowy upgrade do nowszej wersji oprogramowania. Asymetryczne algorytmy szyfrowania i podpisywania są z drugiej strony dostępne zazwyczaj tylko jako część większych bibliotek jak OpenSSL czy Crypto++, których użycie zwiększa znacząco rozmiar aplikacji lub może być niemożliwe w zastosowaniach wbudowanych (np. kompilatory pozbawione obsługi wyjątków). Biblioteka easy-ecc (Kenneth MacKay) jest tu zdecydowanie pozytywnym wyjątkiem, oferując szyfrowanie/podpis eliptyczne (bardzo dobry stosunek bezpieczeństwa do długości podpisu) w formie pojedyńczego modułu C bez żadnych zewnętrznych zależności jak biblioteki do obsługi liczb arbitralnej długości.
ECC DSA test
ecc.zip

Low memory warning

Prosta, "bezokienkowa" aplikacja ostrzegająca przy pomocy głośnika systemowego o przekroczeniu założonego (90%) zużycia pamięci RAM. Konfiguracja może być zmieniona przez ponowną kompilację przy użyciu Code::Blocks/MinGW.
memwarning.zip

ObeXplorer

ObeXplorer - transfer plików poprzez Bluetooth.

IntelPWMControl

IntelPWMControl - sterowanie częstotliwością PWM podświetlenia panelu LCD.

UartTest

UartTest - prosty test UART w trybie loopback.

JoinMulticast

JoinMulticast - dołączenie do wielu grup multicast.

UdpSender

UdpSender - prosta aplikacja wysyłająca binarne datagramy UDP.

png2argb

png2argb - konwerter png na Adobe Scripting ARGB hex tekst.

TOTP generator dla githuba

TotpGenerator.

 "Cookie monsters": 7702338    Parse time: 0.000 s