2016-06-18:

Streamowe konkursy - wyniki

livestream
Najpierw wyniki losowania trzech egzemplarzy książki „HTML5 Komponenty” autorstwa Sebastiana "xa" Rosika. Książka została wydana przez wydawnictwo PWN, które jest jednocześnie fundatorem nagród - dzięki! Magiczny skrypt we współpracy z /dev/urandom wylosował następujące trzy osoby: emzet, Lonek Wolf, pajadam - gratulacje! Mejle z prośbą o adres już do Was wysłałem (no, nawet dostałem już część odpowiedzi).

Czytaj dalej...
Tak na szybko:Kolejny livestream odbędzie się w piątek (17.06) o 19:00 na http://gynvael.coldwind.pl/live. Tematem będzie OSDev (#5) i próba uruchomienia tego co do tej pory napisałem na prawdziwym komputerze - z tym pewnie będzie się wiązać trochę debuggowania i doimplementowywania rzeczy o których wspominałem, ale które pominąłem.Dla przypomnienia: CFP na Security PWNing Conference jest nadal otwarte - zapraszamy do zgłaszania prelekcji :)Za dwa dni pojawi się nowy numer magazynu Programista; jak wspominałem na ostatnim streamie, będzie tam m.in. artykuł o technice anty-RE związanej ze sprawdzaniem integralności kodu programu - „Kontrola integralności: jak się upewnić, czy 2+2 nadal = 4” autorstwa Michała "Z" Żuberka. Oprócz tego przeglądałem wcześniej kilka innych artykułów z numeru, i jest przyjemnie niskopoziomowo dzięki dwóm kolejnym: „Zrozumieć emulację” oraz „Którędy zmierza program, czyli wskaźnik stosu i rejestr statusu mikrokontrolera AVR od podszewki”.Póki co tyle.

Czytaj dalej...
Pod koniec roku, tj. 7-8 listopada, odbędzie się w Warszawie pierwsza edycja Security PWNing Conference - konferencji organizowanej przez wydawnictwo PWN (przy której organizacji trochę pomagam). Kilka dni temu otwarte zostało CFP (tj. zaproszenie do nadsyłania propozycji prelekcji), jak i sama rejestracja na konferencje (konferencja jest płatna; early bird kosztuje 614 PLN, potem 1106 PLN przez długi czas). Agendy jeszcze nie ma, choć kilka pierwszych osób już potwierdziło udział, więc niedługo pojawią się na liście.

Czytaj dalej...
Kilka notatek po ostatnim streamie + data kolejnego:W środę/czwartek odbył się w Belluminar - CTF rozgrywany w Pekinie (przy czym dodatkowi gracze mogli grać również online), który był dość eksperymentalny jeśli chodzi o... wszystko. Przede wszystkim udział wziąć mogły jedynie zaproszone drużyny; zgodnie z opisem zostało zaproszone 10 najsilniejszych drużyn na świecie, w tym 5 według rankingu CTFTime.org (w którym nasza drużyna trzyma się w okolicach top1-3 od kilku lat), a 5 kolejnych spośród azjatyckich drużyn (ostatecznie znalazły się tam topowe drużyny z Chin, Taiwanu i Korei). Co więcej, zadania były przygotowywane również przez same drużyny (a nie przez organizatorów) - każda drużyna przygotowywała dwa zadania, z czego jedno musiało być związane z Windowsem; swoje zadania należało również zaprezentować po samym CTFie, za co otrzymywało się dodatkowe punkty (i to całkiem sporo). Interesująca była również pula nagród - top1 otrzymywał 50 tyś. USD, top2 30 tyś., a top3 20 tyś. Dragon Sector wywalczył czwarte miejsce, więc niestety musieliśmy obejść się smakiem (so close!). Dodam, że w skład reprezentacji Dragon Sector do Pekinu polecieli: valis, Redford, mak, jagger oraz Lympho - kudos! Ostatecznie wygrał zespół KeyResolve, który de facto składał się z członków koreańskiego DEFKOR (jest to zespół który wygrał ostatni DEF CON CTF w Vegas) oraz amerykańskiego PPP (którego chyba nie trzeba przedstawiać).Następny stream: piątek 10.6 19:00 na gynvael.coldwind.pl/live. Jak wspominałem, będzie to powtórzenie mojej prelekcji z KrakWhiteHat pt. "Wstęp do RE". Na jeszcze kolejnym streamie wrócimy do OSDev, dodamy A20 i spróbujemy uruchomić to co mamy na prawdziwym komputerze.Wczorajszy stream można znaleźć na YT - o dziwo tym razem wszystko zadziałało (no, może nie za pierwszym razem, ale ostatecznie zadziałało) i udało się skończyć o czasie. Kod można znaleźć na moim githubie. Kilka dodatkowych notatek z czatu (które wychwyciłem dopiero po streamie) znajduje się pod tymi newsami. Na streamie ogłosiłem również konkurs:KONKURS (tym razem skillowy)DO: 12.06 23:59Napisz efekt graficzny:- działający w trybie tekstowym- działający jako bootloader- zajmujący max 512 bajtów (stage1 ;>)- działający minimum pod BochsNagroda: gift card 100 GBP na amazon.co.uk Kod źródłowy oraz wersję skompilowaną (i najlepiej również bochsrc) należy podesłać na mojego mejla do następnej niedzieli do godziny 23:59; po wysłaniu mejla plz dajcie mi również znać w komentarzach/na ircu/gdziekolwiek, że wysłaliście, tak abym mógł potwierdzić, że praca doszła. Good luck!

Czytaj dalej...
Garść newsów:Najbliższy Livestream odbędzie się w piątek (03.06) o 19:00 (na http://gynvael.coldwind.pl/live) - będzie to kolejny OSDev, w którym (o ile nic się nie posypie) będę się starał załadować Hello WorldKernel napisany w C do pamięci i uruchomić, rozprawiając się wcześniej z A20. Jeśli chodzi o problem z tablicą stron, to pewnie widzieliście już poprzedni post + komentarze pod nim; TL;DR: dwie opcje w bochsrc były źle ustawione (cpuid i model).Wczoraj wrzuciłem semi-krótkie video z typowymi newsami o których opowiadam na livestreamie, tak, aby zaoszczędzić czasu w piątek. W video są stare stacje dyskietek, stare komputery, świeże CTFy i zadania z tychże.W przyszłym tygodniu na Livestreamie powtórzę swoją prelekcję z KrakWhiteHat pt. "Wstęp do RE" (wersja 1.1 - trochę slajdy chce poprawić jeszcze, dodać jakieś dema, etc) - serdecznie zapraszam.

Czytaj dalej...
(Post gościnny by reenz0h)Na ostatnim streamie OSDev#3 Gynvael kontynuował rozwijanie bootloader'a, aby ostatecznie wejść w tryb long mode. Ustawił odpowiednie parametry procesora (GDT, PAE, EFER MSR, etc.), ale próba wejścia w stronicowanie przy użyciu 1GB stron nie powiodła się. Emulator Bochs przerywał działanie z błędem "physical address not available":<bochs:1> c(0).[166562263] ??? (physical address not available)Next at t=166562264(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0Postanowiłem znaleźć trochę wolnego czasu i spróbować uruchomić ten kod u siebie.

Czytaj dalej...
Dzisiaj krótko: w poniedziałek 16.05 o 19:00 trzecia część livestreamu o OSDev na http://gynvael.coldwind.pl/live (czyli YT). Dla przypomnienia, ostatnio udało się wskoczyć w tryb 32-bit (kod źródłowy na github), a teraz trzeba przeskoczyć do trybu 64-bitowego i uruchomić jakiś kod w C. Dodam, że eksperymentalnie utworzyłem "wydarzenie" na FB - ktoś wspominał, że jest tam opcja przypominania (kilka osób o to pytało). Na koniec dodam, że będę miał do rozlosowania dla widzów kilka videokursów z videopoint.pl (zasponsorowanych właśnie przez wspomniany serwis). OK, tyle - do zobaczenia w poniedziałek!

Czytaj dalej...
Wracam powoli do normalnej strefy czasowej, więc czas i również wrócić na bloga. Na początek kilka krótkich newsów:

Czytaj dalej...
Wczoraj podczas livestreamu m.in. pokazywałem jak rozwiązywało się zadanie plaiddrive (WEB450) z PlaidCTF 2016, i jak to zwykle bywa podczas demo ciekawszych rzeczy, coś nie zadziałało. Konkretniej, w kluczowym momencie chciałem pokazać, że można przejść po ramkach obiektu window niezależnie od originu przebywanych ramek, aż do ramki z tym samym originem; a następnie dostać się do jej treści - i zamiast dostępu do location/document dostałem widoczny wyżej wyjątek, że originy się nie zgadzają. Stwierdziłem wtedy, że pewnie robię jakiś głupi błąd - i w rzeczywistości tak było ;)

Czytaj dalej...
W kolejności od przyszłości do przeszłości:LivestreamKolejny livestream odbędzie się jutro - wtorek 19.04, o godzinie 19:00 na moim kanale YouTube (EDIT: nagranie /EDIT). Jest to ostatni stream przed moim wyjazdem, więc będzie raczej troszkę krótszy i tematem będą tylko CTFy - livestream z OSDev#2 odbędzie się na początku maja (bliżej połowy).DevTalk#33Niedawno miałem okazję odbyć 45-minutową rozmowę z Maciejem Aniserowiczem z devstyle w ramach prowadzonego przez niego podcastu DevTalk o różnych rzeczach związanych z programowaniem i moją książką. Podcast doczekał się publikacji, więc zachęcam do rzucenia okiemuchem:DevTalk#33 – O programowaniu z Gynvaelem ColdwindemRage Against The Machine (PlaidCTF 2016, RE250)Na mikrobloga na 4p oraz mój FB wrzuciłem krótki write-up z zadania Rage Against The Machine (RE250), w którym trzeba było "zrewersować" sieć neuronową. Dodam, że ostatecznie zamiast ją rewersować napisałem jakiś inny kawałek (bardzo) sztucznej inteligencji (choć w tym wypadku to bardzo duże słowo), ale samo zadanie było bardzo oryginalne i ciekawe.PlaidCTF 2016 i CONFidence Teaser CTF 2016Podsumowanie wrzuciłem na FB. TL;DR: w PlaidCTF zajęliśmy top6 (wygrał 217; top1-3 teamy z Azji btw); CONFidence Teaser CTF 2016 wygrał 9447 (drużyna z Australii) - gratulacje! Główny CTF z serii CONFidence CTF 2016 odbędzie się 19-20 maja w Krakowie podczas konferencji CONFidence; format: jeopardy, team (4), 24h, offline, open (dla uczestników konferencji), rankingowy (ctftime), nagrody (top1 10000 PLN, top2 5000 pln, top3 2000 pln). HF GL!Póki co tyle :)

Czytaj dalej...
Trzy newsy (w kolejności chronologicznej):LivestreamKiedy: 13.04 (środa) od 19:00Temat: 15 minut losowych rzeczy, a potem OSDev #1Gdzie: mój kanał YT (link do streama pojawi się tutajEDIT click /EDIT oraz w sekcji „Live now” na YT).CONFidence CTF 2016 TeaserCo to: organizowany przez nas (Dragon Sector) teaser CTF.CTF format: jeopardy, team, online, teaser (6-12 zadań), 24hGdzie: https://ctf.dragonsector.pl/ - rejestracja jest otwartaNagrody: związane z głównym CTFem, który odbędzie się podczas konferencji CONFidence 19-20 maja w Krakowie (wejściówki, pokrycie kosztów przejazdu, noclegi - szczegóły na stronie CTFa)CTFTime: click; CTF jest liczony do klasyfikacji generalnejKrakYourNetCo to: 5-dniowa konferencja ze szkoleniami i CTFem; na miejscu w Krakowie;Kiedy: 19-23 kwietniaGdzie: AGHIle: bezpłatnie (łącznie z warsztatami; przy czym trzeba się zapisać)Temat: bezpieczeństwo sieciowe, IoT, aplikacje mobilneCTF: Jest - Capture the FlAGH (rejestracja na stronie konferencji - trzeba myszką najechać na czerwony kwadrat z napisem "Capture The Flag" w sekcji Warsztaty)CTF format: jeopardy, team (limit: 3 osoby), offline, tylko dla studentów poniżej 26 roku życia, 3 dniCTF nagrody: staż w EY, kindle, słuchawki, powerbanki, inneCTFTime: CTF nie jest liczony do klasyfikacji generalnejWWW: http://krakyournet.pl/I tyle póki co.

Czytaj dalej...
Mój wydawca podrzucił mi informacje, że wypuszcza książkę o Minecraft. Przyznaję, że w Minecraft nigdy nie grałem i kojarzy mi się z dziwnymi zadaniami na CTFach, grafikami z miliona klocków czy masą książeczek/kubków/podkładek/etc z motywami z Minecrafta, które można znaleźć w lokalnych księgarniach (serio, mają całe póki tego). W każdym razie, odpisałem coś w stylu "to nie wygląda jak coś co zainteresuje moich czytelników" (dla nowych czytelników: na moim blogu nie można wykupić reklamy, ani kupić zamówionego/sponsorowanego posta - jeśli uważam, że coś nie zainteresuje programistów którzy czytają mojego bloga albo mnie, to tego po prostu nie wrzucam), na co Łukasz (mój wydawca) dopowiedział "skryptuje się to w Pythonie" - i przyznaje, że tu mnie miał, z dwóch powodów. Po pierwsze, jak wiecie, lubię Pythona. Po drugie, lata temu miałem okazję pobawić się trochę w skryptowanie innej gry (przy czym w escript, a nie w Pythonie - być może część z Was nawet pamięta jakieś moje tutoriale, choć tylko kilka ich wyszło) i się świetnie przy tym bawiłem. W każdym razie doszedłem do wniosku, że być może kogoś (szczególnie młodszego, bo książka jest o podstawach programowania pisana dla młodszych odbiorców) zainteresuje, szczególnie, że wiem też, że część czytelników ma już potomków - stąd ten mini-post.W każdym razie, o książce można poczytać na stronie wydawcy:http://ksiegarnia.pwn.pl/Nauka-programowania-z-Minecraftem,331284557,p.htmlZ tego co widzę teraz jest faza preorderu, a sama książka wychodzi 25 kwietnia. Książka jest z tej samej serii co dwie inne o których pisałem wcześniej na blogu - o Pythonie (ale bez Minecrafta) i o JS. Dodam jeszcze na koniec, że wygląda na to, że będę miał 3 egzemplarze do rozdania na livestreamie (domyślam się, że Was raczej nie zainteresuje, ale każdy ma jakąś rodzinę/znajomych/dzieci/etc, tj. kogoś, kto mógłby się ucieszyć z prezentu tego typu).

Czytaj dalej...
Czas na Secunda Aprilis (no OK, bardziej Quarta Aprilis), czyli wytłumaczenie/sprostowanie Prima Aprilisowego postu. W dużym skrócie, w tym roku na pierwszego kwietnia opublikowałem "pierwszą część wideo-tutoriala języka Python", w której pokazałem jak "w prosty sposób" stworzyć funkcje literującą podany napis, a następnie jak narysować (sic) moduł Pythona z ową funkcją w programie Microsoft Paint. Oba podane przykłady były pokazane w bardzo bardzo krzywym zwierciadle, niemniej jednak oba były w pełni działające - stąd też postanowiłem poświęcić trochę miejsca, żeby dokładnie(j) wytłumaczyć co tam się w zasadzie działo. Dodam, że żart wyszedł mi lepiej niż się spodziewałem, co wnioskuje po tym, że kilka osób zorientowało się, że "coś jest nie tak" dopiero jak odpaliłem Painta :)

Czytaj dalej...
We wtorek (5.04) o 19:00 kolejny Livestream - tym razem zapowiadany wcześniej "tutorial", podczas którego pokażę, jak skonfigurować sobie Windows+Linuxa w taki sposób, jak ja mam to zrobione (video na YT). Od razu dodam, że cały setup jest bardzo eksperymentalny, niestabilny i może powodować, że okoliczne kury będą niosły mniej jaj, krowy dawały mniej mleka i tak dalej... Dla niecierpliwych, oprogramowanie, którego używam do komunikacji między VM (Linux) a hostem (Windows) znajduje się na moim githubie; jest tam również link do dokumentu z (niepełną) listą kroków potrzebnych do uzyskania takiej konfiguracji. Dodam, że warto przed streamem zainstalować sobie jakiegoś GNU/Linuxa na VMce - ja użyje jakiegoś serwerowego Ubuntu.

Czytaj dalej...
2016-04-02:

Livestream: wyniki konkursu

livestream
O konkursie na dokończenie xoxoxo pisałem już wcześniej na blogu, jak i mówiłem podczas livestreamów. W skrócie, chodziło o to by trochę "uładnić" grę - dodać jakieś ASCII-arty, kolory, itp., a do wygrania była prenumerata Programisty (w tym miejscu wielkie podziękowania dla redakcji za dorzucenie drugiej prenumeraty do puli nagród!). Ostatecznie wyszło dość kameralnie - tj. zostały zgłoszone dwie pracę, a komisja w N-osobowym składzie: KrzaQ, KrzaQ oraz KrzaQ, zdecydowała o przyznaniu miejsc w następującej kolejności:1. pajadam2. masakraGratulacje!

Czytaj dalej...
Tak jak wspominałem na poprzednim streamie, zacząłem nagrywać video-kurs języka Python. Pierwszy odcinek już jest na YouTube - pokazuje w nim jak napisać proste Hello World, oraz jak tworzyć własne funkcje oraz rysować własne moduły. Kod stworzony podczas odcinka znajduje się oczywiście na githubie - dodam, że testowałem go jedynie pod Windows 10 na Python 2.7.3 64-bit. Miłego oglądania!

Czytaj dalej...
2016-03-30:

RST Hackathon Wrocław - 8-9 kwietnia 2016

programowanie:wrocław
Xa podrzucił mi info, że współorganizuje frontendowy (Node.js/HTML5) hackathon, który odbędzie się 8-9 kwietnia we Wrocławiu, w siedzibie firmy RST (Racławicka 2-4 (6 piętro)). Dokładny temat hackathonu zostanie podany przed rozpoczęciem zabawy, więc wiadomo jedynie, że będzie tam Node.js i HTML5, że będą nagrody, oraz, że trzeba mieć własny sprzęt. Szczegóły można znaleźć na stronie hackathonu - http://hackathon.rst.com.pl/. Ilość miejsc jest zapewne ograniczona, więc warto zawczasu się zarejestrować (na samym dole strony). HF GL :)

Czytaj dalej...
2016-03-28:

Zagadka zmniejszającej się konsoli

winapi:windows:re
Podczas jednego ze streamów bawiłem się wczytywaniem rozpakowanych plików .xp (REXPaint), czyli ASCII-artów, w których zarówno kolory czcionek, jak i kolory teł mogły być dowolnie zdefiniowane (w rozumieniu RGB). Ich wyświetlenie wymagało zmiany domyślnej palety kolorów w Windowsowej konsoli, co jest jak najbardziej możliwe. Nieprzewidzianym efektem ubocznym zmiany palety kolorów była zmniejszająca się konsola - każde wywołanie pary GetConsoleScreenBufferInfoEx + SetConsoleScreenBufferInfoEx powodowało utratę jednego wiersza i jednej kolumny (ew. czasem, w zależności od ustawień, jedynie jednego wiersza). Z efektem tym zresztą spotkałem się zresztą kilka dni wcześniej, podczas gdy siedzieliśmy z masakrą (znanym Wam pewnie jako moderator na livestreamie) nad Pythono'wym ctypes i wywoływaniem wspomnianych wcześniej funkcji, jednak ani wtedy, ani podczas streamu nie zagłębiłem się w temat na tyle, żeby dojść co jest problemem. Wczoraj jednak znalazłem trochę czasu.

Czytaj dalej...
W najbliższy wtorek (29.03) o godzinie 19:00 kolejny livestream. Jak wspominałem ostatnio, zdecydowana większość z Was (około 70% osób) preferuje YouTube, więc tam też osiądę - a więc wybór platformy za nami! Oznacza to mniej więcej tyle, że za każdym razem jak będę streamować, to link do streama automatycznie pojawi się na moim kanale (youtube.com/user/GynvaelColdwind) w sekcji "Live now".Pojawia się w związku z tym inne pytanie - jaki temat wziąć na tapetę tym razem? I to jest oczywiście pytanie do Was. Jeśli macie jakieś pomysły / coś Was konkretnego interesuje, zostawcie propozycję tematu w komentarzu poniżej. Jeżeli ktoś podał już w komentarzu coś podobnego, napiszcie, że też dla Was to brzmi ciekawie. O ile nie mogę obiecać, że temat cieszący się największym zainteresowaniem wezmę na tapetę (może to w końcu być coś spoza tego czym się zajmuje i o czym mam pojęcie), o tyle podczas wyboru będę się kierować Waszymi głosami.

Czytaj dalej...
Serwis sekurak opublikował przed kilkoma godzinami drugi numer e-zina sekurak offline - jest dostępny w PDF, Mobi i EPUB, i ma 65 stron (w PDFie). Autorami artów w tym numerze są: Michał Bentkowski (aż cztery artykuły), Rafał "bl4de" Janicki, Adrian "Vizzdoom" Michalczyk (dwa artykuły), Marcin Bury i Bartosz Jerzman. Dodam, że numer jest poświęcony przede wszystkim websecurity, choć i o crypto coś się znajdzie.

Czytaj dalej...
Jutro wieczorem (tj. we wtorek, 22 marca) o 19:00 odbędzie się kolejny stream, na którym opowiem coś o Insomni'hack CTF - genewskich zawodach, w których w miniony weekend po raz trzeci z rzędu zwyciężył Dragon Sector (o czym pisałem m.in. na FB). M.in. postaram się pokrótce opowiedzieć o zadaniach, które rozwiązywałem i pokazać/wytłumaczyć fragmenty rozwiązania. Podcast odbędzie się na Youtube (link do streamu pojawi się automagicznie na głównej stronie mojego kanału na YT w sekcji "Live now" EDIT:LINK DO STREAMA)Oprócz tego zapowiadana ankieta związana z nadchodzącym nieuchronnie momentem ostatecznego wyboru platformy na której będę streamował: ankieta - input mile widziany!I jeszcze jedna sprawa, której już wspomniałem na ostatnim streamie: konkurs!

Czytaj dalej...
Temat: Pierwsze 15 minut na szybko opowiem o zadaniu momo z 0ctf (rozwiązanym przeze mnie i j00ru) - było to RE3 (odpowiednik RE 150?), które, jak się okazało na końcu, było bardzo zbugowane. A potem próba dokończenia XOXOXO część 4. Ostatnio udało się dokończyć wstępną implementację klienta TCP w C++ i napisać uproszczony parser plików xp (patrz: REXPaint), a także jeden taki przykładowy zrobić (ten po prawej był stworzony po livestreamie) i wyświetlić na konsoli (łącznie ze stworzeniem on-the-fly palety kolorów i przestawieniem palety w konsoli). Tym razem będzie więcej zabawy z buforami konsoli i próba podpięcia ładniejszej (jakiejkolwiek) grafiki do stworzonego wcześniej klienta C++. Stream odbędzie się ponownie na YT - jak tylko stream będzie online, to link do niego pojawi się na podlinkowanym kanale. UPDATE: Link do streamu: https://www.youtube.com/watch?v=SaUMQp2VWgg

Czytaj dalej...
Od jednego z czytelników (pozdrowienia dla Jakuba) dostałem pytanie odnośnie samego początku rozdziału „Synchronizacja” (rozdział 9 mojej książki), gdzie to podałem przykładowy kod w Pythonie, który sprawdza czy plik istnieje, a jeśli nie, to go tworzy. W książce był to w zasadzie „anty-przykład” - kod ten jest dość oczywiście podatny na race-condition (sytuację wyścigu), ponieważ sprawdzenie czy plik istnieje i jego utworzenie w tym wypadku to dwie oddzielne operacje, a więc taki plik mógłby w tzw. międzyczasie powstać (tj. istnieje pewne okno czasu, w którym możliwe jest utworzenie pliku). W zależności od przypadku może to być zupełnie nieistotne sytuacja lub poważny błąd bezpieczeństwa pozwalający na podniesienie uprawnień. Czytelnik wskazał jednak, że nigdzie (w okolicy) nie napisałem jak to powinno być poprawnie zrobione - stąd ten post.

