Liczby

https://chacker.pl/

Podobnie jak w przypadku ciągów znaków w Pythonie, liczby wskazują obiekt, który może zawierać dowolną liczbę. Ten typ danych może przechowywać małe liczby, duże liczby, liczby zespolone, liczby ujemne i dowolne inne liczby, jakie możesz wymyślić. Składnia jest taka, jak można się spodziewać:

Teraz, gdy już wiesz, jak działają liczby, możemy zacząć łączyć obiekty. Co się stanie, gdy obliczymy ciąg znaków plus liczbę?

Błąd! Musimy pomóc Pythonowi zrozumieć, co chcemy, aby się wydarzyło. W tym przypadku jedynym sposobem połączenia „abc” i 12 jest przekształcenie 12 w ciąg znaków. Możemy to zrobić w locie:

Jeśli ma to sens, można używać różnych typów razem:

I jeszcze jedna uwaga dotycząca obiektów – samo działanie na obiekcie często nie powoduje jego zmiany. Sam obiekt (liczba, ciąg znaków lub inny) jest zwykle zmieniany tylko wtedy, gdy jawnie ustawisz etykietę obiektu (lub wskaźnik) na nową wartość, w następujący sposób:

Ciągi

https://chacker.pl/

Użyłeś już jednego obiektu typu string . Ciągi znaków są używane w Pythonie do przechowywania tekstu. Najlepszym sposobem pokazania, jak łatwo jest używać ciągów znaków i manipulować nimi, jest zademonstrowanie tej techniki, ponownie przy użyciu powłoki Pythona 3, w następujący sposób:

Oto podstawowe funkcje manipulacji ciągami, których będziesz używać podczas pracy z prostymi ciągami. Składnia jest prosta i przejrzysta, dokładnie taka, jakiej można się spodziewać po Pythonie. Jednym z ważnych rozróżnień, które należy od razu wprowadzić, jest to, że każdy z tych ciągów (nazwaliśmy je ciągiem1, ciągiem2 i ciągiem3) jest po prostu wskaźnikiem — dla osób zaznajomionych z C — lub etykietą bloku danych znajdującego się gdzieś w pamięci. Jedną z koncepcji, która czasami nasuwa się nowym programistom, jest koncepcja jednej etykiety (lub wskaźnika) wskazującej na inną etykietę. Poniższy kod i rysunekilustrują tę koncepcję:

>>> label1 = 'Dilbert’

>>> etykieta2 = etykieta1

W tym momencie mamy gdzieś w pamięci kawałek pamięci z zapisanym ciągiem Pythona „Dilbert”. Mamy też dwie etykiety wskazujące na tę plamę pamięci. Jeśli następnie zmienimy przypisanie etykiety1, etykieta2 nie ulegnie zmianie:

… continued from above

>>> label1 = 'Dogbert’

>>> label2

’Dilbert’

Jak widać na poniższym rysunku , etykieta2 sama w sobie nie wskazuje na etykietę1. Wskazuje raczej na to samo, na co wskazywała etykieta1, dopóki etykieta1 nie została ponownie przypisana.

Obiekty Pythona

https://chacker.pl/

Najważniejsze rzeczy, które musisz dobrze zrozumieć, to różne typy obiektów, których Python może używać do przechowywania danych i sposób, w jaki manipuluje tymi danymi. Omówimy pięć największych typów danych: ciągi znaków, liczby, listy, słowniki i pliki. Następnie omówimy podstawową składnię i absolutne minimum, które musisz wiedzieć o Pythonie i sieci.

Zdobycie Pythona

https://chacker.pl/

Pominiemy zwykłe diagramy architektury i gadkę o celach projektowych i powiemy Ci, abyś po prostu pobrał wersję Pythona dla swojego systemu operacyjnego ze strony www.python.org/download/, abyś mógł śledzić dalej. Alternatywnie, spróbuj po prostu uruchomić go, wpisując python w wierszu poleceń — jest on instalowany domyślnie w wielu dystrybucjach Linuksa oraz w systemie Mac OS X 10.3 i nowszych. Ponieważ język Python jest interpretowany (a nie kompilowany), możesz uzyskać natychmiastową informację zwrotną od Pythona, korzystając z jego interaktywnego monitu. Będziemy go używać na kilku następnych stronach, więc powinieneś już teraz uruchomić interaktywny monit, wpisując python.

