Jak odczytać ESN i UUID urządzeń Motorola z Windows CE 6.0 w .NET Compact Framework
Napisany przez Łukasz Dziedziul w .net dnia 29 lutego 2012

Często istnieje potrzeba, żeby zidentyfikować urządzeń na którym działa nasz program, aby zabezpieczyć się w jakikolwiek sposób przed kopiowaniem programu na nieautoryzowane urządzenia lub w celu logowania operacji z podziałem na urządzenia, bez możliwości zanegowania unikalności wyników.
Aby to zrobić można skorzystać z natywnej funkcji GetDeviceUniqueID, ale nie polecam jej ze względu na to, że stosunkowo często funkcja zwracała ten sam wynik na różnych urządzeniach (źródło). Z racji tego, że moja aplikacja działa na urządzeniach Motoroli, postanowiłem skorzystać z ich API. Daje ono do wyboru dwie wartości: UUID oraz ESN.
Aby je odczytać trzeba po pierwsze mieć zainstalowane Motorola EMDK for .NET 2.4 oraz dodać do projektu bibliotekę Symbol.ResourceCoordination, a następnie wywołać poniższy kod:
1 2 3 4 5 6 7 8 9 10 11 | public string GetDeviceUUID() { Symbol.ResourceCoordination.TerminalInfo terminalInfo = new Symbol.ResourceCoordination.TerminalInfo(); byte[] id = terminalInfo.UniqueUnitID; StringBuilder builder = new StringBuilder(); for (int j = 0; j < id.Length; j++) { builder.Append(string.Format("{0:x2}", id[j])); } return builder.ToString(); } |
lub
1 2 3 4 | public string GetDeviceESN() { Symbol.ResourceCoordination.TerminalInfo terminalInfo = new Symbol.ResourceCoordination.TerminalInfo(); return terminalInfo.ESN; |
Bootowanie obrazu ISO przy pomocy pendrive’a USB
Napisany przez Łukasz Dziedziul w Administracja dnia 3 grudnia 2011
Aby zbootować obraz ISO w przypadku braku napędu optycznego czy też czystej płytki, ewentualnie czasu na nagrywanie, wystarczy ściągnąć program UNetbootin ze strony http://unetbootin.sourceforge.net/. Po ściągnięciu i uruchomieniu mamy dwie opcje: automatyczne pobranie obrazu którejś z popularnych dystrybucji Linuksa i zapisanie go na pendrive’ie lub podanie ręcznie ścieżki do ściągniętego lub stworzonego pliku ISO. Ostatnią czynnością, która należy zrobić jest wybranie napędu, na który ma być zapisany obraz. Oprócz pendrive’a USB można wybrać też zwykły dysk twardy. Po zatwierdzeniu opcji przyciskiem „OK”, program zrzuci zawartość obrazu na pendrive’a oraz zapisze swój kod bootujący, niezbędny do uruchomienia komputera z napędu USB. Trzeba oczywiście pamiętać, żeby komputer miał wsparcie w BIOS-ie dla bootowania z USB. Wszystkie nowe komputery to potrafią, ale jakieś starsze trupki mogą mieć z tym problem.

Konwersja repozytorium mercurial do git
Napisany przez Łukasz Dziedziul w Administracja, git dnia 24 listopada 2011
Aby skonwertować repozytorium mercurial do git-a musimy trzeba zainstalować pakiet hg-fast-export:
1 | sudo aptitude install hg-fast-export |
Następnie tworzymy nowe repozytorium gita:
1 2 3 | mkdir git_repo cd git_repo git init |
Ostatnim krokiem jest uruchomienie konwersji:
1 | hg-fast-export -r /home/hg/hg_repo |
Jeśli to będzie nasze zdalne repozytorium, do którego będziemy wrzucać tylko zmiany a nie pracować bezpośrednio na nim, powinnyśmy ustawić repozytorium w tryb „bare”:
1 | git config --bool core.bare true |
Self-signed certificate dla GIT pod windows.
Krótko i na temat czyli jak dodać do gita pod windowsem certyfikat ssl generowany ręcznie (self-signed certificate).
Bład jaki występuje z danym certyfikatem wygląda tak:
1 2 3 4 | error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://<server>/<project>/info/refs fatal: HTTP request failed |
Można oczywiście dany problem rozwiązać w bardzo brzydki sposób – przestawić zmienną http.sslVerify za pomocą komendy (dla aktualnego projektu):
1 | git config http.sslverify "false" |
lub jak chcemy wyłączyć całkowicie weryfikacje ssl dla wszystkich projektów:
1 | git config --global http.sslverify "false" |
Jest to bardzo niezalecane rozwiązanie !!! Powstaje dość spora luka bezpieczeństwa – certyfikaty jednak raczej warto sprawdzać.
Istnieje bardziej cywilizowany sposób na rozwiązanie danego problemu. Wystarczy do pliku
1 | curl-ca-bundle.crt |
znajdującym się w zainstalowanym katalogu z gitem (u mnie był to katalog „c:\Program Files (x86)\Git\bin\”) dopisać na samym końcu certyfikat, który pochodzi z danego serwera dla danego projektu. I od tej pory dany certyfikat będzie już poprawnie walidowany.
A teraz coś z zupełnie innej beczki
Napisany przez Łukasz Dziedziul w offtopic dnia 19 listopada 2011
Takie tam moje przemyślenia odnośnie budowy: http://dziedziul.pl/2011/11/19/46/budowa/wnioski-po-zakonczeniu-instalacji-elektrycznej-w-domu/
Putty z obsługą wielu kart
Napisany przez Łukasz Dziedziul w Narzędzia dnia 13 listopada 2011
Aby móc odpalać Putty w wielu kartach podobnie jak strony w przeglądarce internetowej należy ściągnąć Putty oraz Putty Connection Manager i odpalić ten ostatni. Następnie wystarczy mu wskazać gdzie znajduje się binarka Putty i może sobie działać na kartach.
Jeśli już mamy Putty na komputerze z zapisanymi ustawieniami sesji, Putty Connection Manager wczyta je bezproblemowo i będą widoczne z prawej strony w zakładce.
Oprócz zakładek możemy skorzystać z możliwości podzielenia okna programu na poszczególne sesje ssh, co często może się przydać przy pracach administracyjnych lub programiystycznych.
Zrzuty ekranu z przykładową konfiguracją:

Strona programu nie działa, dlatego tez umieściłem plik na swoim serwerze:
Putty Connection Manager
Jak dodać własne wpisy DNS do Tomato
Napisany przez Łukasz Dziedziul w Administracja, Linux dnia 12 listopada 2011
Tomato to oparty o Linuksa alternatywny firmware do wielu routerów Linksysa oraz innych producentów. Ma dużo więcej funkcji niż oprogramowanie standardowe urządzeń. Jedną z takich opcji jest dnsmasq, prosty serwer DNS i DHCP.
Przez panel sterowania możne dodać swoją własną konfigurację, zmieniającą bardziej zaawansowane ustawienia, jest to niestety słabo udokumentowane. Długo szukałem jak móc dodać swoje własne wpisy DNS typu A do urządzenia. Oczywiście sprawa jest banalne jeśli się wie jak to zrobić.
Wystarczy wejść do panelu administracyjnego, wybrać z menu Advanced->DNS/DHCP i w polu „Dnsmasq
Custom configuration” wpisać następujące opcje:
1 | address=/jakas.domena.pl/206.12.19.7 |
Po zapisanie ustawień, serwer DNS zostanie automatycznie zrestartowany i po chwili będzie mogli korzystać z nowego wpisy DNS
Strona oficjalna Tomato: http://www.polarcloud.com/tomato
[Podstawy Grails] – Instalacja i konfiguracja Grails 2.0
Napisany przez Łukasz Dziedziul w Grails dnia 6 listopada 2011
Zaczynamy przygodę z Grails, lada moment pojawi się wersja 1.4 2.0. Jest to webowy framework, niektórzy stwierdzą, że kolejny, gdyż w świecie Javy jest ich pełno. To co odróżnia Grails od pozostałych to podstawy, na których został zbudowany. Są to sprawdzone rozwiązanie javowe, które zostały zgrabnie połączone nad wyraz ekspresywnym językiem Groovy. Fundamentem tego frameworku są między innymi: Spring, Hibernate, Quartz, JUnit, Tomcat, Jetty, H2, HSQLDB, Ivy oraz Maven, dzięki czemu pracujemy na sprawdzonych i bardzo dobrze przetestowanych w warunkach produkcyjnych rozwiązaniach.
Czytaj reszte tego wpisu »
Obsługa niepodpisanych przez CA certyfikatów SSL w Mercurialu/TortoiseHg
Napisany przez Łukasz Dziedziul w Narzędzia, Programowanie dnia 28 października 2011
Domyślnie Mercurial nie pozwoli nam połączyć się z repo po https czy ssh, które używa niepodpisanego przez CA certyfikatu. Oczywiście mozna kupić sobie odpowiedni certyfikat, ale dla potrzeb prywatnych czy wewnętrznych w firmie jest to nieopłacalne. Na szczęście można poradzić sobie z tym na kilka sposobów.
Wyłączenie sprawdzania certyfikatu
Można to zrobić jednorazowo poprzez przekazanie parametru –insecure do wywołania polecenia hg, np:
1 | hg clone --insecure https://hg.server.org |
Sprawdzanie certyfikatu można wyłączyć na stałe, Wystarczy w katalogu domowym użytkownika stworzyć bądź edytować plik .hgrc (w Windows to będzie mercurial.ini) i dopisać sekcję:
1 2 | [web] cacerts= |
Od tej pory możemy łączyć się ze repozytoriami mającymi dowolne klucze, co na dobrą sprawę nie jest zbyt dobre, bo możemy być ofiarami man-in-the-middle-attack i nawet nic nie zauważymy.
Dodanie certyfikatu do zaufanych
Jest to dużo lepsze rozwiązanie, bo pozwalamy tylko naszemu jednemu certyfikatowi na połączenie, także w razie jego zmiany Mercurial będzie nam krzyczał, że coś nie tak jest. W przypadku pozostałych certyfikatów weryfikacja będzie przeprowadzana standardowo. Podobnie jak w poprzednim przypadku musimy dopisać do .hgrc(mercurial.ini) odpowiednią sekcję:
1 2 | [hostfingerprints] hg.server.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:c1 |
gdzie
- hg.server.org – to nazwa naszego serwera z repozytorium,
- 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:c1 – to fingerprint SHA-1 naszego certyfikatu