Czytaj dalej...
Tak jak pisałem na FB/kanale livestreamów, kolejny odbędzie się dzisiaj o 19:00 - tym razem na YouTube (https://www.youtube.com/user/GynvaelColdwind). Będzie to trzecia część streamu dla mniej zaawansowanych programistów, a więc będę próbował dokończyć kółko i krzyżyk, a konkretniej klienta w C++ pod Windowsową konsolę.

Czytaj dalej...
W piątek wieczorem zaczyna się Boston Key Party CTF - jest to świetny CTF na sam początek zabawy! Zadania są raczej po stronie tych prostych, ale jednocześnie są dopracowane i nie frustrujące. Więcej informacji na: • CTFTime.org, • oraz na stronie CTFa (rejestracja już chyba jest otwarta). • A na 4programmers.net jest wątek w którym można poszukać innych osób bez teamu chętnych do zagrania.Ad następny livestream: 10 marca, 19:00. Więcej szczegółów bliżej tej daty (na 90% będzie na YT btw). Chwilowo to by było na tyle ;>

Czytaj dalej...
Krótka ankieta, która pozwoli mi zdecydować którą platformę wybrać (ew. czy szukać dalej): click - dzięki za wypełnienie :)

Czytaj dalej...
Jak pisałem już na FB, kolejny stream z wątku RE/patch/cmd odbędzie się dzisiaj; początek o 16:00. Ponownie testować będziemy stream via twitch.tv/GynvaelPL, więc po streamie na blogu/FB pewnie pojawi się ankieta z pytaniem 'co się lepiej sprawdza - livecoding czy twitch' (a także pewnie innymi pytaniami). Do zobaczenia o 16!

Czytaj dalej...
Krótki news: kolejny stream będzie za 2 dni, w czwartek 11.02.2016 i rozpocznie się o 18:45 (główny temat pewnie o 19:00; potrwa do około 20:30). Tym razem wypróbujemy twitch'a, więc stream będzie dostępny na http://www.twitch.tv/GynvaelPL. Jeśli chodzi o temat, to będę kontynuował wątek dla początkujących, czyli kółko i krzyżyk (jako przykład czegoś obiektowego) - ostatnio skończyłem prostą wersję konsolową, a teraz do zaproponowanej architektury podepnę TCP/IP, oraz pobawię się trochę konsolą Windowsa, żeby wersja konsolowa wyglądała trochę lepiej (ta część prawdopodobnie będzie w C++, ale potem pokaże jak to w Pythonie zrobić też). Wątek dodawania komendy do cmd będę kontynuował na kolejnym streamie (pewnie w weekend).

Czytaj dalej...
W niedzielę zrobiłem krótki testowy stream na livecoding.tv (video) i wygląda na to, że i mi się spodobało, i trochę osób było tym zainteresowanych. W związku z czym zaplanowałem dwa kolejne streamy: pierwszy w najbliższy czwartek (3.2.2016) o godzinie 19:00 (1-2h), a drugi dzień później, w piątek, o 17:00 (2-3h). W czwartek chciałbym nadrobić zaległy temat z podcastów youtube'owych - "jak zaprojektować/zrobić aplikację obiektową na podstawie prostej gry kółko i krzyżyk" - czyli coś dla bardziej początkujących programistów (będzie głównie Python, może trochę C++). Na piątek myślałem o jakimś RE albo security; podczas głosowania na temat streamu testowego drugą pozycję zajął ten temat: "Przerabianie aplikacji (prostej/przykładowej) bez dostępu do kodu źródłowego: RE, patch, Python, ASM", więc myślę właśnie o tym (chyba, że w między czasie pojawi się coś lepszego).

Czytaj dalej...
W skrócie: zaproponowano mi zorganizowanie książki o inżynierii wstecznej oprogramowania, która miałaby być zbiorem artykułów różnych autorów. W zawiązku z tym chciałbym przeprowadzić ankietę, czy jest w ogóle zainteresowanie tym tematem: ankieta. Będę bardzo wdzięczny za jej wypełnienie - powinno to zająć jakieś 2 minuty. Dzięki!

Czytaj dalej...
Taki krótki news: na stronę serwisu książki wrzuciłem pierwszą część erraty, a na GitHub kody źródłowe, które trafiły do książki. Oprócz tego, również na GitHubie, założyłem repozytorium na rozwiązania ćwiczeń z książki, jeśli ktoś tako chce podesłać - pull requesty mile widziane (pierwsze trzy rozwiązania już są opublikowane).

Czytaj dalej...
Dwie sprawy, o których już pisałem na FB:1. Udostępniłem wszystkie ilustracje z książki w trochę lepszej jakości (długi bok ustawiony na 1600 px).2. W podpowiedzi we fladze Juliet jest drobny błąd, w związku z czym wrzuciłem pewną podpowiedź na stronę z flagami.Póki co tyle ;>

Czytaj dalej...
P4CTF 2015 odbył się z miniony weekend i organizowany był przez polski zespół CTFowy p4, związany poniekąd z serwisem 4programmers.net (i który niedawno połączył się z innym polskim teamem - Amber Chamber). CTF ten można scharakteryzować tagami: single player, jeopardy, entry-level, online. W każdym razie po tym CTFie jest wysyp materiałów, zarówno od strony write-upów jak i informacji zza kulis. Linki poniżej - miłej lektury!• Statystyki i trochę kulis ← bardzo polecam w szczególności to• Write-upy i rozwiązania• Scoreboard + zadania (czyli strona CTF)Gratulacje dla akrasuski1 za top1, a także dla wszystkich, którzy wzięli udział i dzielnie walczyli!p4 - świetna robota z CTFem - do zobaczenia na CTFie Chaos Communication Congress za kilka dni!

Czytaj dalej...
Krótki news: wyszedł nowy numer magazynu Programista (42) - można go znaleźć w Empiku / w prenumeracie / pisząc mejla do redakcji. Czytałem wcześniej (zaleta bycia recenzentem) dwa artykuły, które trafiły do tego numeru i które sądzę, że zainteresują czytelników mojego bloga: „Piszemy własny RTOS!” (Radosław Biernacki) oraz „HITCON CTF 2015 – Rsabin” (Jarosław Jedynak i Stanisław Podgórski z teamu p4). Ten pierwszy jest jednym z ciekawszych artykułów które czytałem w Programiście i traktuje o (jak nazwa wskazuje) pisaniu własnego systemu czasu rzeczywistego (w tym przypadku w kontekście platformy AVR, ale większość kodu jest uniwersalna / kompatybilna z x86). Ten drugi jest natomiast solidnym write-upem o wysoko punktowanym zadaniu z kategorii crypto z HITCON CTF 2015 - zdecydowanie polecam.

Czytaj dalej...
Bardzo krótki news: wrzuciłem wersję bardzo-alpha serwisu książki; póki co można tworzyć konta i wrzucać flagi. Zachęcam do testów - https://zrozumiecprogramowanie.pl/ (HTTPS only). W następnym tygodniu postaram się podpiąć kolejną część serwisu (erraty). I tyle.

Czytaj dalej...
Nadal w temacie książki - trzy newsy (a w zasadzie dwa i brak newsa): e-book (Mobi, EPUB) "Zrozumieć Programowanie" jest "już" dostępny (nie jest źle, tylko tydzień opóźnienia) - szybki link do ibuk.pl (gdzie obecnie jest najtaniej wg moich informacji - o tym "dlaczego" napiszę więcej w treści posta); wydawca udostępnił również jeden pełen rozdział książki ("Procesy") do pobrania w formie Mobi/EPUB/PDF (trzeba podać maila) - szybki link do it.pwn.pl; a serwisu jak nie było, tak nie ma - TL;DR: niestety tylko w weekendy obecnie mam czas, żeby przy nim siedzieć; liczyłem, że w zeszły weekend uda się coś już wrzucić, ale wygląda na to, że dopiero w nadchodzący uda się to faktycznie zrobić. A teraz jeszcze raz to samo...

Czytaj dalej...
TL;DR: Odbędzie się na XIII spotkaniu Technology Risk & Information Security Forum Wrocław, które odbędzie się 19 listopada 2015 o godzinie 17:45 w budynku Credit Suisse Green Day przy ulicy Szczytnickiej 9 we Wrocławiu. Rejestracja - click, informacja na stronie grupy - click. Liczba miejsc jest niestety ograniczona, więc FCFS / RSVP. Do zobaczenia we Wrocławiu!

Czytaj dalej...
Oficjalnie premiera książki była we wtorek, tj. od wtorku powinny do Was docierać zamówione egzemplarze (i z tego co mi wiadomo, po licznych fotkach wrzucanych na fb/mikroblogach/twitterze/etc, faktycznie docierają mniej lub bardziej sprawnie, a pierwsze literówki już zostały odnalezione). W związku z tym stwierdziłem, że napisze jakiś nowy post z kilkoma informacjami różnymi związanymi z książką, jej dystrybucją, spotkaniami autorskimi, serwisem książki itp. O części z nich już pisałem tu i tam, ale uznałem, że dobrze będzie je zebrać z wpisów/komentarzy/fb/etc w jedno miejsce.

Czytaj dalej...
Zgodnie z przewidywaniami, o których pisałem na FB kilka dni temu, pierwotny (już raz rozszerzony) nakład mojej książki rozszedł się w całości (na marginesie: WOW - dzięki za zaufanie!). Mój wydawca od razu umówił dodruk w drukarni, natomiast chwilę to potrwa i kolejny nakład będzie gotowy dopiero w drugiej połowie listopada. A więc wysyłka egzemplarzy zamówionych od mniej więcej dnia wczorajszego nastąpi dopiero po ich wydrukowaniu - za opóźnienia bardzo przepraszamy. Z uwagi na to książka będzie niedostępna w przedsprzedaży od dzisiaj do poniedziałku. W poniedziałek sprzedaż (w tym ostatni dzień przedsprzedaży - w końcu we wtorek premiera ;>) ruszy ponownie, właśnie tych egzemplarzy, które będą drukowane w listopadzie. Raz jeszcze przepraszam za problem (choć od strony autora - it's a good problem to have).

Czytaj dalej...
Drugie (chronologicznie pierwsze) z planowanych spotkań z czytelnikami odbędzie się w Warszawie 7 listopada 2015 (sobota). Rozpocznie się o godzinie w samo południe i potrwa od rozpoczęcia do zakończenia ;> (salę będziemy mieli do ~16:00). Tym razem rejestracja jest niestety obowiązkowa, co wynika z ograniczonej (murami) wielkości sali (FCFS). Utrudnienia są niefortunne, niemniej jednak jestem bardzo ciekaw tego spotkania - będzie to moje pierwsze spotkanie z czytelnikami z planowanych trzech (dwa dni później odbędzie się jedno w Krakowie, a trochę ponad tydzień później we Wrocławiu, choć to ostatnie cały czas wisi pomiędzy "planami" a "realizacją"). Zapraszam więc na spotkanie :)

Czytaj dalej...
Jak pisałem wczoraj na FB, spotkanie autorskie w Krakowie jest już pewne i w trakcie organizacji. Odbędzie się ono 9 listopada podczas Sekurak Hacking Party - cyklicznych spotkań organizowanych przez jednego z partnerów książki - serwis Sekurak. Otwarta jest już rejestracja - wstęp jest darmowy, a sama rejestracja nieobowiązkowa (więc jeśli ktoś zapomni, to nie ma problemu); zachęcam natomiast do rejestracji - pozwoli nam to na oszacowanie jak duża sala jest potrzebna. W listopadzie odbędą się jeszcze dwa spotkania autorskie w innych miastach - (wstępnie) 6 listopada w Warszawie, oraz w drugiej połowie listopada we Wrocławiu; więcej informacji o nich wrzucę jak tylko będą w miarę pewne.

Czytaj dalej...
Dzisiaj w okolicach południa rozpoczęła się przedsprzedaż mojej książki - „Zrozumieć Programowanie” (W końcu! Magiczne ilości czasu zeszły na jej napisanie / doszlifowanie ;>). Na stronie przedsprzedaży w zakładce "Zobacz więcej" można znaleźć kilka pierwszych stron książki, jak również wstęp (mój) i przedmowę (j00ru), a także (w sąsiedniej zakładce) oficjalny spis treści. Co nieco więcej o książce pisałem już przy okazji jednego z poprzednich postów; w tym poście napiszę tylko co się zmieniło od tamtego czasu.

Czytaj dalej...
Nieczęsto wrzucam na bloga informacje o wychodzących książkach, z którymi nie mam nic wspolnego (przychodzą mi na myśl tylko dwie okazje: analiza merytoryczna pewnej książki oraz mini e-książka Xa), niemniej jednak mój wydawca podrzucił mi ostatnio dwie pozycje, które uderzyły w nostalgiczną nutę i o których postanowiłem przynajmniej wspomnieć w formie krótkiej notki. Co ciekawe, nie jestem targetem tych książek. Ba, nie sądzę, żeby większość czytelników była bezpośrednio grupą docelową - otóż książki są przeznaczone dla najmłodszych. Mowa o "JavaScript dla dzieci. Programowanie na wesoło" (premiera była w poniedziałek) oraz "Python dla dzieci" (premiera w piątek). Tak więc post ten zainteresuje raczej starszych czytelników, będących w posiadaniu przedstawicieli grupy docelowej ;)

Czytaj dalej...
W poprzednim poście wspominałem, że fragmenty mojej książki przedpremierowo będzie można przeczytać m.in. w nadchodzącym numerze magazynu Programista - numer ten powinien pojawić się dzisiaj w Empikach i powoli docierać do prenumeratorów.

Czytaj dalej...
Jak wspomniałem już na mikroblogu na 4programmers.net, kilka dni temu moja książka („Zrozumieć Programowanie”) trafiła do pierwotnego składu - to znaczy, że jest już napisana i po edycji. Została ostatnia korekta i, już niedługo, druk. W tym poście chciałem napisać coś o książce, jak i również o podcastach do których chce wrócić.

Czytaj dalej...
Michał Sajdak dał mi znać, że przed chwilą został opublikowany pierwszy numer Sekurak/Offline - e-zinu (PDF/EPUB/MOBI) o bezpieczeństwie. Pierwszy numer w całości poświęcony jest bezpieczeństwu web-aplikacji i jest tam opisane przede wszystkim sporo podstaw (może warto podrzucić numer programistom webowym w swojej firmie?).

Czytaj dalej...
Drodzy czytelnicy mojego bloga - jak w temacie posta: Preferujecie książki techniczne (550 stron) w twardej oprawie czy w miękkiej oprawie? Odpowiedzi prosiłbym wrzucać w komentarzach.

Czytaj dalej...
Wracając do tematu książki i tłumaczenia angielskich technicznych terminów na język polski, zebrała mi się kolejna seria słówek, z których tłumaczeniem mam pewien problem. Co więcej, na co dzień często używa się angielskich wersji tych słów, co nie ułatwia sprawy. Stąd też chętnie przedyskutuje z Wami (czytelnikami mojego bloga) potencjalne tłumaczenia słów. Chętnie też zapoznam się z alternatywnymi tłumaczeniami.

Czytaj dalej...
Szczegóły poniżej (chronologicznie).

Czytaj dalej...
Jednej rzeczy, której mi brakowało na polskiej scenie CTF był jakiś sajt na którym zainteresowani mogą się spotkać i dobrać w teamy. Hintowałem raz czy dwa, że coś takiego by się przydało, no i ostatecznie wynająłem pewną firmę, żeby na szybko coś takiego zrobiła: http://ctfteam.pl.

Czytaj dalej...
W komentarzach do ostatniego postu została mi zwrócona uwaga (całkiem słusznie zresztą), że ostatnio nie wrzucam nic technicznego - w zasadzie same ogłoszenia o DS/Programiście/książce/książce Xa/CTFach/etc. Więc, zgodnie z życzeniem czytelników, będzie to post częściowo techniczny. A częściowo rant, na to, że najwyraźniej trzeba być osobą techniczną, żeby można sobie spokojnie pograć w gry komputerowe (i to nie z winy gier)...

Czytaj dalej...
TL;DR: PWN daje dostęp do 1500 ebooków (via wirtualna czytelnia, na 7 dni) za wypełnienie ankiety; wyszedł nowy Programista, jest i nowa promocja. Szczegóły poniżej.

Czytaj dalej...
Rok temu z przyjemnością pisałem, że nasz (powstający jeszcze wtedy) team CTFowy zakończył sezon 2013 na trzecim miejscu w klasyfikacji generalnej prowadzonej przez CTFTime.org. Cel w sezonie 2014 był jasny - zakończyć sezon na pierwszym miejscu. Miło jest mi napisać, że plan udało się zrealizować :) (P.S. w czwartek od 12:00 odbędzie się nasze AMA o CTFach/etc na wykop.pl).

Czytaj dalej...
Jak już wspomniałem na FB, jutro wieczorem zaczyna się ostatni CTF w sezonie 2014 - 31C3 na konferencji Chaos Communication Congres w Hamburgu. Jego waga w klasyfikacji generalnej (CTFTime.org) wynosi 70, a więc zwycięski zespół dostanie 140 pkt do rankingu.

Czytaj dalej...
Jak w temacie - firma Logicaltrust (to mniej więcej ci sami ludzie co Bothunters.pl, m.in. Borys Łącki, którego możecie kojarzyć z kilku konferencji security) szuka pentesterów. Praca zdalna lub we Wrocławiu, wymagane: umiejętności komunikacji, samodyscyplina, znajomość technik przełamywania bezpieczeństwa aplikacji webowych. Więcej info znaleźć można na ZostanSecurity.Ninja.

Czytaj dalej...
Przez "ebook" rozumiem krótką książeczkę (50 stron) dostępną w PDFie, taką jak to co poprzednio z j00ru wypuściliśmy. Wydał ją (jak i w naszym przypadku) PWN i można ją znaleźć na IT.PWN.PL (dokładny link poniżej).

Czytaj dalej...
Szybkie info: wyszedł (tj. powinien być już w Empikach) nowy numer Programisty. Spis treści można znaleźć tu, a podgląd numeru na YT tam (huh, tego jeszcze nie widziałem, fajny pomysł). Jest w nim oczywiście kolejne "Zdobyć flagę..." w Strefie CTF, tym razem autorstwa Michała "Redforda" Kowalczyka z Dragon Sector, który pisze o zadaniu "Get your gatling at Garrettling!" z Hack.lu 2014 CTF (który to CTF zresztą wygraliśmy). Dodam jeszcze, że numer ma delikatnie ponad 100 stron (czyli więcej niż zwykle) a wraz z nim jest pewna promocja - jeśli kupi się Programistę w Empiku, to można od redakcji dostać 3 dowolne numery w wersji elektronicznej (wystarczy wysłać im fotkę/skan paragonu z widocznym aktualnym numerem na adres redakcji - redakcja@programistamag.pl - wraz z info które numery by się chciało).

Czytaj dalej...
Jak już wspominałem, wygląda na to, że piszę książkę. W komentarzach pod poprzednim, a zarazem pierwszym, postem o niej sporo miejsca poświęciliście na tłumaczenie polskich terminów - i słusznie. Jak wiecie, w polskojęzycznej literaturze i pracach naukowych czasami spotyka się dość dziwne tłumaczenia (kilka przykładów poniżej), których de facto nie używa się w codziennych dyskusjach z kolegami w zespole, znajomymi ze środowiska, czy w dyskusjach widywanych na szeroko pojętej scenie informatycznej. Stąd też zasugerowałem w komentarzach, że będę spisywał co poniektóre terminy i wrzucał na bloga celem przedyskutowania z Wami której wersji tłumaczenia/spolszczenia najlepiej użyć. Niniejszy post jest pierwszym z tej serii - generalnie wszelkie sugestie i uwagi mile widziane :)

Czytaj dalej...
Krótki news: dostałem informacje, że w piątek o 20:00 zaczyna się online CTF, indywidualny (single-player), w stylu jeopardy (zadania do rozwiązania), organizowany przez wrocławską firmę PGS Software. Zadanka mają być w większości entry-level, więc jest to zdecydowanie dobra okazja również dla osób, które nigdy wcześniej nie grały, a chciałyby spróbować. Z tego co widzę na stronie, to za top1-3 będą również nagrody.

Czytaj dalej...
Co prawda nieśmiało wspominałem już w kilku miejscach o tym, że piszę książkę, ale do tej pory nigdzie na moim blogu nie wrzuciłem o tym żadnej oficjalnej informacji. Przyszedł czas by to nadrobić. W dużym skrócie: książka będzie nosić tytuł "Zrozumieć programowanie" i kieruje ją głównie do osób początkujących oraz średnio zaawansowanych zainteresowanych programowaniem (chociaż mam nadzieje, że osoby zainteresowane RE i bughuntem też dowiedzą się z książki czegoś co ich ciekawi, a przynajmniej zyskają wiedzę o oprogramowaniu, która jest potrzebna w tych dwóch działkach). Głównym moim celem jest aby po aktywnym (tj. z wykonaniem sugerowanych ćwiczeń/zadań) przeczytaniu książki czytelnik nabrał samodzielności w rozwiązywaniu problemów związanych z tworzeniem oprogramowania, potrafił poruszać się i analizować nieznany sobie kod bardzo dużych projektów, a także zyskał sporo praktycznej i szczegółowej wiedzy na tematy związane z różnymi składowymi programowania. Generalnie będzie technicznie, praktycznie, szczegółowo i niskopoziomowo - czyli dokładnie tak jak lubię i do czego (jak sądzę) przyzwyczaiłem czytelników mojego bloga.

Czytaj dalej...
W sumie krótki news: przed chwilą zaczął się SECURE 2014/CTF - entry-level, 5 zadań, 45h. Zachęcam do zabawy (są też nagrody) - http://ctf.secure.edu.pl/.

Czytaj dalej...
[TL;DR: PDF/EPUB] W poprzednim poście wspominałem o moim opisie rozwiązania zadania Remote KG z Pwnium CTF 2014, który został opublikowany w Strefie CTF magazynu Programista. Wspominałem też, że było to jedno z najbardziej oryginalnych zadań z jakimi miałem okazję się spotkać. Redakcja Programisty zdecydowała się dzisiaj udostępnienie za darmo wspomnianego write-upu :)

Czytaj dalej...
Kilka newsów się zebrało. TL;DR: 10-11 października odbędzie się kolejna edycja konferencji Security B­Sides Warsaw (lista prelegentów); w nadchodzącym numerze Programisty będą dwa moje artykuły (o jednej z implementacji wyjątków w C++ + standardowo "Zdobyć flagę..." o DEF CON CTF 2014, pisane m.in. z j00ru i q3k); poza tym reaktywowałem konto na FB, gdzie wrzucam nie-prywatne notki po Polsku.

Czytaj dalej...
Jak zwykle latem panuje CTFowa susza (co zmieni się pod koniec roku) i CTFy ograniczają się w zasadzie do finałów offline. Ostatnio były dwa w których braliśmy udział - Nuit du Hack CTF Finals 2014 w Paryżu oraz DEF CON CTF 2014 w Las Vegas, NV. Oba CTFy były w formacie Attack-Defense (w którym mamy sporo mniej doświadczenia niż w Jeopardy w które zazwyczaj gramy), ale udało nam się wywalczyć, kolejno, czwarte oraz trzecie miejsce. Niniejszy update poświęcony jest wyłącznie DEF CON CTF.

Czytaj dalej...
Jak zapewne niektórzy czytelnicy pamiętają, "Diabeł tkwi w szczegółach" to m.in. tytuł mojej serii artykułów z pogranicza programowania i bezpieczeństwa publikowanych w magazynie Programista. Dwie pierwsze części (poświęcone C/C++) udostępniłem do pobrania już wcześniej (C/C++, cz.1, C/C++, cz.2), czas więc i na część trzecią. Jest ona dla odmiany poświęcona problemowi przechowywania i udostępniania plików otrzymanych od użytkownika (atakującego) przez aplikacje webowe. A tak na marginesie, jeśli myślicie o wykupieniu prenumeraty Programisty, to do jutrzejszego wieczoru do prenumeraty redakcja dorzuca ebook jednej z dwóch książek ("Android w praktyce. Projektowanie aplikacji" lub "SCRUM i nie tylko. Teoria i praktyka w metodach Agile.").

