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:
- konwersja plików między kilkoma formatami (ograniczenie ze względu na rozdzielczość!)
- eksport obrazu (binarnych wartości poszczególnych pikseli, nie samego pliku) do postaci ciągu
wartości heksadecymalnych (1 bajt/piksel, konwersja do postaci monochromatycznej w locie) lub
binarnych (1 bajt/8pikseli, obraz konwertowany jest do postaci B/W z progowaniem jasności na poziomie 128/255)
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
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)
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.
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)
Turbo C++ (BDS2006) project cleaner
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.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.
ICMP ping test
PingTest.
WS2812 test
WS2812 test - sterowanie paskiem LED WS2812 z PC/UART.
audioscope.zip (340 kB wraz ze źródłami)
Turbo C++ (BDS2006) project cleaner
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 rozdzielczoscYProjekt 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.zip