Archiwum wpisów, które dodał Radek Strona 2 z 2



Introspekcja w PHP 5 (ang. Reflection)

PHP wraz z wersją oznaczoną numerem 5 oddało nam do dyspozycji zestaw bardzo ciekawy udogodnień, ułatwiających rozwiązywanie nietypowych problemów. Jedno z nich, które w dalszej części opiszę jest związane z inżynierią wsteczną (ang. reverse engineering).

Czytaj dalej ‘Introspekcja w PHP 5 (ang. Reflection)’

Dysk twardy w (nie)bezpiczeństwie

Dysk twardy w (nie)bezpiczeństwie, czyli chaker atakuje - ukryj prolog

Przeglądałem jak co dzień działy RSS lokalnej gazety w poszukiwaniu ciekawych publikacji i natknąłem się na coś co zwróciło moją uwagę:

“Linux mordercą laptopów?”

Pod tematem wpisu ubranym w ironię kryła się złowieszcza prawda o systemie sygnowanym logiem morderczego pingwina, jego mrocznej przeszłości owianej mgłą tajemnicy, zamiarach wobec nadludzkiej rasy laptopów jako ich największego wroga….
Cokolwiek przeszło przez moją neuronową strukturę oplatającą mózgowie, nie była to myśl dotycząca tematu publikacji. Ów temat który mimo, iż miałem przed oczyma, poruszający się ruchem wahadłowym z lekko zachwianą amplitudą (zapewne przyczyną nierównomiernych odchyleń były drgania klawiszy mej maszyny do pisania) nie był źródłem wygenerowania tej myśli.
Przyszła sama, nie wiadomo skąd, z pomieszczenia obok? kartki bezwładnie miotającej się na wietrze, która przed sekundą przykleiła się do mego okna aby zniknąć tak szybko jak się pojawiła? okno od zachodu… zaraz, zaraz… przecież dzisiaj nie ma wiatru… no tak - nie minęło ćwierć sekundy a ujrzałem przylegający do szyby drugi element, nie była to jednak kartka lecz rozradowana twarz d(o)ręczyciela poczty, a jakżeby inaczej w końcu dziś mamy niedziele wieczór…

- Nowego posta przyniesłem - usłyszałem zza drzwi, głos typowego wieśniaka…
- Dzienkujem - odrzekłem z politowaniem

Ciekaw byłem niezmiernie zawartości koperty, trzasnąłem drzwiami tak błyskawicznie jak je otworzyłem przerywając mężczyźnie na rowerze w połowie zdania, usiadłem wygodnie w swym skórzanym fotelu, wyciągając nogi daleko przed siebie, otworzyłem kopertę i zamaszystym ruchem wyciągnąłem z niej całą zawartość, były to arkusze szarego papieru datowane na… cztery miesiące w tył, była to treść najnowszego wpisu z mojego bloga. Nie było by w tym nic dziwnego gdyby nie fakt, że ów wpis chroniony był hasłem nie do złamania (5 znaków, jedynie wielkie litery). Dało mi to do myślenia, otrzymałem list od chakera, który dysponował komputerem o niespotykanej dotąd mocy obliczeniowej, złamał on zabezpieczenia i przejął poufną treść z mojego bloga. Jako, że najprawdopodobniej krąży ona już w sieci za magicznym dotknięciem różdżki wujka Gógla, którego zapewne udział w owym incydencie był nie mniejszy, nie pozostało mi nic innego jak opublikowanie wpisu, mimo iż plany były zupełnie inne…

“Tajne przez Poufne” czyli treść właściwa publikacji:

Wszystko zaczęło się od “Mordercy Laptopów”, jak niespodziewana lawina pociągnął za sobą kolejne linki… wyszukiwane frazy… opinie ekspertów… Gdy już zebrałem wymagane dane, przystąpiłem do analizy.

Możliwe jest iż przy niewłaściwych ustawieniach Zaawansowanego Zarządzania Energią dla dysku twardego, jest on w stanie zużyć się w czasie wielokrotnie krótszym, niżeli przy poprawnych ustawieniach.

Pobrałem pakiet potrzebny do zdiagnozowania problemu, właściwie to zrobiło to za mnie Aptitude.

root@~ / aptitude search smartmontools
p   smartmontools     - control and monitor storage systems using S.M.A.R.T.
root@~ / aptitude install smartmontools

Narzędziem zawartym w wyżej pobranej i zainstalowanej paczce, potrzebnym do diagnostyki jest smartctl, korzystamy z niego w następujący sposób:

root@~ / smartctl -d ata -a /dev/sda | grep Load_Cycle_Count

ATA - typ naszego dysku może być również SCSI, SAT (skrót od SATA)
/dev/sda - lokalizacja naszego urządzenia