Czytaj dalej...
Semi-regularny post o tym, co tam słychać w naszym teamie CTFowym. TL;DR: top1 na finałach PHDays w Moskwie; top2 na kwalifikacjach do DEF CON CTF; na CONFidence odbył się nasz CTF, wygrała liub rozwiązując 12 zadań; również na CONFidence z j00ru mówiliśmy o CTFach; sponsorzy nadal mile widziani.

Czytaj dalej...
Wczoraj późnym wieczorem w Krakowie na ósmej edycji Nocy Informatyka odbyła się moja prelekcja pt. "Food for thought. Kilka przemyśleń na temat bezpieczeństwa IT.". Poniżej znajduje się link do slajdów (jeśli ktoś widział moją prelekcję na Wheel Evening w Warszawie w kwietniu, to zaznaczę tylko, że slajdy przeszły bardzo gruntowną przebudowę). Standardowo, feedback mile widziany.

Czytaj dalej...
Pod koniec ubiegłego roku odezwało się do nas (tj. do mnie i j00ru) wydawnictwo PWN z propozycją napisania artykułu/raportu o ciekawych błędach popełnianych przez programistów. Jak wiecie, błędami zajmujemy się na co dzień, każdy z nas wygrzebał trochę swoich ulubionych anegdot i klas bugów, i stworzyliśmy coś, co ostatecznie przyjęło formę 40-stronicowego eBooka. Owy artykuł/mini-książkę można pobrać za darmo (registration-walled) na nowo otwartym serwisie IT PWN w dziale Download. Zachęcamy do lektury :)

Czytaj dalej...
Kolejny semi-regularny post o tym, co tam słychać w naszym teamie CTFowym. TL;DR: jutro (sobota 26.04.2014) o 9:00 czasu polskiego rozpoczyna się nasz teaser CTF; ostatnie wyniki: PlaidCTF - TOP2, Nuit Du Hack CTF Quals - TOP1, CODEGATE CTF Finals (Seul, Korea) - TOP3, Volga CTF Quals - TOP1; na naszym blogu pojawiło się trochę write-upów, a także kolejny został opublikowany w Programiście; poza tym nadal szukamy sponsora.

Czytaj dalej...
W ubiegły czwartek udaliśmy się do Genewy na Insomni'hack (wspominałem o nim przy okazji innego wpisu) - offline'owy CTF w stylu jeopardy z drużynami ograniczonymi do maksymalnie ośmiu osób. Nasz Dragon Sector reprezentowali j00ru, valis, Keidii, Redford, q3k, mak, tkd, oraz ja (patrz zdjęcie na dole postu). Podczas prawie dziesięciogodzinnej batalii (od około 18:30 do 4:00 w nocy) udało nam się najpierw wywalczyć przewagę, a następnie utrzymać ją do końca, zajmując ostatecznie pierwsze miejsce! Przy okazji wykorzystam ten post do innych update'ów związanych z DS.

Czytaj dalej...
Stream rozpocznie się o 18:00, a pytania można zadawać na IRCu - szczegóły poniżej:

Czytaj dalej...
2014-03-11:

Duże ilości naraz ogłoszeń

ctf:conference
Trochę się tego uzbierało. TL;DR: Będę mówić na: darmowym webinarze organizowanym przez Garage4Hackers, o RE, za tydzień; CONFidence 2014 w Krakowie, razem z j00ru, o CTFach; area41 w Zurichu, razem z Ange, o schizofrenicznych formatach plików (more to come); A także: niedługo konferencja IGK w Siedlcach (CFP jeszcze otwarte); oraz SEConference w Krakowie (CFP jeszcze otwarte); DS organizuje indywidualny teaser-CTF online (więcej info niedługo) oraz indywidualny offline-CTF na CONFidence; ostatnie wyniki DS: RuCTF quals TOP2, BKP CTF TOP5, Codegate Quals TOP7 (obecnie TOP1 na CTFtime.org); niedługo lecimy na offline CTFy do Genewy (Insomni'hack) oraz Seulu (finały Codegate) - trzymać kciuki plz ;>. Wersja mniej skompresowana poniżej.

Czytaj dalej...
2014-02-12:

Dragon Sector: 2x TOP1

ctf
Od mojego ostatniego wpisu mineło jedynie dziesięc dni, a już odbyły się dwa CTFy w których wzięliśmy udział: szwajcarski Insomni'hack Teaser oraz humorystycznie nazwany rosyjski Olympic CTF Sochi 2014. Oba CTFy wygraliśmy :)

Czytaj dalej...
2014-02-02:

Rok CTFów z Dragon Sector

ctf:hacking:security
Pierwszego lutego ubiegłego roku założyliśmy z Mateuszem Jurczykiem i Adamem Iwaniukiem team CTFowy "Dragon Sector". Wczoraj minął rok naszej regularnej gry i jest to dobry powód by coś o tym napisać.

Czytaj dalej...
Nowy numer magazynu Programista - 11/2013 (18) - jest już dostępny, a w nim m.in dwa nasze artykuły ("Bliżej Silikonu #2" oraz "Zdobyć flagę..."). A tak poza tym jest to wydanie rozszerzone (144 strony), z masą ciekawych tematów.

Czytaj dalej...
Wczoraj wieczorem, zainspirowany pewną dyskusją na IRCu, spróbowałem zrobić funkcję do konwersji 8-bitowej liczby (unsigned char) na string będący reprezentacją bitową tej liczby (i.e. 0xF3 → "11110011"). Oczywiście to bardzo prosta sprawa - w zasadzie jest to jedno z podstawowych ćwiczeń, z którymi sobie radzą nawet bardzo początkujący programiści. Więc... czemu by sobie nie utrudnić zabawy? Dorzuciłem więc założenia: nie może być pętli (nawet rozwiniętej), musi wyglądać matematycznie, oraz w miarę strasznie/nieczytelnie (funkcja pisana w okolicy halloween ;>). I nawet się udało.

Czytaj dalej...
Kilka mniejszych spraw się uzbierało, więc postanowiłem je ubrać w posta i wrzucić tutaj. Po pierwsze, przegapiłem dwa ostatnie numery Programisty, a jest tam kilka fajnych rzeczy o których chciałem wspomnieć. A po drugie, po ponad pół roku istnienia chciałem coś więcej wspomnieć o naszym teamie CTFowym - Dragon Sector (w tym o blogu na który wrzucamy write-upy).

Czytaj dalej...
Zgodnie z obietnicą wczoraj po południu wrzuciłem na YouTube nagranie video mojego wystąpienia pierwszego dnia na SEConference w Krakowie, podczas którego mówiłem o "internalsach" formatu ZIP (było też dość sporo dem).

Czytaj dalej...
Przed chwilą wrzuciłem na youtube video z mojej prelekcji z SEConference 2013, z dnia drugiego (o CTF, etc). Prelekcję z dnia pierwszego (o ZIP, etc) wrzucę w przeciągu paru dni. Pozostając przy tej tematyce, parę dni temu na mój kanał wrzuciłem też dwa podcasty o tym jak rozwiązać dwa zadanka z poprzedniego CTF - SIGINT 2013 - konkretniej crash oraz punchcard; linki poniżej.

Czytaj dalej...
Raz jeszcze o nowym wydaniu Programisty - na forum 4programmers.net został udostępniony fragment naszego artykułu - "Bliżej silikonu #1" - o niskopoziomowych sprawach w x86. Do tego dostałem info o kolejnej promocji od redakcji (ważna do dzisiaj), więc i to wrzucę - a nuż ktoś się skusi (full disclosure: nie, nie dostaje procentu od nagonionych klientów hehehe). Ah, no i jeszcze drobna errata poniżej (spotted by vpiotr - thx!).

Czytaj dalej...
Parę miesięcy temu wspólnie z redakcją Programisty udostępniliśmy pierwszą część artykułu "Diabeł tkwi w szczegółach: C/C++"; czas więc na część drugą!

Czytaj dalej...
2013-06-28:

Video: Multithreading #2

video
Przed chwilą wrzuciłem na YouTube drugą część videotutoriali o wielowątkowości. Odcinek trwa niespełna 40 minut i powinien zainteresować zarówno osoby początkujące, jak i zaawansowane - dość głęboko wgryzam się w nim w internalsy (pozostając jednak w usermode), szczególnie dotyczące różnic między CreateThread a _beginthreadex. Tak więc zachęcam do rzucenia okiem.

Czytaj dalej...
Heads up! Dzisiaj (w wersji elektronicznej, a w piątekweekend w Empikach) wychodzi nowy numer magazynu "Programista", w jubileuszowej, 140-stronicowej formie. Numer ten jest dla mnie szczególny również z innego powodu - pojawi się w nim artykuł "Bliżej silikonu #1", czyli pierwsza część naszej (tj. mojej oraz Mateusza "j00ru" Jurczyka) niskopoziomowej serii z pogranicza osdev/assemblera/low-level internals (o której już wspominałem).

Czytaj dalej...
Wczoraj wczesnym wieczorem skończyła się w Krakowie konferencja SEConference, o której już wspominałem. Było 10 prelekcji (w tym dwie moje - linki do slajdów są niżej) + lightning talk * 2 + nieprzewidziany kolokwio-konkurs który pomagałem przygotować/prowadzić z nagrodą w postaci wejściówki na CONFidence (bardzo miły gest ze strony organizatorów CONFidence!). Ogólnie konferencja, jak na niewielką kameralną imprezę, wypadła bardzo przyjemnie.

Czytaj dalej...
Szybka notka: wygląda na to, że w polskiej części Internetu pojawił się nowy serwis o sec/hack - BAD[SECTOR].pl (prowadzony przez think tank o tej samej nazwie). Wyróżnia się on dwoma cechami: po pierwsze, ekipą (mi osobiście rzuciły się w oczy przede wszystkim dwa nazwiska - Janusz Niewiadomski (isec.pl), oraz Borys Łącki (bothunters.pl) - pewnie dlatego, że są rozpoznawalnymi osobami na polskiej scenie pentesterskiej, świetnymi specami od sec/hack, a i miałem okazję z nimi wypić przysłowiowe piwo); a po drugie target docelowy: pentesterzy, programiści, specjaliści ds bezpieczeństwa oraz admini (zgodnie z pierwszym newsem). A więc RSS++ i z ciekawością będę śledził dalszy rozwój serwisu.

Czytaj dalej...
2013-05-09:

Do zobaczenia w Krakowie: SEConference, CONFidence

seconference:confidence
Pod koniec maja odbędą się w Krakowie dwie konferencje na których będę miał razem 3 prelekcje: dwie 24-25 maja na SEConference, oraz jedną (razem z j00ru) na CONFidence.

Czytaj dalej...
2013-05-05:

IGK 2013 Compo - o naszej grze

igk:compo
(collaborative post by Gynvael, oshogbo & xa)W Siedlcach odbyła się co roczna konferencja Inżynierii Gier Komputerowych (IGK) - tym razem była to jubileuszowa, 10siąta, edycja. I jak co roku było teamowe compo - 6.5h (ostatecznie przedłużone o jeszcze godzinę) na zrobienie gry na zadany temat w maksymalnie 4 osoby. Tematem było "Artillery Game" (więcej poniżej), a alians Vexillium + Dragon Sector (reprezentowany przez 6 osób na IGK) wystawił dwa teamy po 3 osoby (pod nazwami "Bad Sectors" oraz "Dragons"). Ostatecznie obu naszym teamom udało się stworzyć w pełni działające i ukończone gry (bugi przemilczmy ;p), i zając pierwsze oraz piąte miejsce na 12 drużyn. W niniejszym poście chcieliśmy coś napisać o grze naszego teamu z pierwszego miejsca (w składzie: code: gynvael+oshogbo, gfx: xa), a także udostępnić grę w wersji post-compo (razem ze źródłami na MIT i grafiką na CC) oraz port gry na HTML5 który zrobił Xa w ciągu ostatnich paru wieczorów. Miłej lektury (tak, są obrazki) :)

Czytaj dalej...
24-25 maja tego roku odbędzie się kolejna edycja darmowej konferencji SEConference, która jest organizowana przez koło naukowe IT Security Group przy Politechnice Krakowskiej. Kilka dni temu rozpoczął się oficjalny call for papers (CFP) i zostałem poproszony o wrzucenie info o tym na bloga, co niniejszym czynie (link do CFP znajduje się poniżej). Osobiście planuje się pojawić na SEConference z jedną techniczną i jedną "około-scenową" prelekcją - should be fun :)

Czytaj dalej...
Być może niektórzy moi czytelnicy pamiętają zabawę "Pocztówka z Doliny Krzemowej" o której pisałem mniej więcej rok temu. Będąc w październiku ubiegłego roku ponownie w Kalifornii wysłałem kolejną porcję pocztówek dla zainteresowanych osób. Pół roku minęło i jedynie 3 z 10 pocztówek udało się rozszyfrować. Być może ktoś spośród moich czytelników będzie zainteresowany podjęciem wyzwania i spróbowania swoich sił z pozostałymi pocztówkami :)

Czytaj dalej...
2013-03-03:

To gdzie są ci słynni polscy hakerzy?

hacking:bike shed:ctf
Tak przeglądam ranking ogólny CTFów prowadzony przez serwis CTFtime.org i zwróciłem uwagę na jedną rzecz (a raczej jej brak) - w setce pierwszych teamów w rankingu 2012 nie ma żadnego polskiego teamu, a w br. jest jeden (słownie: jeden). Wydało mi się to dość dziwne - jest kilka polskich sajtów z newsami o security (szczególnie ostatnio wyrastają jak grzyby po deszczu), kilka(naście?) forów internetowych (czasem mam wrażenie, że po każdej emisji Hackerów w TV powstają dwa nowe), są też konferencje security (przynajmniej kilka w roku), sporo niezłych blogów, czasem jakieś konkursy/hackme/crackme/etc i ogólnie sporo udzielających się osób "na scenie" - więc skąd taka marna reprezentacja w rankingu CTFów? Odpowiedzi może być oczywiście kilka. Jedną z nich (całkiem możliwą zresztą) jest: jakoś tak nikt nigdy nie napisał o tym, że średnio co dwa tygodnie jest jakiś CTF i że w ogóle jest jakiś "ogólny ranking".

Czytaj dalej...
Mój artykuł zaczynał się od następujących słów: "Programując w językach C lub C++, bardzo łatwo jest popełnić błąd." - jak można się domyślić po tytule postu, słowa okazały się prorocze i faktycznie kod jednego z listingów w artykule jest błędny. Kudos za wypatrzenie błędu dla KrzaQ!

Czytaj dalej...
Jak niektórzy moi czytelnicy zapewne pamiętają, w sierpniu ubiegłego roku w magazynie Programista ukazał się mój artykuł pt. "Diabeł tkwi w szczegółach: C/C++ (część 1)". Dzisiaj zdecydowaliśmy się, wspólnie z redakcją, udostępnić go za darmo w formie PDF (link poniżej). Dodatkowo, redakcja Programisty przygotowała pewien bonus gdyby ktoś z moich czytelników skusił się na prenumeratę.

Czytaj dalej...
Mając wolną chwilę, np. w drodzę do/z pracy, zazwyczaj przeglądam RSSa i wysyłam sobie co ciekawsze linki na maila, w celu obejrzenia (przeczytania) danego znaleziska dokładniej przy okazji kolejnej, dłuższej, wolnej chwili. Od listopada zeszłego roku, dla wygody (łatwiej filtry ustawić), zamiast na swój prywatny mail wysyłam je na grupę dyskusyjną (mailingową) ciekawe-papierki@googlegroups.com, którą specjalnie do tego celu stworzyłem. I w zasadzie nie ma żadnego powodu dla którego ta grupa miała by nie być publiczna - a nuż ktoś jeszcze znajdzie w tych linkach coś dla siebie.

Czytaj dalej...
Na stronie kodzimy.net znalazłem bardzo fajny artykuł o szybkości działania i++ i ++i. Wniosek z artykułu brzmi: nie ma różnicy dla podstawowych typów w nowoczesnych kompilatorach. Jako, że temat jest mi bliski, to dorzucę dwie ciekawostki :)

Czytaj dalej...
2013-02-10:

Magazyn Programista, kilka spraw

programista
Zacznę od tego, że w obecnym numerze Programisty, czyli 1/2013 (08), ukazał się mój kolejny artykuł z serii "Diabeł tkwi w szczegółach" o tytule "hosting plików" (strona 34). Tekst leży na granicy między projektowaniem serwisów internetowych a IT security i traktuje o tym jak bezpiecznie odebrać plik od użytkownika (w szczególności: plik graficzny), a następnie serwować via HTTP. Artykuł jest w zasadzie przedyskutowaniem różnych stosowanych, nie zawsze dobrych, metod, oraz wskazaniem kilku, które faktycznie mają pewien sens. Reszta niniejszego postu będzie bardzo krótko o obecnym numerze programisty, oraz o nadchodzącej serii artykułów o programowaniu/IT niskopoziomowym, która będzie współtworzona przeze mnie oraz Mateusza "j00ru" Jurczyka.

Czytaj dalej...
2012-10-21:

Notatki i dashboard

blog
W RSSie mojego bloga ostatnio pusto, szczególnie po polskiej stronie lustra, niemniej jednak trochę zmian ostatnio wprowadziłem. W skrócie: pojawił się dashboard (widoczny po wejściu na http://gynvael.coldwind.pl/), oraz wprowdziłem "notatki" (głównie techniczne), których przybywa, a które to nie pojawiają się w RSS. Więcej o tym co jest co w dalszej części tego posta.

Czytaj dalej...
Dwa krótkie ogłoszenia. Po pierwsze, wyszedł nowy numer magazynu Programista z moim artykułem. A po drugie, wygląda na to, że Helion przygotowuje polskie wydanie "The Tangled Web" Michała Zalewskiego. Więcej w treści postu...

Czytaj dalej...
(Collaborative post by Mateusz “j00ru” Jurczyk and Gynvael Coldwind)  Several months ago, we started an internal Google Security Team effort to improve the general security posture of the Chrome embedded PDF reader, in an approach similar to the Flash fuzzing performed several months ago by Tavis Ormandy. During the course of a few weeks, we built a solid corpus of PDF documents that we feel gets significant coverage of the Chrome PDF Reader’s code base and used it to shake out more than 50 low-to-high severity bugs. All of the high and critical severity bugs we discovered have been fixed in the stable channel [1] [2] [3] as of this posting; see examples: ...

Czytaj dalej...
Video views na moim kanale z podcastami na YT wskazuje ponad 100000 - yay!

Czytaj dalej...
Mateusz Pstruś (owner strony z bardzo ciekawymi hackme - http://securitytraps.no-ip.org/) dał mi znać, że we wrześniu odbędzie się teamowy Capture the Flag online, właśnie na Security Traps. Zapowiada się ciekawie, więc zachęcam do udziału (wymaga wcześniejszej rejestracji).

Czytaj dalej...
Mniej więcej miesiąc temu wrzuciłem na bloga recenzję nowego drukowanego czasopisma Programista, a tu już nowy numer. Póki co wrzucam spis treści, a ewentualną recenzję wrzucę jak dojdzie do mnie papierowa wersje i ją przestudiuje :)

Czytaj dalej...
Wygląda na to, że w październiku odbędzie się nowa (w Polsce) konferencja związana z security/hackingiem - Security Bside Polska. Lista prelegentów wygląda zachęcająco - sporo nazwisk kojarzę z wystąpień na innych polskich konferencjach, z prowadzonych blogów, etc.

Czytaj dalej...
Czasem przyjemnie jest zapomnieć o Undefined Behavior w C i po prostu napisać coś co działa tu i teraz, a niekoniecznie będzie działać jutro (przy nowej wersji kompilatora; innych opcjach kompilacji) lub w innym miejscu (innej platformie). Kilka tygodni temu nadarzyła się ku temu okazja za sprawą tematu na pewnym forum zatytułowanym "Hello world bez bibliotek i asm" (stąd nazwa niniejszego postu) - autor pytał czy możliwym jest napisać w C "Hello World" bez użycia bibliotek (w tym include'ów) ani wstawek assembly (w dowolnej formie). O ile na początku topic był powiązany jeszcze z poprawnym językiem C, to dość szybko przeszło na kod bardzo niskopoziomowy (zapisany nadal w C), zależny od danego systemu, architektury CPU czy nawet sposobu kompilacji użytego przez kompilator. Poniżej zamieszczam mój pomysł na wypisanie "Hello World" na konsoli GNU/Linux, natomiast zachęcam również do rzucenia okiem na sam topic (link powyżej).

Czytaj dalej...
Gdy zaczynałem programować (a było to około roku 1990) głównymi materiałami do nauki były nieliczne ksiażki oraz kilka czasopism traktujących głównie lub m.in. o programowaniu. Jeśli chodzi o te ostatnie, to było ich zaskakująco dużo (szczególnie porównując z obecną sytuacją). Wymienić mogę kilka:

Czytaj dalej...
DLL shared sections have long been infamous for introducing security problems. A few months ago I decided to take a look if one can still find applications that use PE modules with shared sections in an insecure way (or using them at all). Today I'm releasing research notes, some tools and a demo of a Cygwin local privilege escalation (it's already fixed).

Czytaj dalej...
10 kwietnia br. udałem się do autoryzowanego salonu Plusa w celu przedłużenia umowy, która skończyła się już jakiś czas temu. Nie byłem w stanie tego zrobić wcześniej ponieważ nie mieszkam w Polsce i bywam w niej nieczęsto (o czym zresztą moi czytelnicy pewnie wiedzą). Jak się domyślacie, gdyby wszystko poszło gładko, to tego postu by nie było.

Czytaj dalej...
IGK is an annual game development conference in Poland and quite a fun one at that (not that I've been at many gamedev conferences). This year it started 29 of March and ended 1 of April in the evening (if counting the unofficial annual afterparty that is). The conference consists of a series of talks in the first two days and a 7 hours team gamedev compo. This year, as last year, I both had the opportunity to give a talk and to start in the compo, with quite decent results (for someone not really involved in game dev anymore).

Czytaj dalej...
2012-04-12:

HITB Magazine #8

HITB Magazine
Wyszedł nowy numer HITB Magazine, z magicznym numerkiem #8 i opisem jeszcze bardziej magicznego błędu by j00ru!

Czytaj dalej...
Uh huh, to będzie dość aktywna "wycieczka" do Polski - kilka dni po prelekcji na IGK w Siedlcach (o której już pisałem) będę prowadził kolejną, tym razem w Krakowie, na drugiej edycji TKonferencji (3 kwietnia). Temat można zaliczyć do "popularnonaukowego security/hackingu", a brzmi on "DON'T PANIC! - Przegląd zagadnień z zakresu IT security/hackingu.". Z tego co mi wiadomo konferencja jest darmowa, ale przeznaczona dla studentów oraz uczniów.

Czytaj dalej...
2012-03-19:

CPC464 1-to-2 joystick port splitter (EN only)

DIY:cpc464:electronics
Some time ago I've learned that you could connect two joysticks to the one-joystick-port CPC464 (you know, the old 8-bit computer I've already mentioned in few posts). So, I decided to practice my electronic skill, dig into the topic and make myself whatever piece of hardware is required to actually make two-joystick connection possible. Today I've finished the "1-to-2 joystick port splitter" and decided to document both the project, as well as the problems, the solutions, and the failures.

Czytaj dalej...
O tegorocznej edycji konferencji już pisałem, natomiast nie pisałem jeszcze, że zgłosiłem prelekcję pod tytułem "Ewolucja układów graficznych".

Czytaj dalej...
Będąc w styczniu w Mountain View wysłałem do kilku znajomych (jak i mniej znajomych) pocztówki. Z wrodzonej przekory niektóre wiadomości umieszczone na pocztówkach zaszyfrowałem - część przy pomocy kartki i długopisu, a część przy pomocy trochę bardziej skomplikowanych narzędzi. W każdym razie dzięki uprzejmości odbiorców pocztówek na sieć trafiły skany większości z nich - zachęcam więc do spróbowania swoich sił i połamania szyfrogramów w "pocztówkowym wyzwaniu Gyna" ;>

Czytaj dalej...
Jak pisałem wcześniej w poście "Krótki news dot. podcastów", pierwszy miesiąc tego roku spędziłem w USA, a konkretniej w Krzemowej Dolinie. Niniejszy post jest odpowiedzią na pojawiające się prośby o "jakąś relację" ;>

Czytaj dalej...
Krótki news dla zainteresowanych gamedev'em - od paru(nastu?) dni otwarta jest rejestracja na konferencję Inżynierii Gier Komputerowych (w skrócie: IGK), która, jak co roku, odbędzie się w Siedlcach (w tym roku 30 marca - 1 kwietnia).

Czytaj dalej...
Wrzuciłem na sieć nowy podcast (videocast?) o Maszynach Wirtualnych. Trochę technicznie, trochę popularno-naukowo, i trochę praktycznie - ostatnie 30 minut to pisanie prostej VMki (dodam, że podcast wyszedł długi i ma półtorej godziny).

Czytaj dalej...
2011-12-30:

Analiza / Recenzja

recenzja
Z uwagi na wydarzenia bliskie losowym dostałem do recenzji (a w zasadzie do analizy merytoryczno-techniczno-różnej) video tutoriale + książkę "Bezpieczeństwo Aplikacji Windows" wydawnictwa CSH znanego z [nie]sławnej serii "Szkoła Hakerów". Recenzję stworzyłem (zeszło na to około 30 godzin pracy) i dzisiaj ją publikuje.

Czytaj dalej...
TL;DR: Po pierwsze: config do gVim'a o który trochę osób pyta jest tutaj: http://gynvael.vexillium.org/dump/_vimrc (pod *nixami trzeba zmienić czcionkę, etc). Po drugie: publikacja epsa o Magus Ex Machina odsunie się o jakieś dwa miesiące (problemy techniczne). Więcej poniżej...

Czytaj dalej...
Pojęcia "przepełnienie stosu" oraz "przepełnienie buforu na stosie" są dość często używane zamiennie. Niestety, jest to nieprawidłowe - są to dwie zupełnie różne klasy bugów, których nie należy ze sobą mylić. Niniejszy post ma na celu wykazanie różnicy, a także luźne rozważania na temat genezy błędu.

Czytaj dalej...
W skrócie: 1. Wrzuciłem mniej więcej uporządkowaną listę serii/odcinków podcastów (link w menu po prawej). 2. Od początku stycznia do połowy lutego 2012 nie będę niestety w stanie nagrać żadnego podcastu - publikacje wznowie w drugiej połowie lutego.

Czytaj dalej...
2011-11-20:

Magus Ex Machina – a product of a 48h codejam (+pytanie)

gamejam:magus ex machina:compo
W zasadzie ten post jest po angielsku, ale po polskiej stronie lustra chciałem zapytać osoby zainteresowane moimi video tutorialami z serii Gamedev: Czy chcielibyście posłuchać coś więcej o budowie/tworzeniu Magus Ex Machina (w postaci videocastu z serii Gamedev)?

Czytaj dalej...
Kilka godzin temu premierę miała nowa książka Michała Zalewskiego (znanego bardziej jako lcamtuf) - "The Tangled Web". Miałem to szczęście, że mogłem książce przyjrzeć się jeszcze przed premierą, więc korzystając z premiery w końcu coś o niej krótkiego napiszę.

Czytaj dalej...
Krótki wpis z dwoma "newsami". Po pierwsze: link do mojego profilu na Google+ (czasem wrzucam tam coś merytorycznego, co nie trafia na bloga). A po drugie: wrzuciłem 6 nowych videotutoriali na YT (o gamedevie, czyli programowaniu gier).

Czytaj dalej...
"Nie ma to jak dobry bike shed, żeby rozruszać bloga" - to stwierdzenie uknułem (razem z j00ru) jakiś czas temu, po zapoznaniu się z tytułowym prawem trywialności parkinsona i naniesieniu go na ilość komentarzy na moim blogu vs tematyka danego postu. Moim zdaniem jest to jedno z ciekawszych praw jeśli chodzi o prowadzenie bloga i może zainteresować szczególnie osoby prowadzące (lub chcące prowadzić) bloga/blogi w celach zarobkowych.

Czytaj dalej...
2011-10-31:

32 kolory

perihelion:gfx:code for fun
Przez przypadek wpadła mi w ręce ostatnio recenzja gry Perihelion - jest to wydana w roku 1993 gra RPG na Amigę. Z uwagi na ówczesne ograniczenia, autorzy gry dysponowali jedynie paletą 32 kolorów i muszę przyznać, że sposób w jakie wykorzystali te 32 kolory mi zaimponował. Konkretniej: złożyli paletę z dwóch "gradientów": szarego i pomarańczowego, co dało kapitalny efekt (screeny poniżej). Anyway, efekt spodobał mi się na tyle, że stworzyłem krótki programik, który konwertuje dany obrazek własnie do takiej palety 32 kolorów.

Czytaj dalej...
Kilka razy obiło mi się o uszy stwierdzenie typu "żeby być dobrym z programistą/informatykiem trzeba być dobrym z matematyki", jak i również nie raz trafiały do mnie pytania w stylu "czy jak z matematyki mam [ocena poniżej 5] to mam szansę zostać informatykiem/programistą?" (czasem w formie zawstydzonego-przyznania-się-do-winy typu "ale wiesz, ja z matmy mam [ocena poniżej 5]"). Ponieważ o temacie przypomniał mi komentarz noname pod ostatnim postem ("czy matematyka jest obecna ( a jeśli tak, to w jakim stopniu?) w Twojej codziennej pracy?"), postanowiłem przedstawić mój punkt widzenia.

Czytaj dalej...
W skrócie: nie. W pozostałej części postu przedstawiam kontekst pytania (chociaż jest dość przewidywalny), a także wyjaśniam dlaczego zazwyczaj nie wiem jakie książki polecić początkującym.

Czytaj dalej...
NetSock to lib/wrapper ułatwiający obsługę socketów w C++, który stworzyłem 4 lata temu (albo 5, przyznaję, że nie pamiętam dokładnie) i update'uje od czasu do czasu. W sumie można było go ściągnąć z innymi moimi projektami (np. ostatnio opublikowanym PiXiEServ), ale nigdy nie miał swojej własnej oficjalnej premiery.

Czytaj dalej...
Wygląda na to, że transport Jabber<->GG z którego korzystałem (gg.jabber.wroc.pl) zostanie permanentnie wyłączony w nadchodzący weekend. W związku z powyższym, nie będę już niestety osiągalny via gg.

Czytaj dalej...
A few years back, we've been (i.e. j00ru and Gynvael) working on a bootkit-related project (some polish SecDay'09 presentation slides can be found here: Bootkit vs Windows.pdf). One of its basic requirements was the ability to load custom boot-"sectors" from an external host in the local network. Since the publicly available solutions required too much time to be spent on configuration and we didn't need most of the offered functionality anyway, we decided to create an extremely simplified Preboot Execution Environment (PXE) server on our own, and so PiXiEServ came to be. Actually, a great majority of the source code was written by Gynvael, with only few modifications applied by me (i.e. j00ru).

Czytaj dalej...
2011-09-20:

Podcast background no1

podcast
Wrzuciłem na YT muzykę którą prawdopodobnie dodam w tło podcastów w pewnym momencie (do posłuchania również poniżej).

Czytaj dalej...
The interesting difference between ASCII and Unicode is that the first had only one group of digits defined (30h to 39h), and the latter defines 42 decimal digit groups (I think it actually defines more, but nvm). A common programming language operation is to convert a sequence of digit-characters (yes, a number) to a machine-understandable integer. Does any default in-language string-to-integer support Unicode digits? Does any is-digit function return true on Unicode digits? Well, I did some checking and created a table (programming language/version/library vs digit group) that addresses these questions.

Czytaj dalej...
In march I've published some research related to Just another PHP LFI exploitation method that used the fact that the PHP engine stores (on disk) uploaded files (rfc1867) for a short period of time, even if scripts don't really expect them. The bottom line was that it's easy to exploit it on Windows, but on *nix it wasn't really possible unless some php script leaks certain information (temporary file name). Well, Brett Moore in his paper "LFI with phpinfo() assistance" pointed out that phpinfo() is the thing you want to look for on *nix.

Czytaj dalej...
Niecałe trzy lata temu opublikowałem post pod tytułem "Wolność dla wszystkiego, czyli kompletne anihilowanie pamięci procesu", który był opisem próby uwolnienia wszystkich regionów pamięci należących do danej Windowsowej aplikacji, z poziomu tejże aplikacji. Wczoraj dostałem maila od raphael<AT>gfreedom<DOT>org z opisem (udanej) próby wykonania podobnego eksperymentu pod systemem opartym o jądro Linux. Dostałem również zgodę na opublikowanie jego maila w formie postu gościnnego, co niniejszym czynie.

Czytaj dalej...
2011-08-07:

Security in HTML 5 and HTTP (EN only)

data dump:html 5
For various reasons I've decided to take a deeper look at the evolving HTML 5 standard and related new HTTP extensions (or proposals of extensions). To tell you the truth, I was extremely surprised about the number of HTML tags that I didn't even hear of (like <ruby>, <kbd>, <meter>, <progress>, etc). Another thing that surprised me were a few security features I was not familiar with... so I decided to write down what I found interesting (so yes, this is a 'data dump' only).

Czytaj dalej...
2011-08-01:

Random thoughts #4 (EN only)

data dump:random thoughts
Since I don't have any material for a bigger post, I decided to make another 'random thoughts' one, with a couple of smaller things discussed...

Czytaj dalej...
Zupełnie out-of-order nagrałem dodatkową miniserię podcastów (a w zasadzie videocastów) o pointerach (wskaźnikach) w C/C++. Seria trwa łącznie ponad 4 godziny i jest rozbita na 8 odcinków, w których staram się pokazać/wytłumaczyć czym jest pointer (adres+metadane), jakie narzędzia na poziomie składni udostępnia język do operowania na pointerach, jak i po co castować pointery (jest i krótka dygresja o strict aliasing rule), po co ich używać, a także jak napisać programik który wylistuje regiony pamięci używane przez aplikację.

Czytaj dalej...
I never given too much thought to the problem of initialization of a in-function static variable in C/C++ (mostly C++ though). I just blindly assumed that the static variable works identically to a global variable, but is directly accessible (using language provided means) only in the block of code (and its child blocks) in which it was declared/defined. This is partly true of course - the big difference is that the global variable is initialized either at compilation time (constant) or before the entry point, and the static variable is initialized either at compilation time (constant) or at the first entry to the block of code where it's declared/defined. The interesting parts here are "how does the variable know if it has been initialized" and "what about concurrent multi-threading?" (the latter has some minor stability/security consequences). Let's take a look at GCC and Microsoft Visual C++ and how do they handle these issues...

Czytaj dalej...
Minęło 10 miesięcy od kiedy przeprowadziłem się do Konfederacji Szwajcarskiej i uznałem ten fakt za dobrą wymówkę żeby wrzucić kilka fotek, i kilka przemyśleń, na temat mieszkania w Szwajcarii.

Czytaj dalej...
Some time ago I had a crazy/funny idea for a local privilege escalation: run a privilege granting operation in an infinite loop and wait for a random bit flip in CPU/RAM that would make a 'can this user do this' check return 'true' instead of 'false'. Is this theoretically possible? Yes. And practically? Almost impossible, due to the unlikeliness of a bit flip and even more, the unlikeliness of a bit flip in the just right place. Nevertheless, I thought this idea was quite interesting and decided to dig into the topic. This post will summarize what I've found out and mention a few papers/posts might be worth reading.

Czytaj dalej...
2011-06-13:

JTLYK, HITB Magazine #6 is out

hitb:ezin
The important stuff: download (http://magazine.hackinthebox.org/issues/HITB-Ezine-Issue-006.pdf) & some more info about the issue at j00ru's blog (http://j00ru.vexillium.org/?p=817).

Czytaj dalej...
2011-06-12:

Why NULL points to 0?

c:hacking:security
A few years ago I would answer the above question with "because NULL is defined as a void pointer to 0", which is only half correct (and close to being wrong). The answer to this question is much more complicated and thus much more interesting.

Czytaj dalej...
2011-06-10:

Podcasty update kolejny

podcast:videocast
Niecały miesiąc minął i kilka nowych podcastów na sieć wrzuciłem. Póki co idzie całkiem nieźle...

Czytaj dalej...
[Collaborative post by Mateusz 'j00ru' Jurczyk & Gynvael Coldwind] Early Sunday morning discussion has resulted in j00ru coming up with an idea to mitigate some variants of kernel exploitation techniques by introducing a CPU feature that would disallow execution control transfers in kernel-mode to code residing in user memory area pages (e.g. addresses < 0x80000000 on a 32-bit Windows with default settings). The idea was that the system would mark every page as either being allowed to execute code in ring-0 or not. And hey, guess what... Intel has already proposed such a feature a month ago! Furthermore, it seems that this exact idea was already described in 2008 by Joanna Rutkowska, and two days ago she has published a follow up post on her blog.

Czytaj dalej...
Od początku istnienia tego bloga staram się (tj. nie zawsze to wychodzi) wszystkie posty wrzucać dwóch językach - polskim, oraz angielskim. Niestety, z powodów czasowych, muszę trochę zredukować ten zakres. W związku z czym, od teraz tylko część postów będę publikował w obu językach. Pozostała część będzie publikowana albo tylko po polsku (posty edukacyjne) albo tylko po angielsku (posty techniczne/związane z moimi badaniami).

Czytaj dalej...
2011-05-29:

Digital pen

pen:toys
O ile nie uważam siebie za gadżeciarza, to co jakiś czas jakiś nowy "kawałek elektroniki" wpada w moje ręce. Tym razem było to tzw. pióro cyfrowe (digital pen; w skrócie: długopis który zapamiętuje to co piszesz i pozwala "wrzucić to na kompa") firmy I.R.I.S. (a przynajmniej taka firma była podana na pudełku). Co ciekawe, udało mi się dorwać SDK do tego urządzonka, więc post będzie również spojrzeniem na digital pen od strony programistycznej (bez przesadnych technikaliów).

Czytaj dalej...
2011-05-18:

Videocasty - mały update

videocast
Dokładnie 10 dni temu napisałem, że zaczynam publikować na YT nowe serię videocastów (videotutoriali). Przez te 10 dni wrzuciłem trochę nowych epsów (około piętnaście) i w zasadzie zaczęło się klarować co i jak będę nagrywać.

Czytaj dalej...
Dwa tygodnie temu pisałem o konkursie zorganizowanym przez serwis Security News (http://secnews.pl), a w którym do wygrania była wejściówka na konferencję CONFidence 2011. Konkurs polegał na stworzeniu ciekawego CrackMe, które następnie oceniane były pod względem trudności (ale musiały być rozwiązywalne), pomysłowości, innowacyjności oraz walorów wizualnych. Wczoraj późnym wieczorem zostały ogłoszone wyniki i wygląda na to, że wygrał team w składzie j00ru+ja. Yaay! :)

Czytaj dalej...
Pod koniec kwietnia odwiedziliśmy z żoną Polskę. Jedną z atrakcji w tym nadwiślańskim kraju okazał się bankomat Euronetu, który po otrzymaniu szwajcarskiej karty zaproponował mi "Gwarantowany Kurs Wymiany Walut". W skrócie: coś czuje, że ktoś kogoś chce zrobić "w lewo" (konkretniej: Euronet mnie w tym wypadku)...

Czytaj dalej...
2011-05-07:

ReverseCraft EOF i nowe videocasty

recraft:videocast
ReverseCraft zawisł już jakiś czas temu w niepewności. Z jednej strony chciałem go kontynuować, z drugiej strony wiedziałem, że po prostu nie mam na to czasu (przygotowanie 45-minutowego epsa trwało od 5 do 10 godzin). Postanowiłem więc oficjalnie zakończyć serię ReverseCraft, ale jednocześnie rozpocząć nową serię videocastów.

Czytaj dalej...
2011-05-07:

Simplified Assembly Loader

asm:x86
Simplified Assembly Loader to prościutki programik (napisany zresztą "na kolanie" w niecałą godzinę) którego zadaniem jest ułatwienie rozpoczęcia nauki assembly x86 pod win32 i "linuxami". Będę z niego korzystał w kursie assembly który planuje wrzucać na youtube). Jak każdy mój tool, asmloader jest open source (tym razem licencja MIT, dla odmiany).

Czytaj dalej...
2011-05-02:

Szwajcarski scyzoryk x86 SSE 4.2: PCMPxSTRy

assembly:asm:x86:sse 4.2:pcmpxstry
Zazwyczaj instrukcje assembly są bardzo niskopoziomowe, tj. pozwalają wykonywać pojedyncze operacje arytmetyczne, logiczne, kopiowanie pojedynczych bajtów/wordów/etc i nic więcej - tak więc pierwszą rzeczą z którą muszą się oswoić osoby wchodzące w assembly, jest fakt, że to co można było zapisać w jednej linii np. w C, w assembly zajmie kilka-kilkanaście. I z jakiegoś dziwnego powodu do tego prostego świata assembly x86 zawędrował zestaw instrukcji PCMPxSTRy (SSE 4.2, dostępny m.in. na Intel Core i5/i7/etc), który jest bardziej wysokopoziomowy niż niejedna funkcja w standardowej bibliotece C.

Czytaj dalej...
Pewnie kojarzycie moją ulubioną konferencje security w .pl - CONFidence? Wygląda na to, że znajomy na swoim serwisie zorganizował bardzo ciekawy konkurs (trzeba stworzyć fajne CrackMe) w którym można wygrać wejściówkę na wcześniej wspomnianą konferencję.

Czytaj dalej...
2011-04-10:

Przemyślenia: int'y w programowaniu

int:x86:c:c++:code
Ostatnio trochę zajmowałem się trochę różnymi podejściami do problemu kodowania i operowaniu na liczbach całkowitych i naturalnych w programowaniu. Niniejszy post stanowi podsumowanie tego czego się dowiedziałem oraz dodatkowo, drobny rancik na temat C/C++ (innym językom dostanie się, być może, rykoszetem).

Czytaj dalej...
[Post gościnny by mulander] 12 listopada 2009 roku Gynvael napisał o swoich pierwszych wrażeniach dotyczących języka Go. Po upływie ponad roku napomknąłem autorowi, iż ciekawym tematem byłby analogiczny post na temat języków Digital Mars D oraz Mozilla Rust. Cała ta sytuacja przypomniała mi o pierwotnym poście i nakłoniła do odświeżenia lektury. Natknąwszy się na zdanie "Po za tym szkoda trochę, że język jest jeszcze niedostępny na platformę Windows." stwierdziłem, że warto sprawdzić jak sprawy się obecnie mają.

Czytaj dalej...
2011-04-07:

Recon 2010 - video

recon:lecture:syndicate wars:swars
Wczoraj zostało opublikowane nagranie z mojej i Unavowed'a prelekcji o portowaniu Syndicate Wars na współczesne systemy. Zachęcam do rzucenia okiem :)

Czytaj dalej...
2011-04-02:

Secunda Aprilis 2011

25-lat
Rok temu na prima aprilis zdeface'owałem sobie bloga, w tym roku zaś easter eggiem oczywiście było 25-lecie działalności w sieci...

Czytaj dalej...
Dokładnie 25 lat temu (31 marca 1986) na "sieć" (mowa ofc o BBS) trafiła pierwsza wersja niniejszego bloga. Niniejszy post ma na celu podsumowanie tychże 25 lat mojej blogowej działalności - zachęcam do lektury!

Czytaj dalej...
2011-03-22:

PHP security, klika linków

php:security
Króciutki post z kilkoma linkami związanymi z PHP i security/hackingiem.

Czytaj dalej...
2011-03-18:

Just another PHP LFI exploitation method

php:lfi:temporary files
Parę dni temu, podczas dyskusji ze znajomym (hi Felix ;>) o metodach exploitacji Local File Inclusion w PHP, wpadł mi do głowy pomysł, żeby użyć w tym celu tymczasowych plików tworzonych przez engine PHP podczas uploadu plików (to nie jest tożsame z include'owaniem uploadowanych plików ofc). Przerzuciłem pomysł na papier (w postaci artykułu), po czym okazało się, że w zasadzie ta metoda jest znana w niektórych kręgach. Niemniej jednak, ponieważ nie jest to "common knowledge" (w przeciwieństwie do np. include'owania logów apache czy /proc/self/environ), zdecydowałem się i tak opublikować owy art.

Czytaj dalej...
2011-03-11:

Zmienne i stałe: wartość, kodowanie, reprezentacja

c:c++:code:easy:variables
Post jest przeznaczony dla początkujących programistów (część o kodowaniu może zainteresować również bardziej doświadczone osoby). Planowałem go napisać już jakiś czas temu, przy okazji kolejnego pytania kolejnej osoby, które brało się z niepełnego zrozumienia czym jest zmienna/stała, a konkretniej np. nierozróżnienia wartości zmiennej od reprezentacji wartości, a także od kodowania i zapisu zmiennej w pamięci. Niniejszy post ma na celu wyjaśnienie wspomnianych różnic.

Czytaj dalej...
W piątek wieczorem (w końcu) pojawiło się oficjalne* info o tegorocznej edycji konferencji Inżynierii Gier Komputerowych (IGK jest stałym punktem w moim kalendarzu od kilku ładnych lat). Tak więc, konferencja odbędzie się tam gdzie zwykle (w Siedlcach / w Akademii Podlaskiej przemianowanej ostatnio na Uniwersytet Przyrodniczo** Humanistyczny) w dniach od 25 do 27 marca.

Czytaj dalej...
2011-01-11:

Windows, drivery, GS cookies i 1 bit entropi

windows:hacking:medium:gs cookies
W listopadzie na Code Project pewien chiński hacker opublikował "exploit omijający UAC", który, jak się okazało, z UAC nie miał dużo wspólnego - był to 0day na win32k.sys (czyli część kernela Windows odpowiedzialna za grafikę/okienka/etc). O sprawie napisano na Niebezpieczniku, zaznaczając, że błąd jest exploitowalny pod Windows 7, Vista oraz Windows XP. Umieszczenie w newsie XPka spowodowało wywiązanie się w komentarzach dyskusji (chociaż waham się przy użyciu tego słowa) w której kilku czytelników zwróciło uwagę, że błąd nie jest exploitowalny pod XP, a więc autor newsa wprowadza czytelników w błąd. Problemem pod XP okazały się, nieobecne na Vista i 7, stack cookies (a konkretniej /GS cookies), które powinny skutecznie uniemożliwić exploitacje. Postanowiliśmy z j00ru wgłębić się w temat, czego efektem jest prawie 40-stronnicowy artykuł zlinkowany poniżej.

Czytaj dalej...
Tytułową zagadkę dostałem od furia i uznałem na tyle ciekawą, że przez kilka kolejnych dni rozdawałem ją na prawo i lewo. Zagadka jest o tyle ciekawa, że są tam dwa Undefined Behaviour w jednej krótkiej linii. Obecność UB powoduje oczywiście, że nie ma jednej dobrej odpowiedzi; odpowiedzi tak naprawdę są trzy: 11, 12 lub 13.

Czytaj dalej...
Prośba do osób posiadających Windowsa (choćby na VM): http://j00ru.vexillium.org/ticks/

Czytaj dalej...
2010-12-13:

Hacking

easy:hacking:security
Osoby zajmujące się zawodowo hackingiem (w szczególności pentesterzy czy security researcherzy) mogą pominąć niniejszy post (chyba, że chcą dodać sugestię od siebie, takowe są baardzo mile widziane) - nie sądzę by znalazło się tu dla was coś nowego bądź zaskakującego. Post skierowany jest przede wszystkim do osób zainteresowanych hackingiem, ale nie związanych z nim w sposób formalny.

Czytaj dalej...
2010-11-20:

Saturacja w scanf/atoi/strtol

c++:c:windows:linux
Dyskutując wczoraj m.in. z apsem o pewnym kawałku kodu natrafiliśmy na ciekawą (moim zdaniem) różnicę w implementacjach funkcji atoi, [sf]canf %i oraz strtol (z której btw w niektórych implementacjach korzystają [sf]scanf oraz atoi) między msvcrt (Microsoft C-Runtime Library), glibc (GNU C Library), a libc używanym na OSX.

Czytaj dalej...
2010-11-05:

CONFidence 2010 2.0, Praga

confidence:security:hacking
29-30 listopada b.r. w Pradze (w Czechach) odbędzie się druga w tym roku edycja CONFidence. Mimo, iż z uwagi na chwilowe zamieszanie po przeprowadzkowe nie jestem w stanie się na niej pojawić, to stwierdziłem, że co jak co, ale o CONFidence trzeba napisać (coś mi mówi, że przez to samo zamieszanie zapomniałem wspomnieć o SecDay, które było we wrześniu).

Czytaj dalej...
2010-10-24:

Ciekawostki #4

press
Wraz z rozpoczęciem cyklu ciekawostek założyłem sobie "notatnik" (ofc w formie elektronicznej) w którym zapisuje rzeczy które mnie zaciekawiły. Notatek zrobiło się tam całkiem sporo, więc chyba czas na kolejny post z tego cyklu.

Czytaj dalej...
2010-10-20:

PHP preg_match i UTF-8

php:easy:utf-8
Kilka dni temu dostałem kawałek kodu napisanego w PHP 5 oraz pytanie "czy to jest OK?". Kod zajmował się walidacją pól formularza (tj. tzw user input), a konkretniej, sprawdzał czy user input składa się tylko z liter, łacińskich (A-Z) oraz polskich liter diakrytyzowanych (czyli Ą Ż Ś Ź Ę Ć Ń Ó Ł oraz małych wersji tychże liter: ą ż ś ź ę ć ń ó ł). Dodatkowo, weryfikacji podlegała ilość wprowadzonych liter - limit był stosunkowo niewielki. Jak zapewne się już domyśliliście, kod był "nie OK", a błąd był na tyle ciekawy, iż zdecydowałem się go opisać.

Czytaj dalej...
2010-10-18:

HITB eZine 004

hitb:hack in the box:zin:ezin:hacking
Kilka dni temu, przy okazji konferencji Hack In The Box w KL, wyszedł czwarty numer Hack In The Box Magazine! Jest tam kilka ciekawych nowych artykułów, a także kilka "przedruków" z poprzednich numerów (aka Readers Choice).

Czytaj dalej...
2010-10-17:

Rozwinięcie makra w C/C++

easy:g++:c++:c
Ostatnio pracuje nad pewnym kodem w C++ w którym (nad)używam sporo różnych ficzerów języka. A jeśli chce się, żeby tego typu kod na pewno działał, trzeba być pewnym tego jak zachowa się kompilator, co sprowadza się do poszukania czy dane zachowanie jest wynikiem zgodności ze standardem (tj. czy standard mówi, że dana rzecz dokładnie tak ma się zachować), zdefiniowanym zachowaniem kompilatora (tj. w dokumentacji kompilatora (w moim przypadku jest to GCC) jest zapisane, że dana rzecz dokładnie tak się zachowa, ale niekoniecznie jest to zdefiniowane w standardzie języka), czy też jest totalnym UB (czyli w żadnej oficjalnej dokumentacji nie jest dane zachowanie udokumentowane, czyli jedyne czego możemy być pewni, to to że dana wersja danego kompilatora w takim konkretnym miejscu się prawdopodobnie zachowa się tak jak zaobserwowaliśmy). Tak więc niniejszy post jest w zasadzie zapisem informacji które znalazłem o pewnym ficzerze (rozwijaniu makr przez preprocesor) i prawdopodobnie doświadczeni programiści mogą niniejszy post pominąć.

Czytaj dalej...
2010-10-04:

Ciekawostki #3

press
Kolejna garść wygrzebanych tu i tam ciekawostek.

Czytaj dalej...
2010-09-30:

Ciekawostki #2

press
Kolejna porcja linków...

Czytaj dalej...
Wstępnie miała być to tylko kolejna "Ciekawostka", ale tekst się rozrastał i rozrastał, więc stwierdziłem, że jednak trzeba zrobić pełnego posta. A będzie krótko o kilku drobnych rozszerzeniach GCC których wcześniej nie widziałem, oraz trochę dłużej porantuje czego mi w C/C++ jeszcze brakuje (i nie, nie będą to szablony szablonów ;f).

Czytaj dalej...
2010-09-27:

Ciekawostki #1

press
Odzew na pytanie zadane wczoraj był całkiem niezły, więc oto publikuje pierwszy zestaw linków, ciekawostek, etc. Zachęcam do komentowania ofc.

Czytaj dalej...
Od pewnego czasu chodzi za mną pomysł, żeby publikować co kilka dni linki do artykułów/papierków/wpisów na blogach które ostatnio czytałem i wg. mnie są warte przeczytania lub po prostu fajne/ciekawe. No i pytanie brzmi, czy kogoś by w ogóle był tym zainteresowany. Zachęcam do wyrażania opinii w komentarzach.

Czytaj dalej...
2010-09-09:

Back online

blog
Witam ponownie po krótkiej przerwie, spowodowanej zmianą miejsca zamieszkania, a więc i koniecznością ponownego "załatwienia" dostępu do neta. Czas na garść informacji organizacyjnych...

Czytaj dalej...
2010-08-24:

Jak nie ukrywać swojej twarzy

jpeg:easy
Dostałem dzisiaj od znajomego pewne zdjęcie, w formacie JPEG. Zdjęcie przedstawiało osobę, której twarz została zamalowana czarnym prostokątem. Nie było by w tym nic ciekawego, gdyby nie to, że explorer pokazywał na miniaturce twarz niezamalowaną :)

