Msingi wa Python
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Msingi wa Python
Taarifa muhimu
list(xrange()) == range() β> Katika python3 range ni xrange ya python2 (siyo orodha bali ni jenereta)
Tofauti kati ya Tuple na Orodha ni kwamba nafasi ya thamani katika tuple inampa maana lakini orodha ni thamani zilizopangwa tu. Tuples zina muundo lakini orodha zina mpangilio.
Operesheni kuu
Ili kuinua nambari unatumia: 3**2 (siyo 3^2)
Ikiwa unafanya 2/3 inarudisha 1 kwa sababu unagawa ints mbili (nambari nzima). Ikiwa unataka desimali unapaswa kugawa floats (2.0/3.0).
i >= j
i <= j
i == j
i != j
a na b
a au b
siyo a
float(a)
int(a)
str(d)
ord(βAβ) = 65
chr(65) = βAβ
hex(100) = β0x64β
hex(100)[2:] = β64β
isinstance(1, int) = True
βa bβ.split(β β) = [βaβ, βbβ]
β β.join([βaβ, βbβ]) = βa bβ
βabcdefβ.startswith(βabβ) = True
βabcdefβ.contains(βabcβ) = True
βabc\nβ.strip() = βabcβ
βapbcβ.replace(βpβ,ββ) = βabcβ
dir(str) = Orodha ya mbinu zote zinazopatikana
help(str) = Maelezo ya darasa str
βaβ.upper() = βAβ
βAβ.lower() = βaβ
βabcβ.capitalize() = βAbcβ
sum([1,2,3]) = 6
sorted([1,43,5,3,21,4])
Unganisha wahusika
3 * βaβ = βaaaβ
βaβ + βbβ = βabβ
βaβ + str(3) = βa3β
[1,2,3]+[4,5]=[1,2,3,4,5]
Sehemu za orodha
βabcβ[0] = βaβ
βabcβ[-1] = βcβ
βabcβ[1:3] = βbcβ kutoka [1] hadi [2]
βqwertyuiopβ[:-1] = βqwertyuioβ
Maoni
# Maoni ya mstari mmoja
βββ
Maoni ya mistari kadhaa
Mwingine
βββ
Mizunguko
if a:
#somethig
elif b:
#something
else:
#something
while(a):
#comething
for i in range(0,100):
#something from 0 to 99
for letter in "hola":
#something with a letter in "hola"
Tuples
t1 = (1,β2,βthreeβ)
t2 = (5,6)
t3 = t1 + t2 = (1, β2β, βthreeβ, 5, 6)
(4,) = Singelton
d = () tuple tupu
d += (4,) β> Kuongeza kwenye tuple
CANT! β> t1[1] == βNew valueβ
list(t2) = [5,6] β> Kutoka tuple hadi orodha
List (array)
d = [] tupu
a = [1,2,3]
b = [4,5]
a + b = [1,2,3,4,5]
b.append(6) = [4,5,6]
tuple(a) = (1,2,3) β> Kutoka orodha hadi tuple
Dictionary
d = {} tupu
monthNumbers={1:βJanβ, 2: βfebβ,βfebβ:2}β> monthNumbers ->{1:βJanβ, 2: βfebβ,βfebβ:2}
monthNumbers[1] = βJanβ
monthNumbers[βfebβ] = 2
list(monthNumbers) = [1,2,βfebβ]
monthNumbers.values() = [βJanβ,βfebβ,2]
keys = [k for k in monthNumbers]
a={β9β:9}
monthNumbers.update(a) = {β9β:9, 1:βJanβ, 2: βfebβ,βfebβ:2}
mN = monthNumbers.copy() #Nakala huru
monthNumbers.get(βkeyβ,0) #Angalia kama ufunguo upo, Rudisha thamani ya monthNumbers[βkeyβ] au 0 kama haipo
Set
Katika set hakuna kurudiwa
myset = set([βaβ, βbβ]) = {βaβ, βbβ}
myset.add(βcβ) = {βaβ, βbβ, βcβ}
myset.add(βaβ) = {βaβ, βbβ, βcβ} #Hakuna kurudiwa
myset.update([1,2,3]) = set([βaβ, 1, 2, βbβ, βcβ, 3])
myset.discard(10) #Kama ipo, iondoe, kama sio, hakuna kitu
myset.remove(10) #Kama ipo iondoe, kama sio, inua exception
myset2 = set([1, 2, 3, 4])
myset.union(myset2) #Thamani ni myset AU myset2
myset.intersection(myset2) #Thamani katika myset NA myset2
myset.difference(myset2) #Thamani katika myset lakini sio katika myset2
myset.symmetric_difference(myset2) #Thamani ambazo hazipo katika myset NA myset2 (sio katika zote)
myset.pop() #Pata kipengele cha kwanza cha set na uondoe
myset.intersection_update(myset2) #myset = Vipengele katika myset na myset2
myset.difference_update(myset2) #myset = Vipengele katika myset lakini sio katika myset2
myset.symmetric_difference_update(myset2) #myset = Vipengele ambavyo havipo katika zote
Classes
Njia katika __It__ itakuwa ile itakayotumika na sort kulinganisha kama kitu cha darasa hili ni kikubwa kuliko kingine
class Person(name):
def __init__(self,name):
self.name= name
self.lastName = name.split(β β)[-1]
self.birthday = None
def __It__(self, other):
if self.lastName == other.lastName:
return self.name < other.name
return self.lastName < other.lastName #Return True if the lastname is smaller
def setBirthday(self, month, day. year):
self.birthday = date tame.date(year,month,day)
def getAge(self):
return (date time.date.today() - self.birthday).days
class MITPerson(Person):
nextIdNum = 0 # Attribute of the Class
def __init__(self, name):
Person.__init__(self,name)
self.idNum = MITPerson.nextIdNum β> Accedemos al atributo de la clase
MITPerson.nextIdNum += 1 #Attribute of the class +1
def __it__(self, other):
return self.idNum < other.idNum
ramani, zip, filter, lambda, sorted na one-liners
Map ni kama: [f(x) kwa x katika iterable] β> map(tutple,[a,b]) = [(1,2,3),(4,5)]
m = map(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) β> [False, False, True, False, False, True, False, False, True]
zip inasimama wakati mfupi wa foo au bar unaposimama:
for f, b in zip(foo, bar):
print(f, b)
Lambda inatumika kufafanua kazi
(lambda x,y: x+y)(5,3) = 8 β> Tumia lambda kama kazi
sorted(range(-5,6), key=lambda x: x** 2) = [0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] β> Tumia lambda kupanga orodha
m = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) = [3, 6, 9] β> Tumia lambda kuchuja
reduce (lambda x,y: x*y, [1,2,3,4]) = 24
def make_adder(n):
return lambda x: x+n
plus3 = make_adder(3)
plus3(4) = 7 # 3 + 4 = 7
class Car:
crash = lambda self: print('Boom!')
my_car = Car(); my_car.crash() = 'Boom!'
mult1 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x%3 == 0 ]
Mifanozo
def divide(x,y):
try:
result = x/y
except ZeroDivisionError, e:
print βdivision by zero!β + str(e)
except TypeError:
divide(int(x),int(y))
else:
print βresult iβ, result
finally
print βexecuting finally clause in any caseβ
Assert()
Ikiwa hali si ya kweli, maandiko yataonyeshwa kwenye skrini.
def avg(grades, weights):
assert not len(grades) == 0, 'no grades data'
assert len(grades) == 'wrong number grades'
Generators, yield
Generator, badala ya kurudisha kitu, βhutoaβ kitu. Unapokifikia, kitarejesha thamani ya kwanza iliyozalishwa, kisha, unaweza kukifikia tena na kitarejesha thamani inayofuata iliyozalishwa. Hivyo, thamani zote hazizalishwi kwa wakati mmoja na kumbukumbu nyingi zinaweza kuokolewa kwa kutumia hii badala ya orodha yenye thamani zote.
def myGen(n):
yield n
yield n + 1
g = myGen(6) β> 6
next(g) β> 7
next(g) β> Hitilafu
Mifumo ya Kawaida
import re
re.search(β\wβ,βholaβ).group() = βhβ
re.findall(β\wβ,βholaβ) = [βhβ, βoβ, βlβ, βaβ]
re.findall(β\w+(la)β,βhola caracolaβ) = [βlaβ, βlaβ]
Maana maalum:
. β> Kila kitu
\w β> [a-zA-Z0-9_]
\d β> Nambari
\s β> Karakteri ya Nafasi[ \n\r\t\f]
\S β> Karakteri isiyo na nafasi
^ β> Anza na
$ β> Maliza na
+ β> Moja au zaidi
* β> 0 au zaidi
? β> Matukio 0 au 1
Chaguzi:
re.search(pat,str,re.IGNORECASE)
IGNORECASE
DOTALL β> Ruhusu nukta kuendana na newline
MULTILINE β> Ruhusu ^ na $ kuendana katika mistari tofauti
re.findall(β<.*>β, β<b>foo</b>and<i>so on</i>β) = [β<b>foo</b>and<i>so on</i>β]
re.findall(β<.*?>β, β<b>foo</b>and<i>so on</i>β) = [β<b>β, β</b>β, β<i>β, β</i>β]
IterTools
product
from itertools import product β> Inazalisha mchanganyiko kati ya orodha 1 au zaidi, labda ikirudia thamani, bidhaa ya Cartesian (mali ya usambazaji)
print list(product([1,2,3],[3,4])) = [(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]
print list(product([1,2,3],repeat = 2)) = [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
permutations
from itertools import permutations β> Inazalisha mchanganyiko wa wahusika wote katika kila nafasi
print list(permutations([β1β,β2β,β3β])) = [(β1β, β2β, β3β), (β1β, β3β, β2β), (β2β, β1β, β3β),β¦ Mchanganyiko wote wa uwezekano
print(list(permutations(β123β,2))) = [(β1β, β2β), (β1β, β3β), (β2β, β1β), (β2β, β3β), (β3β, β1β), (β3β, β2β)] Mchanganyiko wote wa urefu 2
combinations
from itertools import combinations β> Inazalisha mchanganyiko wote wa uwezekano bila kurudia wahusika (ikiwa βabβ ipo, haiwezi kuunda βbaβ)
print(list(combinations(β123β,2))) β> [(β1β, β2β), (β1β, β3β), (β2β, β3β)]
combinations_with_replacement
from itertools import combinations_with_replacement β> Inazalisha mchanganyiko wote wa uwezekano kuanzia wahusika (kwa mfano, ya tatu inachanganywa kuanzia ya tatu lakini si na ya pili au ya kwanza)
print(list(combinations_with_replacement(β1133β,2))) = [(β1β, β1β), (β1β, β1β), (β1β, β3β), (β1β, β3β), (β1β, β1β), (β1β, β3β), (β1β, β3β), (β3β, β3β), (β3β, β3β), (β3β, β3β)]
Wapambo
Mwapambo unaopima muda ambao kazi inahitaji kutekelezwa (kutoka hapa):
from functools import wraps
import time
def timeme(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("Let's call our decorated function")
start = time.time()
result = func(*args, **kwargs)
print('Execution time: {} seconds'.format(time.time() - start))
return result
return wrapper
@timeme
def decorated_func():
print("Decorated func!")
Ikiwa utaikimbiza, utaona kitu kama ifuatavyo:
Let's call our decorated function
Decorated func!
Execution time: 4.792213439941406e-05 seconds
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
HackTricks