Wartość, której szukamy to Load_Cycle_Count

193 Load_Cycle_Count 0×0032 099 099 000 Old_age Always - 17541

Jak widać z powyższego wpisu wartość Load_Cycle_Count dla mojego dysku twardego wynosi 17541 - dużo? Raczej nie, biorąc pod uwagę fakt, że laptop na baterii pracuje sporadycznie no i przede wszystkim jest nowy, nabyłem go zaledwie 4 miesiące temu.
Liczba cykli wzrasta u mnie wolno, tak więc nie przejmuję się tym problem, w końcu dysk nie ma nawet kiedy przełączyć się w tryb oszczędzania energii, więc nie ma czynnika, który mógłby powodować diametralny wzrost tej wartości.
Jednakże ten problem jest poważny mimo, że na taki nie wygląda, przykładem może być wpis Stefano Rivers’a u którego to owa magiczna wartość sięgnęła rzędu 160 000 w zaledwie trzy miesiące - imponujące nieprawdaż?

Jeżeli poniższe symptomy występują u Ciebie powinieneś zacząć się martwić i przeciwdziałać temu problemowi zanim stanie się na tyle poważny, że jego likwidacja nie przyniesie żadnych korzyści, ze względu na spóźnioną reakcję.

Symptoms of this bug are:
* frequent HD clicks — more than one per 3 minutes while idle, louder than the typical access sounds. Often more than twice per minute.
* Rapidly Increasing Load_Cycle_Count as displayed in the final number in “sudo smartctl -a /dev/hda | grep Load_Cycle_Count” (where /dev/hda is replaced with your own hard disk device)
* Early hard disk failure — some disks are cut down to less than a year of actual uptime.The problem seems to be caused by:
* Hardware defaults to aggressive power management, causing heads to park.
* Disk is touched often, causing heads to unpark.
* Most laptop drives handle up to 600,000 such cycles.Reasonable Limits / Criteria for a fix:
* There should be fewer than ~15 load cycles per hour, except during heavy usage while on battery.

No i oczywiście tymczasowe obejście problemu:

hdparm -B 254

-B set Advanced Power Management setting (1-255)

bug: https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695

Wine + FlashFXP 3.2.0

Łajn i patrol stumilowego szlaku - ukryj prolog

Przemierzając bezkresną przestrzeń najmroczniejszej z krain, tak mroczną, iż jej nazwa nie jest w stanie oddać całego ogromu oraz potęgi zamieszkujących ją Websajtów, tej samej krainy, w której od lat toczy się wojna między Ortami i Graficzanami a dzieci w wieku 12 lat konstruują własne układy elektroniczne w oparciu o najnowocześniejsze standardy zwane ifrejmami, wielokrotnie narażałem swoje życie.

Niebezpieczna wyprawa po krainie Łebdwa, zakończyła się niepowodzeniem. Nie odnalazłem żadnego godnego zastępcy dla mojego byłego współpracownika FlashFXP, jak się później okazało spiskującej przeciwko mnie i pracującego dla M$. Jedynym rozsądnym, aczkolwiek bardzo niebezpiecznym wyjściem jakie mi pozostało było przeprogramowanie Flash-a w taki sposób aby znów był lojalny wobec mojej nowej organizacji współpracującej ze światem Wolnego Oprogramowania, mowa tutaj o “Dejbian Indastri”. Sprawa była o tyle trudna, że musiałem odnaleźć osobę, która tego dokona…

Nazywał się Łajn, był profesorem zamieszkującym blok HQ bazy Wolnego Oprogramowania i jako jedyny ze znanych mi ożywicieli był niezależny od M$. Wielokrotnie słyszałem opinie potwierdzające jego zdolności w zakresie układów wszczepialnych, był jedynym, któremu udało się uciec z koloni M$. Przeprogramował umieszczony w płacie skroniowym nadajnik w taki sposób aby symulować jego poprawne działanie a nie odczuwać wpływu fali przez niego emitowanych.

Odnalezienie Łajna było wyzwaniem trudnym, jak nie co najmniej graniczącym z cudem, ukrywał się ze względu na swoją przeszłość, która pragnęła jego śmierci. Posłałem po niego swojego najlepszego tropiciela Pinga, misja była prosta. W przypadku odnalezienia profesora, wraca. Gdyby jednak z powodu nieoczekiwanego zwrotu akcji, któremuś z nich cokolwiek się stało wiedziałbym o tym. Ping ma przy sobie nadajnik, który emituje fale o długości 64m w odstępach 0,3ms więc gdy opóźnienie wzrośnie, co w krainie Telepsy jest czymś graniczącym z cudem, bądź nadajnik przestanie odpowiadać na wysyłane sygnały będę wiedział, że misja zakończyła się niepowodzeniem.
Zająłem miejsce przed odbiornikiem, włączyłem. Nasłuchiwałem rytmicznie wybijanego dźwięku z drewnianego pudła przykrytego kratą, imitującego głośnik, przypominało to stukot kropel wody uderzających w blaszany element, dźwięk był pusty. Im dłużej się wsłuchiwałem, tym bardziej moja podświadomość płatała mi figle, nieprzerwany stukot wydobywający się z urządzenia składał się w słowa, Tejli… Łejli… - słyszałem nieustannie w głowie. Byłem rozbity, popadłem w dziwny stan euforii, podśmiewałem się delikatnie, nie byłem w stanie zapanować nad natłokiem myśli wdzierających się do mojej głowy…

