Kolejny bardzo udany wykład, Karsten Nohl na temat przełamywania zabezpieczeń w sieciach telekomunikacyjnych. Tym razem na temat rootowania kard SIM:
Operator ma możliwość instalowania na naszej karcie SIM, swojego oprogramowania np. preferowanych operatorów wykorzystywanych podczas roamingu. Instalacja odbywa się przez wysłanie binarnej wiadomości SMS (specjalny rodzaj - identyfikowany przez odpowiedni nagłówek), z komendą/aplikacją podpisaną (DES/3DES/AES) przez operatora. Taki sam klucz (wgrany kiedyś przez operatora na kartę) używany jest do stworzenia podpisanej odpowiedzi. Odpowiedzią, może być error informujący o źle podpisanej pierwotnej wiadomości. Odpowiedź (i czy w ogóle jest) zależy od telefonu i wynika najpewniej z różnej interpretacji standardu. Nohl-owi udało się złamać taki klucz (DES), tworząc tęczową tablicę.
Wgranie własnej aplikacji, niesie ciekawe perspektywy, np. pełne sklonowanie karty. Jak twierdzi Nohl, można ominąć sandbox - przynajmniej w dwóch popularnych implementacjach Java Card VM. Podatności jest ponoć dużo więcej i są dość proste do znalezienia, ale szczegóły zachował dla siebie.
ekstaza, geniusz, przebłysk, olśnienie, półprawdy, półśrodki, przemilczenia, zaćmienia, głupstwa, kłamstewka, oszustwa, hultajstwo, wyrachowanie, nieprawda, nieobiektywność, niepodważalna prawda, nierówność, nieomylność, słuszność, perfekcja, krnąbrność ... niegodziwość
26 stycznia 2014
25 stycznia 2014
[CERN] ROOT library - instalacja
Pierwsze podejście do biblioteki ROOT tworzonej przez CERN, z myślą o fizykach. Opowiadał o niej Vassil Vassilev na konferencji C++Now, kiedyś już podsyłałem linka: Interactive, Introspected C++ at CERN. Niestety nie znalazłem paczki, z której mógłbym sobie to zainstalować więc pozostała metoda ręcznej kompilacji. ROOT oferuje kilka ścieżek, na razie wybrałem najbardziej leniwą. Celem, jest odpalenie najprostszego przykładu. Linki:
- http://root.cern.ch/drupal/content/installing-root-source
- http://root.cern.ch/drupal/content/build-prerequisites
$ git clone http://root.cern.ch/git/root.git $ cd root $ ./configure $ make ============================================================ === ROOT BUILD SUCCESSFUL. === === Run 'source bin/thisroot.[c]sh' before starting ROOT === ============================================================ # Następnie trzeba wykonać skrypt, który ustawi ścieżki do # plików wykonywalnych (PATH) i biblioteki (LD_LIBRARY_PATH) $ source ./bin/thisroot.shTeraz zostajemy zachęceni do wykonania komendy "root", która uruchamia interpreter cling-a.
cling C/C++ Interpreter: type .? for help. root [0] printf("Hello World!\n"); Hello World! root [1]
20 stycznia 2014
18 stycznia 2014
[python] doctest
doctest jest modułem dodanym do standardowej biblioteki Python-a, umożliwiający testowanie wyjścia z interpretera. Testy ujęte są w docstring, wejście (action) rozpoznawane jest po >>>, tak jak to wygląda w interpreterze, następna linia jest oczekiwanym wynikiem. Domyślnie, dostest informuje jedynie o porażkach (można to jednak zmodyfikować).
import doctest def fun(): ''' # Testing sorted() >>> sorted([1, 3, 2]) [1, 2, 3] # Testing max() >>> max(1, 2) 1 ''' pass doctest.testmod()Wynik:
Failed example: max(1, 2) Expected: 1 Got: 2 ********************************************************************** 1 items had failures: 1 of 2 in __main__.fun ***Test Failed*** 1 failures.
11 stycznia 2014
[python] Wykrajanie sekwencji
Wykrajanie (slice) sekwencji:
# # s[i:j:k] -> wycinek s od i do j - [i, j) - z krokiem k # s = [0, 1, 2, 3, 4] # stwórz sekwencje z elementów o indeksach [i, j), i <= j print s[1:3] print s[1:1] # [i, i) -> zbiór pusty [1, 2] [] # jeżeli i jest pominięte lub równe None, przyjmij że jest równe 0 print s[:2] # s[0:2] [0, 1] # jeżeli j jest pominięte lub równe None, przyjmij że jest równe len(s) print s[2:] [2, 3, 4] # jeżeli i lub j jest większe od len(s), użyj len(s) print s[2:800] [2, 3, 4] # dla i, j negatywnych, oblicz nowe i := len(s) + i albo j := len(s) + j print s[-1] print s[-1:1] # odpowiednik s[4, 1], ponieważ i > j dostaniemy zbiór pusty 4 [] # wybierz co k-ty element (i, i+k, i+2*k, ...) z sekwencji pomiędzy indeksami [i, j) print s[0:4:2] print s[::2] # s[0:len(s):2] -> s[0:4:2] [0, 2] [0, 2, 4] # jeżeli i lub j są pominięte stają się wartościami końcowymi ("end"), to jaka to # wartość końcowa, zależy od znaku k # dla k < 0, sekwencja będzie odwrócona, czyli s' := [4, 3, 2, 1, 0] print s[::-1] # odpowiednik -> s'[0:len(s):-1] print s[::-2] # odpowiednik -> s'[0:len(s):-1] print s[:2:-1] # odpowiednik -> s'[0:2:-1] [4, 3, 2, 1, 0] [4, 2, 0] [4, 3] # k nie może być równe 0 print s[1:4:0] # Wyjątek! ValueError: slice step cannot be zero
Subskrybuj:
Posty (Atom)