Czytaj dalej...
2010-08-09:

Kurs programowania?

question:blog
(Krótki i chaotyczny post napisany "w biegu") Natrafiłem na pewien problem. Mianowicie, skąd początkujący powinien się uczyć programować? Sieć jest przepełniona materiałami dot. najrozmaitszych języków programowania. Są kursy C, dokumentacja Pythona, manuale Intela do Assembly x86, książki o PHP, etc. Ale to wszystko jest o językach. I dobrze! Ale co z nauką komponowania programów (z braku lepszej nazwy przychodzącej mi do głowy)?

Czytaj dalej...
2010-07-27:

Co tam mam na warsztacie, czyli HWFramework

hwframework:medium:c++
Po CONFidence stwierdziłem, że fajnie byłoby się pobawić różnymi starymi rozwiązaniami sprzętowo-software'owymi, typu ANTIC i P/M, HAM6, itd. Jak to osiągnąć?

Czytaj dalej...
Poprzedni post, tj. Wybór studiów a szanse na rynku pracy, wywołał całkiem niezłą dyskusję, zarówno na temat, jak i na różne tematy mniej lub bardziej powiązane z głównym wątkiem, np. "studia (nie) są niepotrzebne", "prawdopodobieństwo może przyjmować (nie) tylko wartości od 0 do 1", czy też temat który chciałbym dzisiaj rozwinąć - "jak udokumentować swoją wiedzę". Zachęcam do lektury, a przede wszystkim, do dyskusji!

Czytaj dalej...
Najczęściej ostatnio pojawiającym się pytaniem na moim mejlu/komunikatorach jest "jakie wybrać studia, żeby znaleźć później dobrą pracę". Czas chyba zająć w tej sprawie "oficjalne" stanowisko.

Czytaj dalej...
2010-07-21:

CONFidence 2010 - nagranie z naszej prelekcji o błędach w Windowsie

confidence:lecture:terrible terrible english:windows:hacking:security
Na stronie konferencji CONFidence 2010 pojawiły się nagrania wideo z kilku prelekcji, m.in. z prelekcji mojej i j00ru "Case study of recent Windows vulnerabilities". Nagranie jest w formie do pobrania na dysk (tj. nie ma playera online).

Czytaj dalej...
2010-07-20:

Stare advisory PHP EXIF

security:php:rant
Wczoraj wieczorem opublikowaliśmy (u j00ru na blogu) trochę starych advisory dotyczących PHP (nic poważnego, jakieś tam prawie nieistotne rzeczy, więc to bardziej wyniki badań niż literalnie "advisory"). W sumie nie tyle chodziło nam o znalezienie jakiś bugów w PHP (noo, trochę też, ale nvm ;p) co o przetestowanie nowej (dla nas) metody audytowania kodu.

Czytaj dalej...
2010-07-20:

HiperDrop 0.0.1

hiperdrop:reverse engineering:easy:windows:c++
Przeglądając ostatnio katalogi na dysku znalazłem trochę narzędzi które z jakiegoś powodu ukrywałem i do tej pory nie opublikowałem. Zastanawiam się nad dokończeniem ich podstawowej funkcjonalności i wrzuceniu w końcu na sieć. W każdym bądź razie, jednym z takich narzędzi (które prawie bez zmian nadawało się do publikacji) jest HiperDrop - prosty, konsolowy, tool do zrzucania pamięci procesu, pod Windows.

Czytaj dalej...
2010-07-09:

RECON - prezentacja

recon:swars:syndicate wars
Bardzo krótki news - zgodnie z obietnicą, nasza prezentacja z RECON dot. Syndicate Wars Port:

Czytaj dalej...
Wieczorem 12 grudnia 2006 napisałem na OpenRCE, że poszukuje pracy jako RE/programista. Po kilku godzinach otrzymałem maila od Julio Canto z hiszpańskiej firmy Hispasec z propozycją nawiązania współpracy, którą wkrótce faktycznie nawiązaliśmy. Od tego dnia minęły ponad trzy lata i dość nieoczekiwanie wyszło na to, że 19 sierpnia odchodzę z Hispasec, by 6 września rozpoczać pracę u nowego pracodawcy. Niniejszy post jest niejako podsumowaniem mojej współpracy z Hispasec, oraz podziękowaniem dla wspałniałych ludzi z którymi przyszło mi tam pracować :)

Czytaj dalej...
2010-07-07:

W drodze RECON

recon:lecture
Krótkie info: za parę godzin wylatuje z Wrocławia na RECON (Montreal, Kanada), gdzie dotrę dopiero jutro pod wieczór czasu polskiego (15h czekania na przesiadkę w Monachium FTW!). Tak więc kontakt ze mną może być utrudniony chwilowo, ale mejla będę w miarę możliwości sprawdzał. Mam na najbliższe parę dni zakolejkowany przynajmniej jeden post, więc coś się powinno mimo wszystko na blogu pojawiać ;>

Czytaj dalej...
Sporo gier komputerowych (zresztą nie tylko komputerowych) z elementami RPG stosuje tzw. "skill tree" - czyli drzewko kolejnych umiejętności (zachęcam do wklepania "skill tree" w google images), które dana postać może zdobyć/poznać/posiąść. Drzewko jest zorganizowane w taki sposób, że po poznaniu danej umiejętności odblokowuje się kolejna (lub kolejne) - tak więc aby poznać umiejętność Z, być może trzeba najpierw nabyć umiejętność Y, która wymaga X. Jakieś dwa lata temu wpadłem na pomysł, żeby pomysł ten przenieść do IT (programowania/hackingu/RE) - stworzyłem sobie ogólne drzewko rzeczy które chciałbym poznać (np. architekturę ARM), a potem oddzielne drzewko szczegółowe dla każdej umiejętności z drzewka ogólnego. Co ciekawe, kilku znajomych podłapało pomysł i kilka wieczorów spędziliśmy na projektowaniu takich drzewek i dyskusji jaka kolejność jest dla nauki danej rzeczy najlepsza (lub, jak nam się wydaje która będzie najlepsza ;>).Ostatnio do pomysłu wróciłem, a to za sprawą kilku osób, które próbowały mnie podpytać czego się uczyć (np. w kontekście C++) i w jakiej kolejności. Pomyślałem, że fajnie byłoby stworzyć trochę takich drzewek i rzucić na sieć, ot tak aby początkujący (z danej tematyki) mieli (prawie) pełen obraz czego powinni się uczyć, i jaka jest proponowana (przez osoby które już przez to przeszły, oraz samych zainteresowanych) kolejność. Niemniej jednak moja wiedza jest ograniczona, a mój punkt widzenia strikte przyczepiony do mnie (a więc zawężony do moich doświadczeń), więc projekt będzie od początku otwarty i będę zachęcał Was do udziału :)

Czytaj dalej...
2010-07-02:

HITB Magazine #3

hitb:hitb magazine:ezin:hacking:security:reverse engineering
Podczas konferencji Hack In The Box w Amsterdamie (która zaczęła się bodajże wczoraj) został opublikowany trzeci numer wskrzeszonego przez Zarula Shahrina e-magazynu HITB. Trzeci numer, najlepszy moim zdaniem od momentu wskrzeszenia zinu, jest bardzo techniczny i sądzę, że przypadnie wam do gustu. Dodam również, że nie zabrakło polskich akcentów :)

Czytaj dalej...
2010-06-28:

Konsultacje, zakończenie projektu

konsultacje
Projekt konsultacji/korepetycji/lekcji dla początkujących rozpocząłem na początku roku i przez te parę miesięcy "przekonsultowałem" kilkadziesiąt godzin. Niestety, z uwagi na pewne zmiany i reorganizacje czasowe które obecnie czynie, muszę z kilku aktywności zrezygnować... i padło m.in. na owe konsultacje (o czym zresztą osoby chcące się, w ciągu ostatnich tygodni, zapisać na nie, informowałem).

Czytaj dalej...
Zarówno GCC, oraz inne kompilatory, jak i same standardy języków C/C++, przewidują pewne rozszerzenia języka, które zazwyczaj adresują jakiś problem, bądź też dodają nową funkcjonalność. Tych rozszerzeń jest masa - w zasadzie każdy popularny kompilator ma niemałą listę takich dodatków, i oczywiście nie zamierzam ich wszystkich opisywać w tym poście. Wspomnę natomiast o dwóch: atrybucie init_priority dla globalnych inicjacji obiektów w GCC C++, oraz znaku dolara ($) w nazwach zmiennych - rozszerzeniu pojawiającym się w różnych miejscach. Przy okazji tego ostatniego, zaprezentuje jedno zadanie z tegorocznego testu na Technika Informatyka (który od dwóch dni krąży po sieci).

Czytaj dalej...
2010-06-08:

Losowe przemyślenia (3)

random thoughts:easy
Kilka dni nic nie pisałem, a kilka losowych przemyśleń mi się uzbierało. Skorzystam więc z okazji i je zanotuje.

Czytaj dalej...
2010-05-30:

CONFidence 2010: slajdy i oryginalne advisory

confidence:conference:lecture:windows:security:medium:high
Tylko króciutki (prawie że copy-pejstowany z bloga j00ru) z oryginalnymi "advisory" dotyczącymi błędów które omawialiśmy na CONFidence (a wcześniej na Hack In The Box w Dubaju), oraz ze slajdami które używaliśmy podczas prelekcji na CONFidence (zachęcam do zajrzenia do posty z "relacją" z CONFidence). W owych "advisory" są detale które omawialiśmy na prezentacji, a także kilka dodatkowych informacji na które zabrakło czasu.

Czytaj dalej...
2010-05-30:

CONFidence 2010, post postkonferencyjny

confidence:conference:lecture
CONFidence ma jedną zasadniczą wadę - kończy się ;) Ale to w sumie dobrze - przynajmniej człowiek ma okazję uporządkować zdobytą wiedzę, na spokojnie pomejlować z nowo-poznanymi ludźmi, i wygrzebać z szafy starego poczciwego ATARI.

Czytaj dalej...
2010-05-05:

RECON 2010 - temat przyjęty

recon:lecture:reverse engineering:re:swars
Kilka miesięcy temu wysłaliśmy z Unavowedem zgłoszenie tematu na konferencję RECON, odbywającą się 9-11 lipca tego roku w Montrealu (Kanada). Wczoraj oficjalnie nasz temat został ogłoszony (a więc i oficjalnie przyjęty)! :)

Czytaj dalej...
2010-05-03:

Windows CSRSS cross-version API Table

windows:security:winapi:csrss
Post przekierowujący dla dla czytelników researchujących Windowsa: Matthew opublikował tabelki z opkodami CSRSS (względem systemu, funkcji, etc) na swoim blogu, polecam rzucić okiem: http://j00ru.vexillium.org/?p=349&lang=en :)

Czytaj dalej...
2010-04-27:

Konsultacje wznowione

lessons
Dwa ostatnie miesiące były dla mnie bardzo pracowite - o czym zresztą przekonały się osoby które próbowały umówić u mnie konsultacje w tym czasie - musiałem jakoś pogodzić wystąpienia na dwóch konferencjach, research dla Hispasec, a także kilka dodatkowych projektów nad którymi pracuje, a przy tym nie wykończyć się fizycznie, ani nie zostać uduszonym przez moją ukochaną (której btw dziękuje za okazywaną cierpliwość ;>). Niemniej jednak sprawy się trochę uspokoiły, więc mogę wznowić konsultacje/korepetycje/lekcje dla początkujących :)

Czytaj dalej...
Co nie co o warsztatach, które prowadziłem na SEConference, pisałem już wcześniej. M.in. obiecałem wtedy podsumowanie ankiet uczestników, a do tego postanowiłem podzielić się kilkoma spostrzeżeniami.

Czytaj dalej...
Kiedyś moja żona wynalazła gdzieś stwierdzenie, że "ekspert to osoba która popełniła wszystkie możliwe błędy w swojej działce"* - i chyba coś w tym jest. Zauważmy, że programista na poziomie eksperckim/zaawansowanym rzadko kiedy dopytuje się "co zrobić gdy wyskoczył mi taki a taki błąd (np. kompilatora)" - on już te błędy widział, on już je kiedyś popełnił i nauczył się je rozwiązywać. Natomiast pytania od początkujących (a czasem i średnio-zaawansowanych) programistów dotyczą często właśnie tego "co zrobić gdy kompilator rzucił takim a takim błędem". Łącząc cytat z pytaniem, chciałbym zaproponować pewne ćwiczenie :)

Czytaj dalej...
2010-04-22:

HITB Dubaj - slajdy z prelekcji

hack in the box:hitb:dubai:lecture
Przed chwilą zakończyła się moja prelekcja na Hack In The Box w Dubaju, na której oczywiście być z krwi i kości nie mogłem (z uwagi na Eyjafjallajökull i odwołanie moich lotów), ale którą poprowadziłem przez telefon i stream pulpitu (ciekawe doświadczenie.. ale chyba preferuje irl prowadzić ;>). Slajdy z prezentacji udostępniamy poniżej.

Czytaj dalej...
2010-04-22:

HITB eZine Issue 002

hitb:zin:hacking:security
W drugi dzień konferencji HITB w Dubaju został opublikowany drugi numer e-zinu HITB Magazine. Z Polskich akcentów znajdziemy tam np. artykuł j00ru pt. "Windows Objects in Kernel Vulnerability Exploitation".

Czytaj dalej...
2010-04-20:

CONFidence 2010 - agenda

lecture:confidence
Na stronię CONFidence - największej organizowanej w Polsce, międzynarodowej konferencji poświęconej hackingowi/security - pojawiła się agenda. Można się z niej dowiedzieć, że w ciągu dwóch dni trwania konferencji, odbędzie się przynajmniej 25 prelekcji - w tym moja i j00ru, podczas której opowiemy od znalezionych przez nas błędach w Windowsie (a jest tych błędów 7). Pojawi się również trochę znanych nazwisk, jak choćby Jacob Appelbaum (cold boot attack).

Czytaj dalej...
2010-04-19:

Wulkany w ogródku i HITB Dubaj

hack in the box:hitb:dubai:lecture
Cóż... wygląda na to, że ze względu na bałagan który narobił islandzki wulkan Eyjafjoell, mój lot do Dubaju na konferencje Hack In The Box został odwołany. Dla przypomnienia - miałem tam mówić o znalezionych przez j00ru i mnie vulnach w Windowsie. Prawdopodobnie (o ile łącza internetowe i sprzęt na to pozwolą) moja prelekcja na HITB i tak się odbędzie, tylko że będzie to transmisja audio/video, a nie live.

Czytaj dalej...
Czas na jakiś bardziej techniczny post. Dostałem kilka dni temu pytanie, które pozwolę sobie zacytować: "[...] dlaczego nie powinno się deklarować zmiennych w taki sposób: int a = 50; int b[a];". Chodzi tutaj oczywiście o tablice lokalne, które mają wielkość zależną od jakiejś zmienne, być może nawet zależnej od użytkownika/wejścia. Swoją odpowiedź cytuje poniżej:

Czytaj dalej...
Ta sprawa "męczy" mnie już od jakiegoś czasu - coraz więcej producentów różnego rodzaju dóbr zaczyna traktować każdego KLIENTA (tj. płacącego klienta) jak potencjalnego "złodzieja", co chwilę gdzieś miga "kopiowanie tego XYZ jest przestępstwem", "modowanie urządzenia XYZ jest nielegalne", etc. Ale od początku...

Czytaj dalej...
2010-04-13:

[HISPASEC Research] Windows Kernel Vulnerabilities... x5 :)

windows:security:bughunt:buffer overflow:easy
O pierwszym z bugów znalezionych przez nasz team (w składzie j00ru i ja ;>) informowałem już w lutym. Dzisiaj Microsoft opublikował info o kolejnych 5 (a w zasadzie 6ściu, ponieważ dwa z nich, które dla nas wyglądały jako oddzielne błędy, udało się załatwić jedną zmianą, więc zostały ogłoszone pod jednym numerkiem) :)

Czytaj dalej...
2010-04-13:

Post SEConference, materiały

lecture:seconference:igk:gamedev:re
Od zeszłego czwartku do wczorajszego późnego popołudnia miałem maraton konferencyjny - w czwartkowy wieczór warsztaty z reverse engineeringu w ramach SEConference w Krakowie (o których wspominałem kilka postów temu), w piątkowy poranek prelekcja "Reverse Engineering for fun and profit" również w ramach SEConference (również wspomniana wcześniej), a 5 godzin później konferencja Inżynierii Gier Komputerowych w Siedlcach (dla odmiany, jako uczestnik ;>; o IGK napiszę w następnych postach).

Czytaj dalej...
2010-04-06:

SEConference, zapisy na warsztaty

lecture:seconference
Zgodnie z obietnicą, pragnę Was poinformować iż pojawiła się informacja o rejestracji na warsztaty (w tym moje, opisywane tutaj) na konferencji SEConference. Metoda rejestracji jest jaka jest i wygląda w ten sposób, że od [sic!] godziny 18:00 dnia 7 kwietnia należy wysłać e-mail na rejestracja@seconference.pl z tytułem "Warsztaty", a imieniem, nazwiskiem i tematem warsztatów, na które chce się zapisać, w treści. Zgodnie z informacją widniejącą na stronie konferencji, e-maile przed godziną 18:00 zostaną odrzucone (organizatorzy powiedzieli, że o kilka sekund kłócić się nie będą, ale też, że chodzi o to by wszyscy mieli równe szanse). Anyway, jest limit 20 osób per warsztaty, i obowiązuje zasada 'kto pierwszy ten lepszy', więc zainteresowanych zachęcam do trzymania ręki na pulsie. W razie gdyby limit miejsc nie został wyczerpany od razu po godzinie 18, postaram się o tym poinformować.

Czytaj dalej...
2010-04-02:

Secunda Aprilis

funny:blog
Pierwszy kwietnia się skończył (jakieś 25 minut temu), więc czas najwyższy rozpocząć Secunda Aprilis - drugi kwietnia - dzień w którym wypada powiedzieć co było dowcipem, a co nie :) Ale zacznę od początku...

Czytaj dalej...
2010-03-30:

SEConference 2k10 w Krakowie, moje warsztaty

seconference:lecture:workshop
Na stronie SEConference (i blipie) pojawiły się informacje o przewidzianych warsztatach podczas tegorocznej edycji tejże konferencji. Warsztaty będą trzy - w czwartek wieczorem mój o RE, w piątek wieczorem Piotra Dudka i Piotra Wojtyły o VPN, i w sobotę wieczorem Michała Sajdaka o nie-wiadomo-jeszcze-czym. Warsztaty prowadzone przeze mnie będą spójne z tematyką piątkowej prelekcji - czyli Reverse Engineering :)

Czytaj dalej...
2010-03-25:

SEConference 2k10 w Krakowie, mój temat

seconference:lecture
Czas w końcu ogłosić co będę mówić na SEConference w Krakowie :) A będzie to...

Czytaj dalej...
Dzisiaj ruszy rejestracja na DARMOWĄ konferencję poświęconą zagadnieniom szeroko-pojętego bezpieczeństwa komputerowego. Co ciekawe - i na pewno wyróżniające tą konferencję spośród innych darmowych - nie dość, że konferencja będzie w tej edycji dwudniowa, to jeszcze odbędą się warsztaty (również darmowe). Jak widać, organizatorzy za punkt honoru postawili sobie udowodnienie, że bezpłatne konferencje również mogą mieć rozmach znany z ich (niektórych) płatnych odpowiedników... i bardzo dobrze :)

Czytaj dalej...
Stało się. Dołączyłem do grona blogerów mniej lub bardziej związanych z security, którzy przyznali się do czytania papieru i nawet napisali o tym na blogu. Jedyna różnica polega na tym, iż zamiast opublikować ów post na swoim blogu, to, gościnnie, wrzuciłem go na bookblog.pl. Zapraszam do zapoznania się z treścią owego postu, oraz do komentowania (tym razem na w/w blogu, a nie tutaj).

Czytaj dalej...
Miesiąc temu wysłałem zgłoszenie na konferencje Hack In The Box 2010 odbywającą się w Dubaju, i wczoraj dostałem oficjalne potwierdzenie akceptacji tematu. Tak więc wygląda na to, że 21 i 22 kwietnie będę w Dubaju mówił o błędach w Windowsie znalezionych przez j00ru i mnie :)

Czytaj dalej...
2010-02-13:

CONFidence 2010 CFP, miejsce

confidence:security
Parę dni temu rozpoczęło się Call For Papers na tegoroczną edycję największej polskiej konferencji poświęconej tzw. hardcore security - CONFidence 2010. Dodatkowo w tym roku możemy wpłynąć na wybór miejsca w którym odbędzie się konferencja (dwa znane z poprzednich krakowskich edycji miejsca + jedno nowe). Anyway, jak zwykle, zachęcam do obecności na CONFidence - moim zdaniem najlepszej polskiej konferencji poświęconej bezpieczeństwu :)

Czytaj dalej...
Z projektem konsultacji/korepetycji wystartowałem w listopadzie zeszłego roku - miał on na celu zarówno wsparcie Was (mam tu na myśli osoby raczej początkujące czy średnio zaawansowane) podczas nauki, jak i umożliwienie mi pozyskania dodatkowych środków na inne projekty. Od tego czasu minęło coś koło trzech miesięcy, więc czas na drobne podsumowanie :)

Czytaj dalej...
2010-02-10:

E-mailowy Malware #3 i Facebook

malware:security
Kolejny dzień, kolejny e-mail z malware'em (ostatnio to jakaś plaga). Tym razem to Facebook zmienia zasady i trzeba uruchomić aplikacje żeby się zgodzić na nowe...

Czytaj dalej...
2010-02-09:

Microsoft Windows CSRSS Local Privilege Elevation Vulnerability

windows:csrss:local priv escal:vulnerability:security:hacking
Dzisiaj Patch Tuesday, więc Microsoft opublikował Microsoft Security Bulletin Summary for February 2010. Jedną z luk (których w Summary jest 25) jest "wyresearchowana" przez j00ru i mnie luka (w tej właśnie kolejności, gdyż to j00ru ją znalazł, a później razem doprowadziliśmy do wynalezienia sposobu jej exploitacji) w procesie systemowym csrss.exe, która pozwala m.in. na podniesienie uprawnień lub ujawnienie wrażliwych danych.

Czytaj dalej...
2010-02-09:

E-mailowy Malware #2 i drobny fail

malware:security:funny
Drugi dzień i kolejny malware na mejlu. Wiadomość w którym przyszedł jest natomiast odrobinę... niedopracowana :)

Czytaj dalej...
2010-02-08:

E-mailowy Malware #1

malware:security
Ostatnimi czasy sporo malware'u wpada na moją skrzynkę pocztową. Pozwolę go sobie tutaj (czyli na blogu) umieszczać - a nuż ktoś kiedyś dostanie podobny e-mail i będzie się zastanawiać czy to fake czy nie :)

Czytaj dalej...
2010-02-01:

Częściowa inicjacja tablic w C/C++

c:c++:easy:programming:asm:x86
Otrzymałem mejlowo (od luqa który zgodził się na publikacje korespondencji ;>) pytanie dotyczące wartości niezainicjowanych elementów częściowo zainicjowanej lokalnej tablicy:

Czytaj dalej...
2010-01-25:

Syndicate Wars Port - a reverse-engineering tale

reverse engineering:re:assembler:games:gamedev:x86:asm:windows:linux:macosx:c:syndicate wars
Syndicate Wars jest grą z roku 1996, stworzoną przez, nieistniejące już zresztą, studio Bullfrog. Gra została napisana w C (Watcom) pod DOS extender DOS4GW i oczywiście przestała działać (natywnie, pomijam rozwiązania typu emulatory) wraz z pojawieniem się współczesnych systemów operacyjnych typu Windows z serii NT. Kilka lat temu Unavowed, będący wiernym fanem tej produkcji, zaproponował mi stworzenie portu tej gry na współczesne OSy, takie jak GNU/Linux czy Windows. Port miał polegać na dekompilacji pliku wykonywalnego gry, zlokalizowaniu wszystkich funkcji standardowej biblioteki C, zależności względem DOS4GW i funkcji I/O (dźwięk, klawiatura, grafika, myszka, etc), wymienieniu ich na natywne libc oraz libSDL/OpenAL (czasem przy pomocy pewnych wrapperów, czy wręcz konwerterów), oraz ponowną rekompilacje do plików wykonywalnych. Dzisiejszego wieczoru udało nam (bo to Unavowed był wyraźnym liderem tego projektu) się ów projekt ukończyć, oraz opublikować, i to nie tylko na zakładane systemu GNU/Linux oraz Windows, ale i dodatkowo na Mac OS X!

Czytaj dalej...
Moja dobra znajoma wpadła na pomysł udzielania korepetycji / lekcji z języka angielskiego via Skype. Sądzę, że może zainteresować to osoby które są na bakier z tym językiem, a myślą o ścieżce rozwoju związanej z informatyką (jak wiadomo, po polsku trudno o dokumentacje czy tutoriale z niektórych dziedzin). Również osoby które język znają całkiem nieźle, a chcą go doskonalić (np. zająć się angielskim tematycznym, np. biznesowym, czy też wymowa/akcent przed wystąpieniem w języku eng., ale ofc nie tylko) powinny rzucić okiem na jej ofertę. Osobiście mogę z czystym sercem dodać, że Agnieszka język angielski ma na naprawdę doskonałym poziomie, co zresztą można samemu ocenić np. na jej anglojęzycznym blogu. Z formalnych informacji: Agnieszka jest magistrem filologii angielskiej i ma doświadczenie zarówno w pedagogice, jak i w używaniu języka angielskiego na co dzień (np. w kontaktach biznesowych). Tak więc gorąco zachęcam do skorzystania z wiedzy i doświadczenia mojej znajomej! Na koniec link: http://przepisujemy.org/?korepetycje :)

Czytaj dalej...
Pomysł na tego posta narzucił mi się już jakiś czas temu (czas mierzony raczej w miesiącach niż w dniach czy tygodniach), ale jakoś tak wyszło, że do tej pory nie został zrealizowany. Post będzie poświęcony komunikacji międzyludzkiej, a dokładniej kilku przypadkom które zaobserwowałem podczas swojej "działalności w Internecie", a także wspomnę co nie co o prowadzeniu bloga. Osoby ze sporym doświadczeniem życiowym raczej w tym poście nic nowego nie znajdą, tak więc zachęcam głównie osoby młode do jego przeczytania :)

Czytaj dalej...
2010-01-17:

GDT and LDT in Windows kernel vulnerability exploitation

medium:x86:assembler:windows:win32:exploit:security
Kilka tygodni temu gościł u mnie j00ru, co, jak można się domyślić, skończyło się kilkoma ciekawymi pomysłami. Jednym z pomysłów było wykorzystanie mechanizmu call-gate'ów w pisaniu exploitów na kernel/drivery pod Windows, a konkretniej chodzi o wykorzystanie write-what-where do przekształcenia LDT w Call-Gate, i tym sposobem podniesienie uprawnień kodu z user-land do ring 0. Efektem tychże rozważań jest "papierek" oraz kilka PoC, które można ściągnąć poniżej.

Czytaj dalej...
2010-01-11:

HITB Magazine (ezin) #1

hitb:ezin:medium
Ezin Hack In The Box, który wychodził w latach 2000 do 2005 (razem 37 numerów), doczekał się wznowienia, tym razem jako kwartalnik. Najnowszy numer zawiera 6 artykułów (w tym jeden mój), co przekłada się na 44 strony, w PDF (link niżej). Imho warto ściągnąć i poczytać, kilka ciekawych rzeczy można się dowiedzieć :)

Czytaj dalej...
2010-01-07:

DR6 może, ale nie musi, być przydatne do detekcji bochs/VirtualPC

medium:x86:assembler:bochs:virtualpc
Tematyka niniejszego postu będzie bardzo podobna do poprzedniego, czyli nadal pozostaje przy opisywaniu niewielkich, ale imho ciekawych, detali architektury x86. Takie detale często bywają przeoczone przez twórców emulatorów czy wirtualizerów, a więc mogą posłużyć do odróżnienia środowiska wirtualnego, od prawdziwej maszyny. Bohaterem dzisiejszego postu jest rejestr DR6, albo, będąc bardziej precyzyjnym, jego cztery pierwsze bity (0-3) czyli B0 do B3, które mówią o spełnieniu bądź nie spełnieniu warunków breakpointu. Prosiłbym o przeczytanie całego postu przed wyciągnięciem wniosków :)

Czytaj dalej...
2009-12-29:

BSWAP + 66h prefix

x86:assembler:bochs:qemu:medium
Ostatnimi czasy przypominam sobie osdev (ostatni raz coś więcej niż boot menu napisałem jakieś 6 lat temu), więc prawdopodobnie parę następnych postów będzie związane z assemblerem, emulatorami x86 oraz podobnymi instytucjami. Dzisiejszy post poświęcę instrukcji bswap reg16 w trybie chronionym, która jak się okazuje może posłużyć np. do detekcji emulatora BOCHS lub QEMU.

Czytaj dalej...
2009-12-23:

ReverseCraft 8 i ReverseCraft Assembler 3

reversecraft:assembler:asm
Taki drobny prezent na święta - ReverseCraft Assembler 3 bez spóźnienia, oraz ReverseCraft 8 tydzień wcześniej :)

Czytaj dalej...
2009-12-14:

Geek's Night

asi:linux:lecture
W sobotę, a raczej w nocy z soboty na niedziele, odbyło się kameralne spotkanie dyskusyjno-prelekcyjne o tematyce związanej z bezpieczeństwem, zorganizowane przez Akademickie Stowarzyszenie Informatyczne. Miałem okazję w nim uczestniczyć, za równo jako słuchasz, jak i jako spontaniczny mówca (prezentacje od zera robiłem już na spotkaniu, gdy się okazało że można coś powiedzieć ;>). I było świetnie!

Czytaj dalej...
2009-12-11:

Resume Flag a detekcja debuggera

re:asm:x86:easy
Na forum UW-Team.org pojawiło się pytanie o wykorzystanie flagi RF (Resume Flag) do detekcji debuggera. Ponieważ nie słyszałem wcześniej o wykorzystaniu tej flagi do anty-dbg, postanowiłem przyjrzeć się bliżej. Poniżej zamieszczam moją odpowiedź na zadane pytanie.

Czytaj dalej...
2009-12-05:

ReverseCraft #7 - Inline hooks, DLL injection

reversecraft:re:blog:assembler
Przed chwilą opublikowałem nowy odcinek, z cyferką 7, ReverseCraft, traktujący o inline hook'ach oraz DLL injection - czyli jest to cofnięcie się odrobinę do podstawowych umiejętności potrzebnych każdemu RE. Odcinek trwa ponad godzinę, z czego 20 minut to część teoretyczna, a 47 to część praktyczna w której pokazuje jak od zera napisać injector DLL oraz jak runtime zaaplikować inline hook przekierowujący wykonania na naszą funkcję. Miłego oglądania!

Czytaj dalej...
Pojawiły się (już parę dni temu) oficjalne wyniki głosowania w ramach konkursu CONFidence Security Evangelist, w tym w kategorii w której mój blog był nominowany, czyli "Blog o bezpieczeństwie IT w języku polskim".

Czytaj dalej...
2009-11-30:

Konsultacje, terminy

blog
Drobna zmiana jeśli chodzi o konsultacje/korepetycje/lekcje: po prawej stronie w menu, pod linkiem do szczegółów konsultacji, wrzuciłem małą rozpiskę stałych terminów konsultacji (będzie to poniedziałek 20:00, środa 15:00 i piątek 17:00, 2x po 1h), wraz z informacją czy najbliższy termin jest wolny, czy już zarezerwowany. Wszystkie przyszłe niewypisane terminy w te dni/godziny można uznać za wolne.

Czytaj dalej...
2009-11-29:

ReverseCraft Assembler 002 - Opcode

reversecraft:re:blog:assembler
Opublikowałem drugi odcinek ReverseCraft: Assembler, opowiadający o budowie pojedynczej instrukcji maszynowej x86, oraz o tym, jak wpływa to na budowę instrukcji w assemblerze (x86, protected mode, 32-bit).

Czytaj dalej...
2009-11-28:

VirusTotal Uploader 2.0

virustotal:project
Przedwczoraj na sieć trafił mój najnowszy twór - VirusTotal Uploader w wersji 2.0. Jest to w zasadzie zupełnie inne narzędzie niż te do których Was przyzwyczaiłem, tj. ma okienko (nie jest konsolowe), jest przetestowane i skierowane dla szerszego odbiorcy - a to głownie za sprawą tego iż tworzyłem je w ramach Hispasec.

Czytaj dalej...
2009-11-23:

CONFidence 2.0, materiały, SilkProxy 0.0.1

confidence:confidence 2.0:lecture:c++:python:security
Poniżej zamieszczam linki do prezentacji (PDF) z mojej prelekcji "Practical security in computer games", oraz wersję 0.0.1 alpha SilkProxy. O tym ostatnim parę słów: jest to multi-tunel napisany w C++, skryptowalny w Pythonie, który może służyć kilku do kilku rzeczy, takich jak analiza protokołu, fuzzing ruchu sieciowego puszczonego przez tunel, czy jako proxy. Wersja którą publikuje to wersja którą używałem podczas badań do prezentacji, i jest to wersja robocza, tj. nie wszystko jeszcze działa jak bym chciał, interfejs jest nieudokumentowany i brakuje jeszcze części funkcjonalności - tak więc póki co jest to raczej ciekawostka dla programistów niż coś z czego faktycznie można korzystać. Niemniej jednak zachęcam do rzucenia okiem (w pliku http.py jest prosty przykład użycia; uruchamia się to ./SilkProxy skrypt.py, samo ./SilkProxy też zadziała; do skompilowania trzeba posiadać pythona z headerami/libami do C, oraz GCC (może być MinGW)) ;>

Czytaj dalej...
2009-11-21:

CONFidence 2.0, podsumowanie

confidence:lecture:blog
Wczoraj skończył się drugi dzień CONFidence 2.0, a tym samym druga (w tym roku) edycja CONFidence. Siedzę właśnie w pociągu relacji Warszawa-Wrocław (podróż ponad 6 godzin), więc mam troszkę czasu żeby podsumować ostatnie 2 dni, a zarazem dokończyć przerwany wątek.

Czytaj dalej...
2009-11-20:

CONFidence 2.0, po dniu pierwszym

lecture:confidence:blog
Od wczoraj trwa CONFidence 2.0 i mimo iż jest troszkę mniejsza niż majowa edycja, to w żadnym wypadku nie jest słabsza.

Czytaj dalej...
2009-11-17:

Pojutrze Confidence 2.0

lecture:confidence:reversecraft:blog
Już za dwa zaczyna się kolejna, druga w tym roku, edycja Confidence, oznaczona numerkiem 2.0. W związku z czym standardowo siedzę i "dopracowuje" prezentacje (a tak na prawdę testuje jeszcze ostatnie gry), i zastanawiam się o której pójdę spać... W każdym bądź razie, krótkie 'do zobaczenia na Confidence' dla osób które się tam wybierają, zachęcam do wysłuchania mojej prelekcji (chyba że coś ciekawszego będzie w drugiej sali ;>), oraz krótkie 'do zobaczenia po Confidence' dla reszty czytelników ;>

Czytaj dalej...
Na forum uw-team.org exylum zadał pytanie: "czy znak przy konwersji liczb zmiennoprzecinkowych ("," lub ".") zależy od systemu na jakim pracujemy, ustawień regionalnych itp.?". Ponieważ pytanie mnie zaciekawiło, to trochę poszperałem tu i tam, odpowiedziałem na forum i w końcu stwierdziłem że napisze (metodą Kopiego=Pasta) o tym również tutaj, być może kogoś również to zaciekawi.

Czytaj dalej...
2009-11-13:

Windows Win32k syscall table

easy:windows:re:assembler
Szybkie info. j00ru opublikował wczoraj na swoim blogu tablicę nazw i numerów syscalli Win32k (aka shadow table, wykorzystywanej przez user32.dll, gdi32.dll i DirectX) - http://j00ru.vexillium.org/win32k_syscalls/ (w zasadzie jest bardzo podobna do tej z Metasploit, oczywiście z tą różnicą, że zawiera syscalle win32k, a nie kernelowe). Jeżeli lubisz grzebać w niskopoziomowych rzeczach, to na pewno chcesz rzucić na to okiem!

