Archiwalia dla 02.2007

Grill IT 0100

Mamy oficjalny termin czwartego Grilla. Odbędzie się 6. marca o 18:30. Miejsce bez zmian, hotel Best Western. Więcej szczegółów na blogu imprezy.

Jak zwykle będzie można nas spotkać, tym razem wystąpię jednak tylko w barwach Generated Content.

Doskonałe włamanie do NFZ?

Z pewnością większość z was włamania na strony kojarzy nierozerwalnie z Gorionem, osobą powszechnie kojarzoną pod kątem bezpieczeństwa. Tym razem przedstawię wam jednak postać Roya, który dokonał czegoś dalece bardziej przebiegłego. Jego włamanie do NFZ posiada wszelkie cechy ataku idealnego — nie zostawił śladów, nie miał żadnego motywu i zrobił to bez naruszenia integralności systemu i bez obejścia zabezpieczeń cyfrowych. To sprawia, że jego atak nie kwalifikuje się pod żaden paragraf — jest całkowicie bezkarny.

Atak na NFZ

Kluczowym elementem ataku było posiadanie skrzynki e-mail. Jako przewidujący cracker, Roy swoją skrzynkę założył już lata temu, na długo przed datą ataku, który miał miejsce dzisiaj. Dzięki temu ewentualne śledztwo nie byłoby w stanie powiązać daty rejestracji z samym atakiem.

Dalej poszło z górki, Roy długo czekał na ten dzień, ale w końcu jego chytry plan chwycił. Dziś rano na jego skrzynkę przyszedł list. List z NFZ. Z załącznikiem.

Zapomniawszy dawno o swych niecnych zamiarach, Roy był nieco zaskoczony niezamówioną korespondencją. Zaskoczony do tego stopnia, że w pierwszej chwili nie wiedział, dlaczego pracownik Działu Informatyzacji wysłał mu w załączniku cały serwis NFZ wraz z panelem administracyjnym.

Epilog

Właściwie, po pewnym czasie, Roy przypomniał sobie, że wcale nie planował żadnego ataku ani włamania. Postanowił więc odpisać, pytając o co chodzi. Odpowiedź była tyle krótka, co zwięzła. I takoż nieortograficzna:

Przepraszam, to nie są wirusy. Zaszła pomyłka w adresie e-mail.

Proszę usunąć tego mail’a jak naj szybciej

Jeśli więc posiadacie konto pocztowe, strzeżcie się. Któregoś dnia może się bowiem okazać, że i wy zostaniecie bezwzględnymi crackerami, a wasze zdolności w dziedzinie inżynierii socjalnej rozwinęły się na tyle, że ofiary same się do was zgłaszają.

Roy list usunął, choć nie jestem pewien, czy ktoś inny zrobiłby to samo. Zaś Narodowemu Funduszowi Zdrowia gratulujemy działu IT.

Marvell vs. Patrys

W ramach nowej zabawy napadł mnie Paweł. W skrócie chodzi o to, że wytypowana osoba musi opublikować pięć nieznanych faktów ze swojego życia. Potem musi wybrać pięć następnych osób, które podlegają tym samym zasadom.

Czego pewnie nie wiecie

  1. Jestem dzieckiem komputerów. Kiedy szedłem do zerówki, potrafiłem w miarę płynnie czytać. W pierwszej klasie nauczyłem się systemu szesnastkowego, byłem wtedy dumnym posiadaczem Atari 130 XL i prenumeratorem Bajtka. Później pojawiła się Amiga 500 (1MB CHIP, 2MB FAST, dysk twardy 40MB), którą z kolei zastąpił 486 DX4/100.
  2. Nie umiem gotować. Ze sprzętem elektronicznym potrafię zrobić wszystko, potrafię naprawić większość mechanicznych urządzeń, matka nauczyła mnie nawet robić na drutach. Moje zdolności kulinarne ograniczają się do pieczenia mięs i robienia jajecznicy (no, potrafię jeszcze ugotować makaron albo przygrzać mrożonki).
  3. Angielskiego nauczyłem się sam, początkowo oglądając kreskówki na zachodnich kanałach, a potem śledząc BBC. W szkole średniej wstępny egzamin zakwalifikował mnie do grupy zaawansowanej. Przestraszyłem się i poprosiłem o zapisanie do średnio zaawansowanej. Od tego czasu co semestr proszono mnie o zmianę grupy.
  4. Jednym z moich hobby jest masaż. Kobiet. Podobno jestem w tym niezły, chociaż nigdy na żadnym kursie nie byłem. Zawsze w pobliżu łóżka znajdziesz u mnie olejek eteryczny albo oliwkę Johnsona.
  5. Zdarza mi się być poligamistą, nie stronię od kobiet, a jednak jest jedna, dla której byłbym gotów zrobić wszystko, zostawić cały swój świat i choćby jutro wyjechać na Kamczatkę. Na szczęście nie jest zainteresowana, bo co ja bym robił na Kamczatce?

Do odstrzału

OpenID chwilowo wyłączone

Jak pewnie zauważyliście, próba wejścia na stronę danej notki dzisiaj zwracała białą stronę. Okazało się, że winna jest wtyczka OpenID Registration. Chwilowo została więc wyłączona. W logach nie mam śladu po żadnych błędach, więc OpenID powróci, kiedy zdiagnozuję problem.

Django: nie róbcie tego w domu

Wczoraj byłem zmuszony szybko dodać dodatkową funkcjonalność do jednej z rozwijanych przez nas aplikacji. Widok, o który chodziło opiera się na automatycznym, scaffoldowanym widoku administratora. Brzmi prosto?

Problem polegał na tym, że dostosowywanie logiki administratora jest dopiero w fazie planów (gałąź admin-newforms). W związku z tym, rozbudowanie go o własną logikę jest teoretycznie na tym etapie niewykonalne.

Przekopałem się więc przez większość kodu modułu django.contrib.admin i okazało się, że można Django nieco oszukać. Widoki są funkcjami, z czego korzysta się często przy generic views. Nie można po nich dziedziczyć, ale można wołać jeden z drugiego.

Brzydki hack

Do pliku urls.py na samym początku (przed sekcją admin) dopisujemy:

(r'^admin/aplikacja/model/add/', 'serwis.aplikacja.admin_views.add_stage'),

Następnie zakładamy plik serwis/aplikacja/admin_views.py:

from django.contrib.admin.views import main

def add_stage(request, *args, **kwargs):
	post = request.POST.copy()
	if request.method == 'POST':
		post['user'] = request.user.id
	request.POST = post
	return main.add_stage(request, ‘aplikacja’, ‘Model’, *args, **kwargs)

Voila!

Parę słów wytłumaczenia

Pierwsza część jest chyba oczywista, w tym przypadku nadpisujemy widok dodawania dla konkretnego modelu. Ponieważ Django przetwarza mapę rutingu w takiej kolejności, w jakiej są podane regułki, nasza linijka przesłoni znajdujące się niżej automatyczne reguły wbudowanego panelu administratora.

Druga część to utworzenie osobnego pliku dla widoków administracyjnych (nie musi to być osobny plik, ale to dobra praktyka). W pliku tym umieszczamy definicję własnego widoku add_stage.

W powyższym przykładzie dodawany jest automatycznie właściciel dla tworzonej instancji modelu. Nie bardzo można zrobić to w samym modelu, bo model jest bezstanowy i nie ma dostępu do stanu aplikacji. Poza tym, chcemy, żeby pole to było ustawiane tylko w tym przypadku.

Obiekt request.POST jest domyślnie immutable, więc tworzymy jego kopię i właśnie tę kopię modyfikujemy, a następnie podmieniamy oryginalny obiekt.

Ostatnia linijka powoduje wywołanie oryginalnego, magicznego widoku administratora, dostarczonego przez Django. Z tą różnicą, że przekazujemy do niego nazwę aplikacji i modelu. W przypadku wywołania bezpośredniego, pochodzą one z wyrażenia regularnego w konfiguracji urls.py, tutaj musimy podać je jawnie.

Jamendo - Otwórz uszy

Jamendo

Dopiero dzisiaj miałem czas pogrzebać dłużej w złożach Jamendo. I grzebię tak od dobrej godziny.

Jamendo to otwarta baza równie otwartej muzyki. Znajduje się tam obecnie ponad 26 tysięcy (sic!) utworów, jest więc w czym wybierać. Wszystkie na licencji Creative Commons, można zatem słuchać ich bez dodatkowych opłat.

Jak to możliwe?

Idea serwisu krąży wokół założenia, że słuchacze powinni wspierać artystę, a nie wytwórnię. Artyści zaś powinni stawiać na publiczność i swoją muzykę, a nie na kontrakty płytowe. Istnieje możliwość wsparcia indywidualnych wykonawców, więc dobra muzyka obroni się sama.

Polecam wszystkim tym, którzy nie słyszeli jeszcze o serwisie. Polecam i podobnym mnie, którzy dokładne zapoznanie się z nim odkładali na wieczne jutro. Żałuję, że nie zrobiłem tego wcześniej.