- Zaraz… Chwila… Coś tu nie gra…

Odbiornik przestał emitować dźwięk, podziałało to mnie niewiarygodnie, poderwałem się. Podbiegłem do urządzenia, cisza…

- To nie może… to nie może być prawda…

W jednym momencie natłok myśli przygniótł mnie do ziemi, oddech miałem płytki, nieustanne poczucie, że się duszę krążyło nade mną tak posępnie jakby pragnąc mojej śmierci, trwałem w tym stanie do momentu gdy nagle rozległo się pukanie… było to pukanie do drzwi. Tocząc wewnętrzny bój z nieistniejącymi wrogami doczołgałem się do drzwi, opierając ręce na zimnej, metalowej powierzchni powoli podążałem do prostokątnego prześwitu znajdującego się w górnej partii drzwi.

- Kto tam? Czego chcesz?
- To ja, Ping… wpuść mnie.

Serce zaczęło bić szybciej, litry krwi przetaczające się przez moje ciało zwiększyły swoją prędkość, w jednym momencie zrobiło mi się gorąco, tętno wzrosło… Niepewną, drżącą dłoń położyłem na zasuwie drzwi, powoli przesuwając w swoją stronę kawał ciężkiego metalu… im więcej światła przedzierało się do pomieszczenia tym bardziej stawałem się niespokojny. Drzwi uległy… do pomieszczenia wszedł Ping, z wyrazem twarzy nie zapowiadającym dobrych wieści…

- Ni… Nie… udało mi się go uratować, otoczyli nas… nie byłem w stanie… wybacz…
- Nadejdzie czas, czas triumfu Wolnego Oprogramowania, czas w którym M$ zapłaci za swoje wszystkie zbrodnie. Pomścimy śmierć Łajna…

Powaga sytuacji jeszcze do mnie nie dotarła, starałem się zachować spokój, smutek wymalowany na mojej twarzy, zdawał się pogłębiać… Mimo to głos miałem pewny, musiałem ze względu na wcześniej wypowiedzianą obietnicę… chodź tyle mogłem zrobić.
Wskrzeszę FlashFXP, przeprogramuję go sam, nie mam wyjścia… zrobię to.

“Przebudzenie”, czyli treść właściwa publikacji:

Na pierwszy rzut oka wszystko działało, FlashFXP uruchamiał się bezproblemowo, działały zakładki, okna… jednakże po chwili dostrzegłem, że realizacja połączenia z serwerem jest niemożliwa - FlashFXP nadzwyczajnie w świecie zawieszał się. Wina leżała po stronie obsługi kontrolki listy, która była odpowiedzialna za wyświetlanie plików zawartych na serwerze.

Znalazłem informacje na temat tego błędu w bugtrack-u Wine:

http://bugs.winehq.org/show_bug.cgi?id=5131
“The issue is caused by a message loop between the app and the
comctl32 listview code, when the listview is virtual (LVS_OWNERDATA).”

Błąd istnieje w comctl32/listview.c pobrałem patcha i zastosowałem go wedle zaleceń:

http://bugs.winehq.org/attachment.cgi?id=5518

Poprawiłem błędny kod listview.c oraz skompilowałem Wine raz jeszcze:

patch dlls/comctl32/listview.c < patch
./configure
make && make install

Po tych zabiegach wszystko działa bezproblemowo z Wine w wersji: 0.9.49

Korzystanie z komercyjnego oprogramowania trochę się kłóci z ideologią open-source propagowaną wraz z Linuksem, ale co zrobić gdy czasami nie można znaleźć alternatywy a ja osobiście lepszego klienta FTP jak do tej pory nie widziałem. Jeżeli posiadasz alternatywę, która według Ciebie mnie zainteresuje, pozostaw informację w komentarzach.






O mnie

  • Programista PHP
  • Zwolennik Open Source
  • Użytkownik Linuksa (Debian)
  • Capoerista
  • Miłośnik Anime
  • Maniak optymalizacji i wydajności

Kategorie