Czytaj dalej...
Od wczoraj (a w zasadzie przedwczorajszej nocy) w sieci jest głośno o nowym języku programowania, stworzonym przez ludzi z Google. Język nazywa się Go i leży między królestwem języków niskopoziomowych (jak C/C++) a królestwem języków wysokopoziomowych (jak Python, Java czy C#) (twórcy mówią o nim 'system programming language') - czyli próbuje łączyć zalety jednych (kompilacja do kodu natywnego, szybkość działania, etc) i drugich (garbage-collector, natywne wsparcie dla wielowątkowości, etc). Wczoraj wieczorem stwierdziłem, że przetestuje ten język i przeportowałem jeden ze swoich raytracerów na niego. Po tym pierwszym rzucie oka stwierdziłem, że podzielę się paroma przemyśleniami (wszystko zawarte w tym poście należy traktować jedynie jako moją opinię, wyrobioną po około 5 godzinach pisania w tym języku; zastrzegam że opinia może mi się zmienić ;>).

Czytaj dalej...
Jak nauczyły nas stare procesory i kompilatory, if'y bywają kosztowne - każdy if tłumaczony jest na jeden lub dwa skoki (w zależności czy to if czy else if), a skoki miały zwyczaj czyścić kolejkę instrukcji do wykonania w CPU, przez co były dość kosztowne. W związku z czym szukało się innych metod na zapisanie serii if'ów, np. za pomocą operacji matematycznych lub logicznych, które były mniej kosztowne (gdy występowały w niewielkiej ilości) niż skoki które czyściły kolejkę instrukcji. Oczywiście nowe procesory pozwalają na oznaczenie bardziej prawdopodobnych skoków (druga grupa prefiksów, prefiksy 2E (branch not taken) i 3E (branch taken)), a nowe kompilatory C/C++ pozwalają oznaczyć czy warunek w if będzie bardziej czy mniej prawdopodobny (patrz __builtin_expect), a nawet można skorzystać z profilerów i samemu sformułować if'y tak aby testowały zawsze te mniej czy bardziej prawdopodobne warunki (oczywiście trzeba wiedzieć jak kompilator tłumaczy kod, ale nie jest to specjalnie trudne). Niemniej jednak czasami nachodzi człowieka ochota żeby zastąpić parę if'ów jakimś ładnym działaniem matematycznym, a tym samym... utrudnić sobie życie ;>

Czytaj dalej...
2009-11-05:

PHP i array, raporty prezentowane na SecDay 2009

secday:easy:php:security
Na SecDay 2009 mówiłem m.in. o tym, że PHP może z zewnątrz przyjmować nie tylko stringi (int'y są też przekazywane jako stringi), ale również arraye (tablice). Jak prezentowałem, niespodziewanymi arrayami można wywołać całkiem niezłą masę warningów, a dodatkowo czasami zmylić logikę skryptu i doprowadzić do pewnych nieoczekiwanych przez twórcę rezultatów (osoby które nie widziały prelekcji, zachęcam do jej obejrzenia). Podczas prelekcji pokazywałem kilka raportów z wynikami testu paru funkcji PHP, obiecując że ów raporty udostępnię - co niniejszym czynie.

Czytaj dalej...
2009-11-04:

Bardzo ciekawe compo na GDPL

gamedev:compo:easy
Xa na serwisie GameDev.pl zaproponował compo na stworzenie gry z wykorzystaniem tylko i wyłącznie 3ch raytrace'owanych kul. Czas jest do najbliższej soboty, godz. 23:59.

Czytaj dalej...
2009-11-04:

CONFidence Security Evangelist

blog:confidence
Po raz drugi w tym roku odbywa się konkurs CONFidence Security Evangelist, w którym możecie głosować na najciekawsze waszym zdaniem blogi i serwisy poświęcone security, oraz na najbardziej zasłużone persony świata security.

Czytaj dalej...
Postanowiłem przeprowadzić drobny eksperyment, a jednocześnie rozwiązać problem, który mają osoby początkujące, które próbują ze mną porozmawiać w sposób ciągły i "bez-lagowy" (co ostatnio jest nietrywialne, z uwagi na dużą ilość czasu którą poświęcam na pracę/projekty/etc).

Czytaj dalej...
2009-11-02:

Niebezpiecznik.pl

blog:links
Na sieci znalazł się nowy serwis poświęcony tematyce security - http://niebezpiecznik.pl. Serwis prowadzony będzie m.in. przez Piotrka Koniecznego, co w zasadzie może stanowić gwarancje "ciekawości" materiału oraz szerokiego targetu docelowego, jako że imo Piotrek pisze ciekawie zarówno dla profesjonalistów, jak i dla osób interesujące się bezpieczeństwem tylko hobbystycznie.

Czytaj dalej...
2009-10-28:

ReverseCraft #6 - OEP i zrzuty pamięci

reversecraft:re:blog
Opublikowałem szósty odcinek ReverseCraft (serii o reverse engineeringu), w którym pokazuje jak szukać OEP, oraz mówię o sytuacjach w których nie jest to konieczne.

Czytaj dalej...
2009-10-24:

ReverseCraft Assembler 001 - Bliżej systemu...

reversecraft:re:blog:assembler
Po niemałych kłopotach technicznych (takich "na własne życzenie" pod tytułem "zmieniłem system na Linuxa i nie wszystko zadziałało jak należy") udało mi się nagrać i opublikować pierwszy odcinek serii ReverseCraft Assembler, traktujący oczywiście o podstawach języka assembler na platformę x86 (32-bit, PM). Odcinek trwa aż 1h 15m, i dedykowany jest dla osób początkujących oraz takich które zacięły się chwilę później, lub czują że nie do końca wiedzą o co w assemblerze chodzi.

Czytaj dalej...
2009-10-21:

Poradnik Początkującego Programisty

blog:code:easy
Bardzo często zgłaszają się do mnie osoby które programują stosunkowo niedługo, lub właśnie rozpoczynające swoją przygodę z programowaniem, i pytają o to jaką książkę bym polecił do języka XYZ, czy znam jakiś dobry tutorial, ewentualnie jak rozwiązać dany problem (np. jak poprawić błąd kompilacji lub błąd logiczny), czy jaką funkcję użyć aby uzyskać określony efekt. Przez ostatnie 10 lat które "spędziłem" w Internecie takich rozmów odbyłem dziesiątki, jeśli nie setki. Tak więc wychodząc na przeciw przyszłym programistom, postanowiłem stworzyć Poradnik początkującego programisty (słowo "poradnik" jest tutaj kluczowe). Zapraszam do lektury!

Czytaj dalej...
2009-10-20:

Co się dzieje z ReverseCraftem?

reversecraft:re:blog
Czas w końcu wygłosić oficjalne stanowisko, jako że zasypujecie mnie pytaniami w komentarzach, na gg/jabberze i mailowo ;>

Czytaj dalej...
2009-10-15:

SecDay 2009 - Icewall udostępnił nagranie swojej prelekcji

secday:lecture:icewall:malware:security:bugs
Jak w nazwie tematu:

Czytaj dalej...
2009-10-12:

Jesienne przemyślenia

easy:blog
Co jakiś czas przychodzi mi do głowy trochę różnych tematów które jakoś nie mogą trafić do oddzielnego posta, a jednak chciałbym się nimi podzielić. Czas na październikową porcję!

Czytaj dalej...
2009-10-12:

Confidence 2.0 2009 - Agenda

lecture:confidence:confidence 2.0
Jak pisałem już wcześniej w tym roku odbędzie się jeszcze jedna edycja (najlepszej Polskiej moim zdaniem) konferencji Confidence, tym razem w Warszawie. Jako że agenda jest już dostępna, to pozwolę ją sobie (jak zwykle) przedstawić i skomentować.

Czytaj dalej...
2009-10-12:

SecDay 2009 - Video

lecture:video:secday:php:security
Zgodnie z obietnicą wrzuciłem online swoją prelekcję z SecDay 2009. Na początek jeszcze pewna uwaga - prelekcja była nagrywana aparatem z wbudowanym mikrofonem, tak że ani jakość dźwięku, ani jakość obrazu nie są najcudowniejsze jakie można sobie wymarzyć. Natomiast nagranie imho da się mimo wszystko oglądać. Korzystając z okazji chciałbym podziękować oshogbo//vx za filmowanie wszystkich prelekcji ludzi z Vexillium i Hispasec: Thx m8! ;>

Czytaj dalej...
2009-09-23:

SecDay 2009 - relacja, materiały

secday:lecture
SecDay, SecDay, i po SecDay, jak wszystko dobre, niestety i SecDay się skończył. Konferencja była, moim zdaniem, bardzo udana, za równo z punktu widzenia prelegenta (tj. mikrofon mi działał ;>), jak i słuchacza (tj. prelekcje były ciekawe i fajnie poprowadzone ;>).

Czytaj dalej...
2009-09-13:

Dzielenie całkowite i WTF

c:python:perl:ruby:php:easy
Zawsze myślałem że umiem dzielić liczby całkowite i obliczać resztę z takiego dzielenia, ale jak to zwykle bywa, życie zweryfikowało moją ocenę sytuacji, i powiedziało mi "nie umiesz dzielić!". Otóż wziąłem do ręki pewien podręcznik do matematyki (do liceum) w którym definicja dzielenia całkowitego i reszty z dzielenia kapkę odbiegała od mojej. Ofc będąc programistą od razu rzuciłem się do kompa żeby sprawdzić "jak to tam wygląda", i okazało się że nie ma jednej spójnej wersji...

Czytaj dalej...
2009-09-10:

ReverseCraft: opóźnienie i trochę zmian

reversecraft:recraft:re
Najpierw zła wiadomość: niestety kolejny odcinek ReverseCraftu ukaże się najprawdopodobniej dopiero po konferencji SecDay. Na szczęście jest również i dobra wiadomość: razem z szóstym odcinkiem ReverseCraftu pojawią się dwa odcinki serii o assemblerze x86. Dodatkowo strona www projektu dostanie kilka dodatków - będzie to (w końcu) możliwość uploadowania zadań via WWW (przyspieszy to cały proces oceniania, choćby dlatego że do kompa na którego będzie upload mam dostęp z każdego zakątka globu, a nie tylko z lab), ranking, oraz shoutbox (tak dla ułatwienia komunikacji między nami). Po za tym dla osób które rozwiążą zadania lub zrezygnują z ich rozwiązywania będą udostępniane dodatkowe odcinki w których pokazuje jak zrobić dane zadanie oraz prezentuje najciekawsze rozwiązania nadesłane przez Was.

Czytaj dalej...
2009-09-04:

Enter Teh Confidence 2009 Edycja Warszawska

conference:confidence:confidence2009
Wygląda na to że, zgodnie z obietnicą orgów, będzie druga edycja Confidence w tym roku, tym razem w Warszawie. I dobrze, Confidence to imo najlepsza polska konferencja dot. security/hacking/etc, więc w żadnym wypadku nie zamierzam narzekać na przesyt ;>

Czytaj dalej...
Czas na kolejną część tematyki PHP internals! Tym razem będzie o popularnym formacie PNG, oczywiście w kontekście obsługi tego formatu przez funkcje getimagesize.

Czytaj dalej...
2009-08-31:

Mój pierwszy laptop - Bondwell B200 (CPU 80C88)

museum:blog:b200:80c88
Dzisiaj coś z zupełnie innej beczki - mój pierwszy laptop. Wbrew pozorom nie był to ani Pentium 1, ani nawet 386, a coś jeszcze starszego, czyli gratka dla osób zainteresowanych informatyczną archeologią.

Czytaj dalej...
2009-08-26:

SecDay, mam już (czyt. w końcu) temat :)

secday:security:lecture
Agenda konferencji SecDay jest już prawie kompletna, co oznacza między innymi że i ja podesłałem w końcu swój temat ;>. Tym razem będę mówił o czymś na pograniczu web security i standardowego bughuntingu, a konkretniej o "internalsach" PHP z punktu widzenia pentestera aplikacji webowych ("wnętrzności" PHP na moim blogu są ostatnio popularne).

Czytaj dalej...
Czas na drugą część (tak, to oznacza że była część pierwsza ;>) posta o getimagesize. Tym razem skupie się bardziej na tym jak getimagesize robi to do czego została stworzona - czyli jak odczytuje wielkość z poszczególnych formatów graficznych. Będzie również o tym dlaczego getimagesize nie powinno się używać do sprawdzania czy uploadowany plik faktycznie jest obrazkiem.

Czytaj dalej...
2009-08-21:

PHP getimagesize internals (część 1)

php:security:easy
Funkcja getimagesize jest, moim zdaniem oczywiście, jedną z bardziej interesujących funkcji wchodzącej w skład standardowego zestawu funkcji PHP (tak, standardowego, mimo iż jej dokumentacja leży w sekcji pełnej funkcji GD). Czemu ta funkcja jest taka interesująca? Po pierwsze, jej implementacja jest długa, a jak wiadomo, dużo kodu = dużo mniejszych lub większych bugów. Po drugie, funkcja ta bardzo często jest wykorzystywana w sposób niewłaściwy, przez co do kodu wprowadzane są pewne interesujące bugi.

Czytaj dalej...
2009-08-19:

ReverseCraft E05

re:easy:video:reversecraft
Krótki news: przed chwilą wrzuciliśmy z Unknow'em ReverseCraft #5. Tym razem tematem są packery - prezentuje ogólną zasadę działania protektorów oraz pokazuje jak zrobić prosty packer (w C++). ReverseCraft jak zwykle dostępny jest w formie online oraz do ściągnięcia (linki na stronie z odcinkiem).

Czytaj dalej...
2009-08-14:

Ciekawe mini-compo dla programistów

compo:code:easy:mininews
Szybkie news: dostałem parę dni temu (thx mulander) info o bardzo fajnym compo organizowanym przez NullCode.pl, a polegającym na rozwiązaniu pewnego zadania programistycznego w jak najmniejszej ilości znaków (tj. kod źródłowy ma mieć jak najmniej znaków). Osobiście uwielbiam tego typu zabawy, więc zachęcam do udziału (a nuż wam też się spodoba). Link do topików z compo: http://nullcode.pl/konkursy-f43.html.

Czytaj dalej...
2009-08-12:

D-Link DI-524 i 2v2 w StarCraft

hardware:router:starcraft
Dzisiejszy post będzie trochę z innej bajki. Mianowicie, od jakiegoś pół roku dysponuje nowym routerem typu SOHO w domu - właśnie tytułowym DI-524 (rev.B), który zastąpił wysłużonego DI-604. I od pół roku miałem problem żeby pograć 2v2 w StarCraft'a siedząc z team partnerem po tej samej - wewnętrznej - stronie routera. Aż do wczoraj...

Czytaj dalej...
2009-08-03:

Plik drivers\etc\hosts i krok dalej

security:windows:medium:re:cpp
Dwa miesiące temu pisałem o trojanach bankowych, o tym że niektóre zmieniają ustawienia DNS, inne dodają listę domen, używanych przez instytucje finansowe, do pliku c:\windows\system32\drivers\etc\hosts. Oczywiście obie z powyższych czynności kończą się przekierowaniem nieświadomego użytkownika na stronę phishingową (i niestety również często utratą pewnej ilości pieniędzy).

Czytaj dalej...
2009-08-01:

ReverseCraft E04

reversecraft:re:easy
Z tygodniowym opóźnieniem na sieć trafia kolejny, czwarty wg stosowanej numeracji, odcinek ReverseCraft. Wszelkie informacje o czym jest odcinek, linki do playera i pliku, oraz dodatkowe materiały znajdują się jak zwykle na stronie projektu, czyli re.coldwind.pl.

Czytaj dalej...
Jak w tytule - w końcu zrobiłem kanał RSS na stronce ReverseCraft.

Czytaj dalej...
Dzisiaj będzie o pewnym ciekawym błędzie znalezionym w kodzie znajomego, oraz o pewnym linku znalezionym w refererach. Link prowadził do...

Czytaj dalej...
2009-07-08:

ReverseCraft E03

re:easy:video:reversecraft
Z drobnym (no dobra, prawie tygodniowym, więc nie takim drobnym ;>) opóźnieniem na sieć powędrował trzeci eps ReverseCraft - mojego video-kursu reverse engineeringu. Tym razem udało się wszystko ładnie zsynchronizować, i online na raz trafiła wersja do oglądania via www (http://videoarty.pl/play_reverse03_reverse_pamiec_proces_i_pe.html), oraz wersja do ściągnięcia (http://www.uw-team.org/index.php?id=videoarty&dzial=reverse). Dodatkowe materiały, takie jak slajdy, cała masa linków, jakiś kawałek kodu i lista zadań (w tym jedno z przygotowanym przeze mnie EXEkiem) dostępne są jak zwykle na stronie projektu, czyli http://re.coldwind.pl. Miłego oglądania!

Czytaj dalej...
2009-07-05:

Losowe przemyślenia, odsłona druga

php:c:c++:funny:security:malware:windows
Z powodów różnych na moim blogu kapkę cicho się zrobiło ostatnio, ale zapewniam że to przejściowe. Niemniej jednak czas zacząć nadrabiać zaległości, i napisać o tym i owym.

Czytaj dalej...
2009-06-20:

ReverseCraft Episode 2

re:reversecraft:easy
Drugi odcinek ReverseCraft trafił na sieć, i jest do ściągnięcia na stronie serwisu UW-Team (jutro lub pojutrze będzie dostępna również wersja do oglądania online). Po za tym stworzyłem pewną drobną stronkę z materiałami do kursu: re.coldwind.pl.

Czytaj dalej...
2009-06-06:

Trojany bankowe - powrót do przeszłości

re:security:easy:malware
Tak się zdarzyło ostatnio że wróciłem do analizy trojanów. Powrót został uczczony prawie 24-godzinny maratonem z różnymi zagranicznymi bankerami, i widać że gdy ja zajmowałem się innymi rzeczami, to autorzy trojanów nie spali - wymyślali coraz to nowe metody żeby ich malware był...  jeszcze słabiej skonstruowany :p

Czytaj dalej...
2009-06-04:

Konferencje++ - SecDay

secday:lecture:wroclaw
Do listy konferencji na których się pojawię został dopisany SecDay. Póki co wiadomo że konferencja ta odbędzie się 21-22 września we Wrocławiu, oraz że organizuje ją ten sam człowiek który organizował SekIT (o którym pisałem) oraz SysDay (o którym również pisałem) - Łukasz Błażys.

Czytaj dalej...
2009-05-27:

Losowe przemyślenia

security:easy:blog:rant
Czytając ostatnio pewne doniesienia prasowe, czy też posty na pewnych blogach, rzuciło mi się w oczy kilka kwestii, o których postanowiłem poblogwać, a w zasadzie porantować ;D

Czytaj dalej...
W niedzielę po raz kolejny postanowiłem pobawić się w wizualizację plików. Wizualizacja plików to temat długi i szeroki, i nawet są strony jej poświęcone, na których to autorzy prezentują kolorowe bitmapki przedstawiające pliki - często 1 do 1, czyli 3 kolejne bajty w pliku traktowane są jako wartości RGB. W moim przypadku natomiast zamiast RGB, będzie X i Y.

Czytaj dalej...
2009-05-20:

CONFidence 2009 ESET crackme - rozwiązanie

re:easy:confidence:crackme:c++
W końcu jakiś techniczny post! A post poświęcony będzie crackme ESET'u, które to było do połamania na tegorocznej edycji CONFidence z numerkiem 2009. Crackme (przygotowanym specjalnie na confidence) pozwoliłem sobie udostępnić (@Marcin/Jakub w razie czego dajcie znać, to zdejmę ;>), tak aby osoby nieobecne na confi również mogły się pobawić:

Czytaj dalej...
2009-05-19:

CONFidence 2009 - gg plz re :)

confidence:blog
Jak pisałem wczoraj, i zresztą już wcześniej, miałem okazję być na tegorocznym CONFidence i, spoilerując już na samym początku, sądzę że była to najlepsza konferencja na jakiej do tej pory byłem :)

Czytaj dalej...
2009-05-18:

RE-Enter teh blog