Jogger.pl ma 4 lata, rusza Techblog

Na początek chciałem pogratulować Robertowi Sparrowowi Wróblowi, bo swoją platformę blogową prowadzi dzielnie od 4 lat. Sam przez długi czas prowadziłem tam swojego bloga, aż zdecydowałem, że WordPress daje mi nieco więcej możliwości i swobody (i mniej komentarzy losowych ludzi, którzy akurat czytali stronę główną).

Co jest jednak ciekawsze, Jogger zdecydował się wrócić do korzeni i postawić ponownie na blogi techniczne. Za oficjalnym blogiem:

Od dłuższego czasu na Stronie Głównej pojawia się coraz więcej wpisów niezwiązanych z szeroko pojętymi technologiami (w tym i informatycznymi). Przez to, wiele osób kompletnie przestało ją przeglądać, i skupiło się wśród znanych sobie Joggerów. I właśnie dla nich, przyszykowałem małą niespodziankę ;)

Od dziś (20.02.2007), Jogger posiada drugą domenę - Techblog.pl. Nie martwcie się, nie musicie zakładać nowych kont - do tego została utworzona specjalna kategoria, która zwie się… Techblog! ;) Tylko wpisy z niej lądują na nowej stronie głównej, i mogą się w niej znajdować TYLKO wpisy techniczne. Można umieszczać w niej nawet wpisy o naprawie kranu w łazience, jeśli kogoś to interesuje, pod warunkiem, że nie będzie to wpis typu kran się zepsuł, jak go naprawić. Osoby, które mimo upomnień będą dodawać wpisy zarówno nie na temat, jak i o niskim poziomie merytorycznym, stracą możliwość publikowania czegokolwiek w tej kategorii.

Fanów blogowania technicznego zapraszam więc na Techblog.pl.

Kolejna tapeta?

Tym razem szybki projekt, dwie godziny zabawy w Inkscape. Pastwiłem się nad programem, odtwarzając jeden z rysunków żeńskiej wersji Firefoksa.

Firefox Girl

Licencja tradycyjna, CC-BY-NC-SA. Wersji niepanoramicznej nie będzie, bo wystarczy sobie wyśrodkować obrazek na pulpicie.

Update: Tapeta w SVG, licencja ta sama.

Grill IT 3 na wideo

Tym z was, którzy przegapili trzecią edycję Grilla, polecam zapoznanie się z materiałami wideo, które niedawno pojawiły się na blogu Grilla.

Dostępne są cztery nagrania prezentacji i komplet slajdów do nich (z wyjątkiem serwisu Live Chat, którego reprezentanci demonstrację przeprowadzali na żywym programie).

To był, zdaje się, nasz ostatni Grill w obecnym składzie ekipy iCenter. Następnym razem pojawimy się jako przedstawiciele nowej firmy.

Muszę pamiętać, żeby nie machać tyle rękami, kiedy mówię, bo przyciągam uwagę i filmują moje plecy zamiast ekranu. ;)

AlphaNet - hosting w wersji alfa

Ze strony alpha.pl krzyczą do nas najnowsze wersje oprogramowania. Na konto skusił się też kiedyś mój kolega, Łukasz Olejnik. Jego serwis od jakiegoś czasu nie działa.

Dostawca usług nie raczył o tym poinformować, poinformował za to wdzięcznie skrypt crona. I informuje nadal, ze szwajcarską punktualnością, dokładnie co godzinę.

Serwis ma tego pecha, że od początku swego istnienia korzysta z funkcjonalności eAccelerator, który niegdyś na wspomnianym hostingu zwykł działać. Być może wtedy była to jeszcze wersja beta, a do wersji alfa przeszli niedawno?

Cóż, zdarza się, pomyślał Łukasz i czym prędzej zgłosił problem swojemu hostowi. Czym prędzej odpisał i host, a helpdesk pomoc swą zaoferował w te słowy:

eAccelerator działa. Proszę zobaczyć w phpinfo()

Uspokoiło go to nieco i utwierdziło w przekonaniu, że może spokojnie zignorować wyświetlane zamiast strony:

Call to undefined function: eaccelerator_get()

Do dziś ignoruje więc komunikaty, pracuje także nad przekonaniem swoich odwiedzających, że biała strona z czarnym napisem nie jest warta uwagi i świadczy o normalnej pracy serwera.

Dziękujemy zatem panom z AlphaNetu za wyczerpującą odpowiedź. Gratulujemy także czasu reakcji na zgłoszenie, a tak wspaniałego hostingu na resztę życia i sobie i wam życzę.