Stare przysłowie mówi, że potrzeba jest matką wynalazków. To prawda. Może wynalazek wielki to nie jest, ale na pewno potrzeba zmusiła mnie do przeproszenia się z C#. W wyniku napisałem swój pierwszy plugin do narzędzia Fiddler.
Mój pierwszy plugin do Fiddlera
W tym wypadku potrzebę wygenerował wynalazek o nazwie Google Web Toolkit, a konkretnie ewentualność testowania aplikacji internetowej w nim popełnionej.
Co specyficznego jest GWT? Testowanie aplikacji internetowej w znacznym stopniu polega na modyfikacji przesyłanych między klientem i serwerem. Zwykle są one przesyłane jako argumenty żądania GET lub POST. Ta metoda jest dobrze obsługiwana przez narzędzia typu WebScarab, Fiddler, czy TamperIE. Po przechwyceniu parametry mogą być łatwo modyfikowane... Oczywiście GWT jest inne. Całość przesyłana jest co prawda w metodzie POST, ale bynajmniej nie w postaci application/x-www-form-urlencoded (czyli w postaci par nazwa_parametru_1=wartosc_parametru_1& ... &nazwa_parametru_n=wartosc_parametru_n. Zamiast tego poszczególne elementy żądania rozdzielone są ciągiem wartości 0xEF, 0xBF, 0xBF. Wygoda pracy w takim wypadku jest zerowa, a ja z natury jestem leniwy...
To jak to zrobić?Zarówno WebScarab, jak i Fiddler wspierają skryptowanie i rozszerzanie swojej funkcjonalności. Na początku chciałem to zrobić w WebScarab, ale nie zauważyłem prostej metody zrobienia tego, co chciałem, a konkretnie:
- Przechwycenie i "zdekodowanie" żądania przed umożliwieniem jego modyfikacji,
- "Zakodowanie" zmodyfikowanego żądania przed wysłaniem,
W Fiddler natomiast coś takiego jest stosunkowo proste do zrealizowania. Wystarczy, by rozszerzenie implementowało interfejs IAutoTamper. Gdyby nie fakt, że w C# nie napisałem nawet linijki od lat kilku, to napisanie takiego dekodera zajęłoby dosłownie chwil kilka...
A Python jest lepszy!Przyznam się, że najwięcej czasu zajęło mi zaimplementowanie banalnych operacji na stringach. W nieskończonej swej naiwności liczyłem na to, że funkcja Split w .NET będzie równie wygodna, jak w Pythonie. Niestety, nie jest... A separator, który wprowadziłem miał 3 znaki (najpierw po prostu przeglądałem tablicę bajtów i zamieniłem separatory na string postaci "|||"). W Pythonie rozbicie tych wartości jest trywialne, bo separator może być nie tylko znakiem, ale również ich ciągiem. Gdy już doszedłem do tego, dlaczego mnożą mi się parametry, było już z górki...
Aby było jasne, nie twierdzę, że .NET jest zły. Twierdzę, że Python jest wygodniejszy. Muszę sprawdzić, czy rozszerzenia do Fiddlera da się pisać w IronPython.
Czasami natknąć się można na "zapytania ofertowe" dotyczące testów penetracyjnych (przy czym pytający używa na przykład terminu "audyt"), w których elementem decydującym o wyborze oferenta jest, tak jak w niestety wielu przypadkach (patrz rozpadające się
Przesłany: Jun 06, 20:15
WebScarab jest jednym z moich podstawowych narzędzi pracy. Jest to fatalny kawałek softu. Problem w tym, że nie ma nic lepszego... Java... Nie, nie chodzi nawet o to, że soft jest w Java. Eclipse też jest w tym języku i złego słowa na niego nie
Przesłany: Jun 07, 12:43