blog:funny
Witam ponownie po parodniowej przerwie! Wygląda na to że dodanie informacji o binarce uzyskanej od diabla spowodowało wrzucenie mojego bloga na wykop (nie pierwszy raz zresztą), a to z kolei spowodowało znaczy wzrost ilości zapytań, a to z kolei spowodowało kilka crashy apacha na poprzednim (taaak, już poprzednim) hostingu, co spowodowało iż admini wycięli dostęp do bloga ;) Oczywiście, jak to zwykle bywa, zbiegło się to z moim wyjazdem na CONFidence 2009 (świetna konferencja btw, napiszę coś o niej później), więc nie mogłem natychmiast zareagować ;(

Czytaj dalej...
Znajomy (hi diabel! (nie, to nie znaczy że jestem wyznawcą szatana) UPDATE: widziałem propozycję by 'hi diabel' zmienić na 'ave satan', ale chyba nie przejdzie ;D) podesłał mi screena i pewien pliczek. W skrócie: wygląda na to że ktoś zbiera sobie zombie na NK huh. Zacznijmy od screena:

Czytaj dalej...
2009-05-12:

ANSI Escape Codes dla Windows 7 RC

windows:bat:re:winapi:easy:asm:c:c++:tools
Wczoraj j00ru dał mi znać że mój add-on do cmd.exe, dodający jakże to ważną funkcjonalność (tj kolorki), nie funkcjonuje poprawnie na Windows 7 RC - w związku z czym rzuciłem okiem, i tak oto powstała wersja 0.004d!

Czytaj dalej...
2009-04-29:

ReverseCraft E01 part 3

re:easy:video:reversecraft
Wczoraj wieczorem została upubliczniona 3cia i zarazem ostatnia część pierwszego odcinka mojego kursu, a w zasadzie serii videotutoriali, o reverse engineeringu. Ostatnia część dostępna jest tam gdzie zwykle, czyli na serwisie uw-team.

Czytaj dalej...
2009-04-28:

Boot menu i blip

asm:easy:boot:blog
Pewnego razu Xa, który bardzo lubi eksperymentować z OS'ami, chciał zainstalować dodatkowy system operacyjny - nazwijmy go "Gamma System" - na swoim komputerze, na którym był już pewien system - nazwijmy go "Alpha OS". Traf chciał że za równo "Gamma System" jak i "Alpha OS" nie miały boot loaderów które pozwoliły by wybierać który system ma być bootowany, a w dodatku, każdy loader był na tyle indywidualny, że to właśnie on musiał zostać użyty - więc powstał problem. Oczywiście, jak to zwykle bywa, użycie LILO czy GRUB odpadało z przyczyn różnych. W związku z czym dostałem questa - zrobić żeby to jakoś działało.

Czytaj dalej...
2009-04-26:

ReverseCraft E01 part 2

reversecraft:re:easy
Wczoraj wczesnym rankiem (a tak na prawdę późną nocą) na UW-team.org została umieszczona druga część pierwszego odcinka mojego kursu RE.

Czytaj dalej...
2009-04-22:

Enter the ReverseCraft

re:easy:video:reversecraft
Wczoraj wieczorem na serwisie UW-Team pojawiła się pierwsza część (a tak na prawdę to pierwsza część pierwszej części - pierwszy odcinek ma 3 części po 30-40 minut) mojego kursu poświęconego Reverse Engineeringowi (nazwanemu Reverse Craft). Videoart chwilowo dostępny jest tylko do pobrania, ale pewnie niedługo będzie można go również oglądać online (jak tylko będzie stream to dam linka - pewne kłopoty z wielkością video są). Pierwszy odcinek ma być niejako poglądowy i pokazać 'o co w tym RE chodzi' - kolejne odcinki będą miały charakter bardziej edukacyjny ;>

Czytaj dalej...
2009-04-19:

After SEConference 2009, materiały, video

seconference:lecture:security
Wczoraj wieczorem wróciliśmy z Krakowa, a konkretniej z wyjazdu na SEConference 2009 - konferencji o której się rozpisywałem już wcześniej. W dużym skrócie, konferencja na prawdę dała radę - poziom był niezły, prelekcje bardzo ciekawe - szczególnie podeszły mi wykłady (w kolejności chronologicznej) Piotr Łaskawca o web fuzzingu, Piotra Koniecznego o haxxowaniu fizycznych urządzeń codziennego użytku (automaty do koli, windy, czytniki kodów, takie tam) oraz Borysa Łąckiego o sumkach które krążą w undergroundzie (tj. ile trzeba zapłacić na wynajęcie botnetu, etc.). Inne wykłady również trzymały poziom, więc podsumowując, konferencja była na prawdę dobra (szczególnie że była darmowa)!

Czytaj dalej...
2009-04-15:

SEConference 2009, zostały 2 dni...

seconference:lecture
Ostatnio coś mało postów się tu pojawia, ale proszę się nie martwić - to sytuacja przejściowa ;>. W piątek rozpoczyna się krakowska konferencja SEConference, o której zresztą już pisałem, i to nie raz. Jak też pisałem, będę tam mówić o "Praktycznym podejściu do testowania bezpieczeństwa implementacji obsługi formatów danych" (tak tak wiem, przesadziłem z długością tematu, ale spoko, postaram się żeby był ciekawszy niż brzmi). Co ciekawe, na konferencje zarejestrowało się około 170 osób, i to w pierwsze 2 tygodnie rejestracji (potem rejestracje orgowie musieli zamknąć z powodów lokalowych)!

Czytaj dalej...
Wyrażenie "assemblerowe źródło" mi jakoś nie leży, ale po 15 minutach straconych na próbę wymyślenia czegoś lepszego, co określało by źródło kawałka funkcji stworzonej w assemblerze, i jednocześnie było dość zwięzłe, stwierdziłem że musi zostać. Wracając do tematu, a w zasadzie dopiero go rozpoczynając, dzisiaj będzie o pewnym sposobie którym się wspomogłem podczas gonitwy za bugiem w pewnej dość rozbudowanej funkcji napisanej w asmie (dialekt NASM). Ów funkcja miała wyszukiwać w obrazie biblioteki (w pamięci, MACH-O) adres podanej metody z podanej klasy (objc), z podanej biblioteki na OS X, i składała się z trzech czy czterech zagłębień pętli. No i oczywiście nie działała jak należy, a ręczne debugowanie tego przyjemne nie było (potem się okazało że cały pomysł nie do końca działa, ale to historia na inny dzień).

Czytaj dalej...
2009-03-31:

SysDay 2009 - materiały (i jednorożec)

blog:security:windows:sysday:medium:lecture
Wczoraj, we Wrocławiu, rozpoczęła się konferencja SysDay 2009, o której pisałem już wcześniej. Pojawiło się masę ciekawych osób, było kilka ciekawych prelekcji - m.in. zawsze ciekawa prelekcja Dariusza Puchalaka o SSH, prelekcja o socjotechnice prowadzona przez Rafała Podsiadłego - która co rusz przeradzała się w żywą dyskusję, prelekcja Sławomira Kobusa z F-secure o Symbian OS (bardzo inspirująca swoją drogą, muszę się przyjrzeć temu systemowi) oraz prelekcja Michała Majchrowicza o m.in. XSSach (huh, nie wiedziałem że można użyć /asdf/ zamiast "asdf" - np. javascript:alert(/asdf/)... ciekawie wyszło moim zdaniem ;>). Tego dnia również ja miałem swoją prelekcję, którą udało mi się jakoś wychrypieć (jestem kapkę przeziębiony, i szczerze się bałem że stracę głos podczas prelekcji... na szczęście orgowie zorganizowali mi szklankę ciepłej wody, i udało się stracić głos dopiero PO prelekcji ;D).

Czytaj dalej...
2009-03-24:

IGK 2k9 i po IGK 2k9

blog:igk:gamedev:gdpl
Kilkudniowa konferencja Inżynierii Gier Komputerowych 2009 organizowana przez Akademie Podlaską (w Siedlcach) dobiegła końca - wczoraj późnym wieczorem trafiłem z powrotem do Wrocławia, a teraz próbuje ogarnąć sprawy które przez te kilka dni się nazbierały. (Tak na prawdę kilka już ogarnąłem, i zrobiłem krótką przerwę żeby naklepać tego posta ;>).

Czytaj dalej...
2009-03-18:

Marcowe compo 3h GDPL - wyniki

gamedev:game
Na GDPL pojawiły się wyniki (dostępne również tutaj). Zgodnie z moimi przewidywaniami Krzysiek K. zasłużenie wygrał ;>. Drugi był maskl ex aequo ze mną, a trzeci Reg. Pełna lista miejsca znajduje się poniżej:

Czytaj dalej...
2009-03-16:

Po marcowym compo 3h GDPL

gamedev:c++:opengl:windows:linux:easy:game
Wczoraj wieczorem od godziny 17:00 do 20:00 odbyło się trzygodzinne compo zorganizowane przez GDPL (a konkretniej przez meehav'a). Tematem przewodnim była 'gra w której jest za równo świnia jak i krowa' (oryginalny temat, przyznaje). Mimo ogólnego braku czasu, stwierdziłem że 3h w niedzielę wieczorem znajdę, i (po akceptacji propozycji przez górę - czyli moją ukochaną żonę ;>) również udało mi się wziąć udział.

Czytaj dalej...
2009-03-14:

OS X, Objective C i RE

macosx:objc:easy:re
Nadszedł dzień w którym rzuciłem w końcu okiem na programowanie aplikacji niekonsolowych na Mac'a. Aplikacja na Maca zazwyczaj tworzy się przy użyciu języka Objective C (z którym jeszcze styczności nie miałem) oraz API Cocoa (OSX'owski odpowiednik WinAPI; kiedyś był jeszcze Carbon). Z punktu widzenia programisty składnia Objective C bardzo mi się spodobała, ale przyznaje szczerze, że Objective C z punktu widzenia RE jest jeszcze ciekawsze ;>

Czytaj dalej...
2009-03-11:

OS X vs Write-What-Where Condition

security:macosx:easy
Jak moi stali czytelnicy wiedzą, od jakiegoś czasu dysponuje MacBookiem z OS X'em. W końcu stwierdziłem że fajnie byłoby sprawdzić jak wygląda exploiting standardowych rodzajów błędów na OS X'ie. Muszę przyznać że raz czy dwa OS X mnie pozytywnie zaskoczył. Natomiast ten post będzie o innym "razie", gdy niespodzianka nie była pozytywna (pod względem bezpieczeństwa), ale niewątpliwie była (hermetycznie) komiczna ;>

Czytaj dalej...
2009-03-09:

Automagiczna lista funkcji w C++

c++:medium:assembler:windows:linux:macosx
Historia zaczyna się jak zwykle. Pisałem pewną aplikację, która generowała pewne pliki testowe. Pliki były do siebie podobne, więc wyciągnąłem wspólny czynnikprzed nawias - zrobiłem generowanie wspólnej podstawy pliku, a potem porobiłem funkcje które zmieniały podstawowy plik (file shader, tylko w GF 15200 GTX! ;>), po czym ów nowy plik był zapisywany. Oczywiście musiałem posiadać pewną tablicę/wektor z tymi funkcjami, którą grzecznie uzupełniałem o każdą dopisaną funkcję. Po 38 funkcji się znudziłem...

Czytaj dalej...
2009-03-07:

SEConference 2009

seconference:lecture
Kolejna konferencja na której pojawię się jako "ekspert" (ekspert (rzeczownik) - człowiek przyjeżdżający spoza miasta i pokazujący slajdy LUB człowiek który zrobił wszystkie możliwe błędy z danej dziedziny) to SEConference. Tak że trochę o niej pospamuj^H^H^H^H^H^H^H^H napiszę, a nóż ktoś się pojawi na moim wykładzie :D

Czytaj dalej...
2009-03-06:

SysDay 2009

lecture:sysday
Stara egipska zasada mówi: "jeśli masz 10 minut na napisanie posta na blogu, i nie wiesz co napisać, to napisz o jakiejś konferencji", tak więc, napiszę co nie co o SysDay 2009.

Czytaj dalej...
2009-03-04:

Entropia

re:easy
W poprzednim poście pisałem o narzędziu do pomiaru entropii, natomiast kwestię "po co komu pomiar entropii" zostawiłem wtedy na któryś kolejny post. Czas ów postu właśnie nadszedł.

Czytaj dalej...
2009-03-02:

Ent v.0.0.3

re:entropy:easy:c++
Jest pewien tool, stworzony przeze mnie i j00ru, który już jakiś czas temu miałem wrzucić na sieć, ale jakoś tak kod był niepiękny, i nigdy nie było czasu żeby go uładnić. Aż w końcu w weekend będąc u rodziców wziąłem laptopa i przepisałem kod na czysto.

Czytaj dalej...
2009-02-21:

Referer spam, epizod 2

blog:easy:spam
Ostatnio pisałem o spamie w polu referrer nagłówka HTTP - ktoś wymyślił żeby wrzucać tam linki (czasem okraszone BBCodem) prowadzące do sklepów z viagrą, penisami, i powiększaniem zegarków. Najwyraźniej nadeszła nowa, lepsza, fala ów spamu - od wczoraj u mnie w referrerach pojawia się, nie jeden, a kilka linków do różnych sajtów, z czego ostatni to jakaś podstrona mojego bloga, pierwsza to spam, a czasem pojawia się jeszcze jakaś inna niezwiązana stronka.

Czytaj dalej...
2009-02-18:

Konferencje konferencje...

sysday:igk:blog:confidence:seconference
W najbliższym czasie w Polsce odbędzie się kilka ciekawych (tj takich które planuje odwiedzić, więc wg mnie są ciekawe) konferencji, i stwierdziłem że napiszę parę słów o nich - a nóż któryś z czytelników się skusi pojawić, i będzie okazja do wspólnego napicia się soku pomarańczowego, czy innego piwa.

Czytaj dalej...
2009-02-10:

Kilka losowych spraw...

easy:blog:funny
Ostatnio mam trochę na głowie, więc i wpisów na blogu niedużo. Ale stwierdziłem że uzbierało się kilka drobnych tematów które nie zajmą mi za wiele czasu, więc o nich napiszę.

Czytaj dalej...
2009-02-03:

ExcpHook ver 0.0.5-rc2

excphook:re:windows:security:c++
Wczoraj udało mi się posiedzieć chwilkę nad ExcpHook'iem, w związku z czym prezentuje dzisiaj wersję 0.0.5-rc2 (to jest drugi release candidate wersji alpha 0.0.5, tak, wiem, mam dziwne numerowanie wersji).

Czytaj dalej...
2009-02-02:

Znowu ktoś zapomniał poprawić generator.

easy:security:funny
Dostałem właśnie, na mejla firmowego, taki oto spam:

Czytaj dalej...
2009-02-02:

CloseHandle ciekawsze niż myślałem

winapi:windows:c++:easy:re
Sprawiłem sobie parę dni temu książkę "Windows Via C/C++ (Wydanie piąte)" by Jeffrey Richter i Christophe Nasarre, ot tak aby doszlifować moje WinAPI. Pomysł zakupu okazał się bardzo dobry - już na 50 stronie znalazłem pewną przydatną reverserowi ciekawostkę, którą pozwolę sobie zacytować:

Czytaj dalej...
2009-01-31:

Return-oriented exploiting

medium:windows:c++:asm:security:buffer overflow:return-oriented exploiting
Dzisiaj będzie trochę strikte technicznego security - napiszę co nie co o technice zwanej "return-oriented programming" lub "return-oriented exploiting" lub "ret-to-libc bez wywołań funkcji" lub "ret-to-anything". Jak zwykle podzielę się swoimi spostrzeżeniami co do ów techniki, ponieważ jak zwykle papierki zacząłem czytać po użyciu techniki, zamiast przed nią (to to moje upodobanie do odkrywania koła na nowo).

Czytaj dalej...
2009-01-30:

Nowy layout

blog
Jak widzicie, Xa zgodnie z "groźbą" dostarczył nowy lay ;> Pewne rzeczy jeszcze nie są do końca ostylowane, a i jakieś poprawki w ostylowanych już rzeczach się pewnie też trafią. Ale ogólnie nowy lay _jest_.

Czytaj dalej...
2009-01-26:

CPC464 i kasety

cpc464:easy
Kilka dni spokoju ode mnie było (przeziębienie i takie tam). Czas z tym Skończyć :D

Czytaj dalej...
2009-01-20:

Windows 7 - lista zmian w exportach, update

win7:windows:winapi:easy:re
Zrobiłem jeszcze parę porównań w exportach między Windowsem Vista SP1, a Windowsem 7 beta.

Czytaj dalej...
2009-01-19:

SIN*COS

c++:easy:gfx
Dzisiejszy post nie będzie już o cmd.exe i BATach. Zamiast tego dzisiaj będzie trochę rysowania w C++, a konkretniej rysować będziemy nie my, a funkcje sin oraz cos.

Czytaj dalej...
2009-01-16:

Supportu dla ANSI escape codes w cmd.exe i skryptach BAT

windows:bat:re:winapi:easy:asm:c:c++
Begin teh Update

Czytaj dalej...
2009-01-14:

OpenGL w skryptach .BAT

bat:windows:easy:opengl:c++
Zgodnie z obietnicą, dzisiaj będzie o wykorzystaniu OpenGL w skryptach .BAT. Chciałbym jednak od razu przypomnieć, że .BAT z szybkością dużo wspólnego nie ma ;> (mimo to pod koniec co nie co o optymalizacji napiszę i tak).

Czytaj dalej...
2009-01-11:

Windows 7 - lista zmian w exportach kernel32.dll

win7:windows:winapi:easy:re
W końcu od wczoraj oficjalnie (bo nieoficjalnie już od jakiegoś czasu) można ściągnąć Windows 7 wersję BETA. Ściągnąłem, zainstalowałem (ładnie wygląda), i zacząłem grzebać.

Czytaj dalej...
2009-01-10:

Skrypty .BAT i programowanie obiektowe

bat:windows:medium
UPDATE: Zgodnie z obietnicą (z końca tego postu) wrzuciłem post o OpenGL w .BAT.

Czytaj dalej...
Nie wiem co jest z tym tygodniem, ale co wpadnie mi w ręce jakiś nowy kawałek sprzętu, to muszę spędzić sporo czasu próbując go uruchomić (a wszystko przez software!).

Czytaj dalej...
2009-01-03:

Światłowór - kod z CPC, wnioski

cpc464:basic:easy
Noc się skończyła, i dane przesyłane z CPC na PCta również skończyły się przesyłać (zrzut pamięci, jeśli kogoś interesuje, można ściągnąć tutaj). Kod z CPC również przepisałem - listing jest na końcu postu.

Czytaj dalej...
W oczekiwaniu na nowy programator (który pewnie przyjdzie "pod koniec tygodnia") stwierdziłem że przydałoby się przerzucić zrzut RAM'u z Amstradzika na PCta. Powstało pytanie - jak to zrobić nie mając żadnych kabelków, dyskietek, etc? Okazuje się że jest pewien (pewnie nie jeden), bardzo zabawny moim zdaniem, sposób ;D

Czytaj dalej...
2008-12-30:

CPC 464

cpc464:easy:basic
Ogólnie rzecz biorąc, dobrze jest mieć żonę. A szczególnie taką, która znajduje w przysłowiowej szafie starego Amstrad-Schneider CPC 464 (64k Colour Personal Computer). Tak więc dostałem nową zabawkę (yeey kolejna ciekawa architektura do rozpoznania ;D), o której pewnie kilka postów z czasem się pojawi.

Czytaj dalej...
2008-12-29:

Strzępki kodu

easy
W menu po prawej w sekcjach (pod linkami do postów) dodałem link do działu z małymi kawałkami kodu które kiedyś tam naklepałem. Są to raczej proste rzeczy, przeznaczone dla bardziej początkujących czytelników, ale z czasem postaram się tam jakieś ciekawostki też powrzucać.

Czytaj dalej...
Jakiś tydzień temu czytałem na pewnym forum długi post o grach które pojawiły się w ciągu ostatnich 18 lat:

Czytaj dalej...
2008-12-16:

Malware "kradnący" AppInit_DLLs

re:malware:windows:security:easy
W moje ręce dostał się pewien szkodnik, którego najciekawszym punktem był entrypoint użyty do uruchomienia szkodnika po reboocie systemu.

Czytaj dalej...
2008-12-07:

LOOP vs. domyślny assembler na Mac OS X

assembler:macosx:easy
Panowie z Apple chyba lubią stare toolsy. Ostatnio grzebiąc z Unavowed'em przy pewnym projekcie (o którym napisze przy innej okazji), a konkretniej, próbując ów projekt przeportować na Mac OS X'a, natrafiliśmy na pewną przeszkodę która przedstawiła się nam jako Apple Inc version cctools-698.1~1, GNU assembler version 1.38. Jest to defaultowy assembler (as) używany na (aktualnym) Mac OS X, i najwyraźniej pamięta on jeszcze czasy gdy na chleb mówiłem 'bep' a na muchy 'tapty' (oby to 1.38 oznaczało tylko inną numeracje, ponieważ - dla porównania, obecna wersja wg. wiki to 2.19, mój MinGW twierdzi że ma wersje 2.18.50, w roku 2000 była wydana wersja 2.11, a w obecnym changelogu as najstarszy wpis dotyczy wersji 1.93.01).

Czytaj dalej...
2008-11-23:

Zabawna oferta pracy dla ...

security
Na moją skrzynkę trafiły dzisiaj dwie identyczne spamowe oferty pracy, które wyglądały następująco:

Czytaj dalej...
Siedząc w pokoju hotelowym na PyCONie naszło mnie żeby sprawdzić co się dzieje jeśli wyczyści się procesowi całą pamięć (lub proces sam sobie ją wyczyści). "Wyczyści" w znaczeniu uwolni co się da (VirtualFree oraz UnmapViewOfFile), a resztę w miarę możliwości wyzeruje. Eksperyment miał za zadanie sprawdzić przy okazji jak zareaguje na to system, oraz inne aplikacje.

Czytaj dalej...
2008-11-06:

.S.k.y.

c++:gfx:code:easy
Niecałe pół roku temu stwierdziłem że przydała by mi się animowana tapetka, generowana realtime, ale bez użycia akceleracji 3D (tj. bez OpenGL/D3D).  Dodatkowymi założeniami był FPS - mógł być bardzo niski, na poziomie 2-3 klatek na sekundę, oraz wykorzystanie kilku core'ów (do 4rech). Jak to w życiu bywa, naklepałem troszkę kodu, po czym zająłem się innymi rzeczami. Efekt może powalający nie wyszedł, ale zdecydowałem się i tak opisać to co mi wyszło - może kogoś to zainteresuje ;> (na obrazki, z wyjątkiem height mapy, można klikać; kod źródłowy dla Windowsa/Maca/Linuxa i filmik są na końcu postu).

Czytaj dalej...
Miałem dzisiaj przyjemność prowadzić prelekcje na Wrocławskim spotkaniu ISSA. Prezentacja wraz z filmami dostępna jest tutaj. Wszelkie uwagi mile widziane, szczególnie te krytyczne ;>

Czytaj dalej...
2008-10-22:

Format bug, Vista i %n

vista:windows:winapi:c:c++:format bug:security:easy
Rozmawiałem ostatnio z oshogbo z mojego teamu o format bugu, i gdy doszliśmy do testowania przykładowego kodu, okazało się że to co powinno działać - tag %n, nie działa. Co ciekawe, problem wydawał się dotyczyć jedynie Windowsa Vista, ponieważ na XP wszystko śmigało aż miło. Postanowiłem kapkę wgłębić się w problem, i oto co się dowiedziałem...

Czytaj dalej...
2008-10-20:

Ciekawy schemat anty-re

re:malware:windows:security:easy:winapi
Jakiś czas temu analizowałem pewien malware, na który nałożony został bardzo ciekawy paker...

Czytaj dalej...
2008-10-13:

Brakująca funkcja gettimeofday i race condition

c:c++:race condition:windows:easy:winapi
Dzisiaj będzie post wyrwany z kontekstu. Post będzie dotyczył funkcji gettimeofday na Windowsie, a raczej jej braku.

Czytaj dalej...
2008-10-04:

SekIT 2008 - relacja

lecture:easy
Jakoś tak mam zwyczaj ostatnio newsy zaczynać od "no, w końcu mam chwilę czasu żeby coś napisać". Tym razem... nie będzie inaczej ;D

Czytaj dalej...
2008-09-30:

Hacker Challenge 2008

re:easy:windows
Wygląda na to że 13 października zaczyna się pierwszy etap Hacker Challenge - amerykańskiego konkursu dla RE. Z tego co widzę w tym roku o połowę obcięli wysokość nagród, widać kryzys faktycznie im zalazł za skórę. Anyway, zachęcam RE do zainteresowania się tym konkursem - wszystkie miejsca są nagradzane.

Czytaj dalej...
2008-09-30:

Security Days - zadanie 3,4

security:easy
W piątek w nocy C++ mnie wchłonęło, i wypuściło dopiero w poniedziałek rano (z krótkimi przerwami na sen, i na skok do kina na Babylon A.D., który moim zdaniem jest całkiem niezły, i bardzo klimatyczny, chociaż zakończenie... cóż, widać że studio skróciło film o 70 minut wbrew woli reżysera, nic tylko czekać na wersję reżyserską), więc dopiero teraz kolejny obiecany post hehe.

Czytaj dalej...
2008-09-25:

Security Days 6 - zadanie 2

security:easy
Trochę się u mnie sprawy uspokoiły, więc wracam do opisywania zadanek z tegorocznego SD6. Z uwagi na późną godzinę dzisiaj opisze tylko jedno, a opisy kolejnych znajdą się w następnych dniach. Dodam że polskojęzyczni czytelnicy mogą znaleźć rozwiązania na oficjalnym forum SD6, natomiast, z uwagi na to że większość zadań była skonstruowana tak, że istniało kilka rozwiązań, oraz z uwagi na fakt iż mojego bloga czytają również osoby nie związane z językiem polskim, i tak opisze zadanka z SD6 po swojemu ;>

Czytaj dalej...
Nadal jestem niestety trochę przeziębiony, i większość czasu spędzam kurując się, więc ponownie krótki news (ale mam nadzieje że jutro już coś ciekawego merytorycznie napiszę).

Czytaj dalej...
2008-09-15:

Prezentacja z SekIT 2008

lecture:easy
Szybki news. Wrzuciłem na server moją prezentacje (z filmikami) z SekIT (24mb).

Czytaj dalej...
2008-09-12:

SekIT 2008

lecture
Za jakieś dwie godziny wyruszam (razem z kanedaaa) na SekIT, nową konferencję z działki bezpieczeństwa komputerowego. Jakoś tak wyszło że tym razem jako prelegent - czyli będę przez 45 minut się produkował na scenie ku uciesze (taką mam przynajmniej nadzieje) publiki ;> A mówił będę o bankerach, czyli trojanach bankowych. Będzie ogólny przegląd, kilka filmików, i sporo machania rękami. Prezentację z filmikami wrzucę po SekIT gdzieś tutaj.

Czytaj dalej...
Dziś wieczorem rozpoczęła się druga część etapu 1, więc mogę w końcu napisać coś o zadaniu pierwszym.

Czytaj dalej...
Post będzie trochę ostrzejszy niż zwykle.

Czytaj dalej...
2008-09-09:

Security Days 6, dzień 1

security:rant
Jak zainteresowanym wiadomo, wczoraj o 20 rozpoczął się pierwszy dzień interenetowego etapu Security Days 6. Termin nadsyłania zadanek wstępnie został ustalony na dzisiaj na godzinę 21, jednak z powodu ataku (DDoS podobno) na główną stronę konkursu został przesunięty na jutro na 21. Cóż, szkoda, bo chciałem opisać już dzisiaj pierwsze zadanie praktyczne, które było moim zdaniem odpowiednie na dzień pierwszy - dość proste, ale nawet ciekawe. Cóż, niestety będę mógł o tym napisać dopiero jutro ;>

Czytaj dalej...
Pod moim postem o sandboxie w Chrome (po angielskiej stronie bloga) wdałem się w dyskusję z AlienRancherem czy hookowanie funkcji (czy tez 'przechwycenia' jak to Google określa) są faktycznie mechanizmem bezpieczeństwa. Szczerze powiem że wydawało mi się że tak, i nawet spodobał mi się ten pomysł. Natomiast okazało się iż faktycznie hookowanie funkcji służy do zapewnienia kompatybilności z pluginami (bo chyba nie samego renderera?) które nie radzą sobie w przyciętym środowisku. Tak na prawdę więc hookowanie funkcji służy ewentualnemu zezwoleniu na dostęp do niektórych plików/kluczy do których plugin w restrykcyjnym środowisku nie miałby dostępu, a do których dostępu by wymagał żeby poprawnie działać.

Czytaj dalej...
Przy okazji pojawienia się ponownie informacji o tym że Google Chrome ściąga pliki bez pytania na bugtraq wznowiła się dyskusja o tym czy jest to bug, feature, czy może vuln (luka w bezpieczeństwie).

Czytaj dalej...
2008-09-05:

Remote Buffer Overflow w Google Chrome

chrome:security:buffer overflow:windows
Krótka ciekawostka. Na liście FD pojawiło się info o Remote Buffer Overflow w Chrome (by Le Duc Anh - SVRT - Bkis), wymagającym jednak nieznacznej ingerencji usera - kliknięcia 'Zapisz jako...' (buffer overflow ma miejsce w obsłudze tagu <title>). Researcher udostępnił dwa exploity PoC, jeden uruchamiający kalkulator (dostosowany podobno pod XP SP2, jednak u mnie coś on nie działa), oraz drugi po prostu crashujący cały browser. Należy zaznaczyć że CAŁY chrome się crashuje, a nie tylko pojedynczy tab - widać błąd ma miejsce w browserze, lub jest w jakiś magiczny sposób przenoszony z renderera do browsera.

Czytaj dalej...
2008-09-04:

Sandbox w Google Chrome

chrome:easy:windows:security:re
Wczoraj miałem okazję się przyjrzeć 'piaskownicy' zawartej w Google Chrome. Ale po kolei...

Czytaj dalej...
2008-09-02:

Google Chrome - pierwsze wrażenie

chrome:easy
Coś dzisiaj szał na pisania o nowo-wydanej przeglądarce Google, więc i ja coś napiszę, a co ;>

Czytaj dalej...
2008-09-02:

Urban Terror

game
Kolejny post z cyklu 'w co można pograć w wolnym czasie'. Dzisiaj będzie o Urban Terror - freeware'owym FPS na opensource'owym engine'ie Quake 3 (tak na prawdę UrT jest modem typu total-conversion do Q3).

Czytaj dalej...
2008-08-29:

Dział Projekty

blog
Po prawej stronie w menu pojawił się dział Projects. Wrzuciłem do niego na razie jeden projekt z początku tego roku - wirtualną maszynkę stworzoną na potrzeby pewnego compo.

Czytaj dalej...
2008-08-28:

Security Days 6

security:easy
Hi,

Czytaj dalej...
2008-08-26:

Stare advisory

security:easy:blog
Bardzo krótki news...

Czytaj dalej...
2008-08-26:

Włókna w nici, czyli fibers vs threads.

windows:winapi:c:c++
Zainspirowany postem noglorp'a na OpenRCE zdecydowałem się pobawić w końcu fiberami pod Windowsem, i okazało się że to całkiem interesujący temat.

Czytaj dalej...
2008-08-25:

Metaball, Python+Pygame+Psyco i SDL+C++

python:c++:easy


Czytaj dalej...
2008-08-20:

UFO: Alien Invasion

game
Jakieś 14 lat temu dorwałem w swoje łapki UFO: Enemy Unknown (w USA wypuścili grę pod zmienionym tytułem X-COM: UFO Defense, wolę europejski tytuł), strategiczno-ekonomiczno-taktyczną grę wydaną przez jednego z ówczesnych liderów rynku gier komputerowych - firmę Microprose (firma wypuściła takie tytuły jak choćby Civilization, Colonization czy Transport Tycoon). Gra była solidna, za równo od strony fabularnej, graficznej, jak i samego gameplay'u. Gra polegała na kierowaniu organizacją zwalczającą wrogich najeźdźców z kosmosu, za równo od strony strategiczno-ekonomicznej (budowa baz, badania, etc), jak i taktycznej (sterowanie pojedynczymi jednostkami na polu bitwy). UFO:EU doczekał się drugiej części (opartej na tym samym engine'ie) - mowa o X-COM: Terror from the deeps, która sprowadzała akcję pod wodę. Potem była część 3cia - X-COM: Apocalypse (na nowym silniku), która ograniczyła świat gry do jednej metropolii, i niestety wtedy też rozstałem się ze serią (coś mi nie podeszła ta 3cia seria, straciła na klimacie imho).

Czytaj dalej...
2008-08-18:

Funkcje typu naked w gcc/g++

c:c++:assembler:gcc:g++:asm
Ostatnio miałem okazję tworzyć w C++ (MinGW g++) pewną małą bibliotekę do runtime-patchów. W pewnym momencie zaszła potrzeba stworzenia funkcji w całości w assemblerze, bez żadnych dodatków ze strony kompilatora, czyli po prostu chodziło o funkcję "naked". Niestety, o ile kompilatory rodem z Redmond udostępniają atrybut __declspec(naked) dla x86 [Visual C++ Language Reference - naked (C++)], to kompilatory z GNU Compiler Collection obsługują "naked" jedynie w portach kompilatorów dla ARM, AVR, IP2K i SPU [Using the GNU Compiler Collection (For GCC version 4.3.0) - Function Attributes]. Powstał więc pewien problem który miałby kilka rozwiązań:

Czytaj dalej...
2008-08-16:

1rd

blog
Witam na moim nowym blogu!

Czytaj dalej...