Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
python mérés
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
blint-public
6. félév
Infokomm labor
python mérés
Commits
0e7c8ab0
Verified
Commit
0e7c8ab0
authored
Mar 7, 2022
by
Réthelyi Bálint
Browse files
Options
Downloads
Patches
Plain Diff
3 b
parent
c9a5a436
No related branches found
No related tags found
No related merge requests found
Pipeline
#20339
passed
Mar 7, 2022
Stage: build
Changes
4
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
README.md
+30
-0
30 additions, 0 deletions
README.md
solutions/1_feladat.md
+2
-2
2 additions, 2 deletions
solutions/1_feladat.md
solutions/2_feladat.md
+1
-1
1 addition, 1 deletion
solutions/2_feladat.md
solutions/3_feladat.md
+58
-1
58 additions, 1 deletion
solutions/3_feladat.md
with
91 additions
and
4 deletions
README.md
+
30
−
0
View file @
0e7c8ab0
...
@@ -211,3 +211,33 @@ Ehhez használjuk a beépített `argparse` csomagot! Dokumentáció és példak
...
@@ -211,3 +211,33 @@ Ehhez használjuk a beépített `argparse` csomagot! Dokumentáció és példak
a szervert (
`server.shutdown()`
)!
a szervert (
`server.shutdown()`
)!
-
Teszteléshez használjuk a
`telnet`
programot. Pl.:
`$ telnet localhost 8000`
-
Teszteléshez használjuk a
`telnet`
programot. Pl.:
`$ telnet localhost 8000`
## 3.b Feladat - Port szkenner
**Feladat:**
Valósítsunk meg egy port szkanner funkciót, amely egy megadott hoszton ("www.google.hu")
végigszkenneli a "jól ismert" (well-known) portokat (1 - 1023). Eredményként írassuk ki a nyitott portokat.
Dolgozzunk a Python konzolban az egyszerűség végett.
-
Ehhez használjuk a segédletben emített
`scapy`
csomagot, amit a következő paranccsal telepíthetünk:
`pip3 install scapy`
-
A feladathoz nem kell szkriptet írni, elég interaktívan megvalósítani!
-
A
`scapy`
szintaktikára a segédletben linkelt oldalon találunk példákat vagy használjuk ezt az összefoglalót:
[
scapy_cheatsheet.pdf
](
https://qosip.tmit.bme.hu/foswiki/pub/Meres/PythonFeladatok/scapy_cheatsheet2.pdf
)
-
A csomagok összeállítására használjunk Layer 2-4 megközelítést (Ethenet + IP + TCP), az összefűzésre
a
`/`
operátor használható (
**Basic Packet Crafting / Viewing, Altering Packets**
blokk).
-
Érdekességképpen mentsük el a csomagot egy változóban és vizsgáljuk meg az automatikusan kitöltött mezőket
a
`.show()`
paranccsal.
-
Lehetőség van egy összefogott csomaghalmaz definiálására is: A vizsgálandó portokat
`tuple`
ként is megadhatjuk
(
`start`
,
`stop`
) formátumban(
**Altering Packets**
blokk). A
`scapy`
képes kezelni a mezőkhöz definiált
listákat/tupleket és Descartes-szorzatkét generálja ki az összes csomagot.
-
Küldésre használjuk a
`srp`
parancsot (
**Sending Packets**
blokk), a szkennelés végeztével állítsuk le a
próbálkozást CTRL+C kombinációval vagy a preferáltabb módon adjunk meg
`timeout`
értéket a küldéshez, 1s bőven elég.
-
Eredményként az
`srp`
parancs 2 értékkel tér vissza: 1. Sikeres request-response párok, 2. Válasz nélküli kérések.
Az eredmények a
`scapy`
saját osztályaiban vannak megvalósítva, de kezelhetőek listaként is a következő formátummal:
`srp() --> [ [ ( sikeres kérés1, kapott válasz1 ), ( sikeres kérés2, kapott válasz2 ), .... ], [ sikertelen kérések ...] ]`
-
Eredmény kiíratásához használhatjuk a
`.summary()`
vagy
`.show()`
függvényeit.
-
Vegyük a sikeresek listáját, azokból vegyük a válaszokat (
**Receiving and Analyzing Packets**
blokk).
A TCP részhez a
`.payload`
attribútumokon végigjárva vagy az általánosabb
`[]`
operátorral férhetünk hozzá,
aminek a kikért payload osztályát kell megadnunk (
`packet[TCP]`
).
-
Eredményként írassuk ki a kapott válaszok source portját (
`.sport`
attribútum), azaz a nyitott portokat,
amelyekről érkezett válasz.
This diff is collapsed.
Click to expand it.
solutions/1_feladat.md
+
2
−
2
View file @
0e7c8ab0
...
@@ -49,7 +49,7 @@ néven az előző feladatban megvalósított funkcióhoz!
...
@@ -49,7 +49,7 @@ néven az előző feladatban megvalósított funkcióhoz!
A forráskód:
A forráskód:
```
python
3
```
python
from
dns.resolver
import
query
from
dns.resolver
import
query
from
dns.exception
import
DNSException
from
dns.exception
import
DNSException
...
@@ -104,7 +104,7 @@ dns_tool.get_mx = get_mx(dns_name, type='MX')
...
@@ -104,7 +104,7 @@ dns_tool.get_mx = get_mx(dns_name, type='MX')
A forráskód:
A forráskód:
```
python
3
```
python
#!/usr/bin/env python3
#!/usr/bin/env python3
from
dns.resolver
import
query
from
dns.resolver
import
query
...
...
This diff is collapsed.
Click to expand it.
solutions/2_feladat.md
+
1
−
1
View file @
0e7c8ab0
...
@@ -5,7 +5,7 @@ Debian mirror szerverek elérhetőségéről, amit a futása végén ki is list
...
@@ -5,7 +5,7 @@ Debian mirror szerverek elérhetőségéről, amit a futása végén ki is list
A forráskód:
A forráskód:
```
python
3
```
python
#!/usr/bin/env python3
#!/usr/bin/env python3
import
ping3
import
ping3
import
pprint
import
pprint
...
...
This diff is collapsed.
Click to expand it.
solutions/3_feladat.md
+
58
−
1
View file @
0e7c8ab0
...
@@ -48,3 +48,60 @@ Tesztelés:
...
@@ -48,3 +48,60 @@ Tesztelés:
$
nc localhost 9999
$
nc localhost 9999
Mon Mar 7 17:56:58 2022
Mon Mar 7 17:56:58 2022
```
```
## 3.b Feladat - Port szkenner
**Feladat:**
Valósítsunk meg egy port szkanner funkciót, amely egy megadott hoszton ("www.google.hu")
végigszkenneli a "jól ismert" (well-known) portokat (1 - 1023). Eredményként írassuk ki a nyitott portokat.
A megoldás:
```
bash
$
pip3
install
scapy
$
sudo
python3
>>>
from scapy.all import
*
>>>
packet
=
Ether
()
/ IP
(
dst
=
"www.google.hu"
)
/ TCP
(
dport
=(
1,1023
))
>>>
packet.show
()
###[ Ethernet ]###
dst
=
00:00:0c:9f:f0:b6
src
=
00:50:b6:8d:fb:1a
type
=
IPv4
###[ IP ]###
version
=
4
ihl
=
None
tos
=
0x0
len
=
None
id
=
1
flags
=
frag
=
0
ttl
=
64
proto
=
tcp
chksum
=
None
src
=
152.66.182.33
dst
=
Net
(
"www.google.hu/32"
)
\o
ptions
\
###[ TCP ]###
sport
=
ftp_data
dport
=
(
1, 1023
)
seq
=
0
ack
=
0
dataofs
=
None
reserved
=
0
flags
=
S
window
=
8192
chksum
=
None
urgptr
=
0
options
=
''
>>>
ans,unans
=
srp
(
packet,timeout
=
1
)
Begin emission:
Finished sending 1023 packets.
.......
*
..................
*
................................................
Received 251 packets, got 2 answers, remaining 1021 packets
>>>
ans
<Results: TCP:2 UDP:0 ICMP:0 Other:0>
>>>
for
a
in
ans:
... print
(
a[1][TCP].sport
)
80
443
>>>
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment