Jak odczytać ESN i UUID urządzeń Motorola z Windows CE 6.0 w .NET Compact Framework


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;

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , ,

Brak komentarzy

Problemy z authentykacją za pomocą klucza w Git pod windows

Jeżeli pod windowsem (w moim wypadku był to windows xp64) otrzymujesz komunikat podobny do:

1
2
3
4
5
6
7
8
9
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '~/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: ~/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

To warto zmienić domyślny program gita służacy do komunikacji po ssh na np. plink.
Robi się to za pomocą zmiennej środowiskowej:

1
GIT_SSH

Powinna ona wskazywać np. na plik plink.exe.
Konfiguracje do połączeń danego programu wykonuje się w putty. Po prostu konfigurujemy w nim nowe połączenie wykorzystujące nasz klucz (putty używa troszkę innej reprezentacji klucza ale narzędzie puttygen potrafi przekonwertować pliki z innych formatów).
Od tej pory jeśli chcemy połączyć się za pomocą klucza wskazujemy w url do połaczenia nazwę zdefiniowanego w putty połączenia (nazwa/adres ip, port, klucz będą dostarczone z danej konfiguracji).

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , , , , , ,

Brak komentarzy

Bootowanie obrazu ISO przy pomocy pendrive’a USB

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.

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , , , ,

Brak komentarzy

Konwersja repozytorium mercurial do git

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

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , ,

Brak komentarzy

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://&lt;server&gt;/&lt;project&gt;/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.

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , , ,

Brak komentarzy

A teraz coś z zupełnie innej beczki

Takie tam moje przemyślenia odnośnie budowy: http://dziedziul.pl/2011/11/19/46/budowa/wnioski-po-zakonczeniu-instalacji-elektrycznej-w-domu/

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

Brak komentarzy

Putty z obsługą wielu kart

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

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , , , , ,

Brak komentarzy

Jak dodać własne wpisy DNS do Tomato

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

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , , ,

Brak komentarzy

[Podstawy Grails] – Instalacja i konfiguracja Grails 2.0

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 »

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , ,

Brak komentarzy

Obsługa niepodpisanych przez CA certyfikatów SSL w Mercurialu/TortoiseHg

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

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • OSnews
  • Twitter
  • Wykop

, , , , , ,

Brak komentarzy