Umiejętności przetrwania w Pythonie

https://chacker.pl/

Python to popularny interpretowany, obiektowy język programowania. Narzędzia hakerskie (i wiele innych aplikacji) korzystają z języka Python, ponieważ łatwo się go nauczyć i używać, jest dość potężny i ma przejrzystą składnię, która ułatwia czytanie. To wprowadzenie obejmuje jedynie absolutne minimum, które musisz zrozumieć. Prawie na pewno będziesz chciał dowiedzieć się więcej, dlatego możesz zapoznać się z jedną z wielu dobrych książek poświęconych Pythonowi lub obszerną dokumentacją na stronie www.python.org. Python 2.7 został wycofany 1 stycznia 2020 roku. Wielu praktyków nadal lubi wersję 2.7 i przez lata powtarzało, że jeśli chcesz nauczyć się języka Python, aby móc używać, modyfikować lub rozszerzać istniejące projekty Pythona, powinieneś najpierw nauczyć się Pythona 2.7 . Jednakże w tej chwili, jeśli Twoim celem jest rozpoczęcie pracy nad rozwojem nowego języka Python, powinieneś skupić się na Pythonie 3, ponieważ usuwa on wiele problemów w Pythonie 2.7. Nadal istnieje niezliczona ilość programów zależnych od Pythona 2.6 lub Pythona 2.7, więc bądź świadomy, jakiej wersji używasz.

Dezasemblacja za pomocą gdb

https://chacker.pl/

Aby przeprowadzić dezasemblację za pomocą gdb, potrzebujesz dwóch następujących poleceń:

set disassembly-flavor <intel/att>

disassemble <function name>

Pierwsze polecenie przełącza pomiędzy formatem Intel (NASM) i AT&T. Domyślnie gdb używa formatu AT&T. Drugie polecenie deasembluje daną funkcję (w tym funkcję main, jeśli została podana). Na przykład, aby zdemontować funkcję o nazwie powitanie w obu formatach, wpisz:

Oto kilka częściej używanych poleceń:

info functions

disassemble /r <function name>

Polecenie info funkcje pokazuje wszystkie dynamicznie połączone funkcje, a także wszystkie funkcje wewnętrzne, chyba że program został usunięty. Użycie funkcji disassemble z opcją /r <nazwa funkcji> powoduje zrzucenie kodów operacji i operandów, a także instrukcji. Kody operacji to zasadniczo reprezentacje kodu maszynowego wstępnie zmontowanego kodu asemblera.

Podstawy gdb

https://chacker.pl/

Często używane polecenia w gdb są wymienione i opisane w tabeli poniżej

Teraz wydajemy następujące polecenia. Pierwsze polecenie przekompiluje nasz program Meet z symbolami debugowania i innymi przydatnymi opcjami

 

Debugowanie

Aby zdebugować nasz przykładowy program, najpierw zainstaluj gdb w swojej instancji Kali:

Teraz wydajemy następujące polecenia. Pierwsze polecenie przekompiluje nasz program Meet z symbolami debugowania i innymi przydatnymi opcjami

Debugowanie za pomocą gdb

https://chacker.pl/

Debugerem wybieranym do programowania w C w systemach Unix jest gdb. Zapewnia solidny interfejs wiersza poleceń, pozwalający na uruchomienie programu przy zachowaniu pełnej kontroli. Na przykład możesz ustawić punkty przerwania w wykonywaniu programu i monitorować zawartość pamięci lub rejestrów w dowolnym momencie. Z tego powodu debugery takie jak gdb są nieocenione zarówno dla programistów, jak i hakerów. Dla tych, którzy szukają bardziej graficznego debugowania w systemie Linux, dostępne są alternatywy lub rozszerzenia, takie jak ddd i edb.

Struktura pliku asemblacji

https://chacker.pl/

Plik źródłowy asmeblerowy jest podzielony na następujące sekcje:

  • .model Dyrektywa .model wskazuje rozmiar plików sekcji .data i .text .
  • .stack Dyrektywa .stack wyznacza początek sekcji stosu i wskazuje rozmiar stosu w bajtach.
  • .data Dyrektywa .data wyznacza początek sekcji .data i definiuje zmienne, zarówno zainicjowane, jak i niezainicjowane.
  • ..text. dyrektywa .text przechowuje polecenia programu