π¦ Python μ½λλ₯Ό νμ©ν UDP μλ²μμμ 컀μ€ν λ©μμ§ Packet μ‘·μμ
1. κ°μνκ²½ μ€ν ν Terminal λ‘ μ μ
2. Command Lineμ μλμ κ°μ΄ μ λ ₯νμ¬ μ€νν Python νμΌ μμ±
$ nano udpPacket.py
++ nano λͺ λ Ήμ΄
$ nano [μμ±νκ±°λ νΈμ§ν νμΌλͺ
]
nanoλ ν°λ―Έλ λλ λͺ λ Ήμ€ μΈν°νμ΄μ€(CLI)μμ κ°λ¨ν ν μ€νΈ νμΌμ μμ±νκ±°λ νΈμ§νλ λ° μ¬μ©λλ λͺ λ Ήμ΄μ΄λ€.
nano λͺ λ Ήμ΄μ μ¬μ© νμμ μμ κ°μΌλ©°, νμΌμ΄ μ‘΄μ¬νμ§ μμ κ²½μ° ν΄λΉ νμΌμ μμ±νκ³ μ΄λ―Έ νμΌμ΄ μ‘΄μ¬νλ κ²½μ° νΈμ§ κ°λ₯ν μ°½μ λμ΄λ€.
3. μλμ κ°μ΄ μ½λ μμ± ν Ctrl + O μ Ctrl + X λ₯Ό μ°¨λ‘λ‘ λλ¬ νμΌ μ μ₯
#!/usr/bin/python3
# Target ip = 10.0.2.15
import socket
IP = "0.0.0.0"
PORT = 9090
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((IP, PORT))
while True:
γ
€γ
€γ
€γ
€data, (ip, port) = sock.recvfrom(1024)
γ
€γ
€γ
€γ
€print("Sender: {} and Port: {}".format(ip, port))
γ
€γ
€γ
€γ
€print("Received message: {}".format(data))
++ μ½λ μ€λͺ μμΈ
μ½λ | μ€λͺ |
import socket | λ€νΈμν¬ ν΅μ κ΄λ¦¬λ₯Ό μν socket λΌμ΄λΈλ¬λ¦¬λ₯Ό μν¬νΈ |
IP = "0.0.0.0" | μμΌμ΄ λ°μΈλ©λ IP μ£Όμ μ€μ (0.0.0.0 μ λͺ¨λ μΈν°νμ΄μ€λ₯Ό μλ―Έ) |
PORT = 9090 | μμΌμ΄ λ°μΈλ©λ ν¬νΈ λ²νΈ μ€μ |
sock = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) |
AF_INETμ΄ IPv4 μ£Όμ ν¨λ°λ¦¬λ₯Ό μ¬μ©νκ³ , SOCK_DGRAMμ UDP νλ‘ν μ½μ μ¬μ©νλ μμΌμ μμ± |
sock.bind((IP, PORT)) | μμΌμ IP μ£Όμμ ν¬νΈ λ²νΈμ λ°μΈλ© |
while True: | UDP ν¨ν·μ μμ λ° μ²λ¦¬νλ 무ν 루ν μ½λ |
data, (ip, port) = sock.recvfrom(1024) | μμΌμ ν΅ν΄ μ΅λ 1024 Byteμ λ°μ΄ν°λ₯Ό μμ ν λ€ IPμ£Όμμ ν¬νΈ λ²νΈλ₯Ό λ³μμ μ μ₯ |
print("Sender: {} and Port: {}".format(ip, port)) | λ°μ΄ν°λ₯Ό λ³΄λΈ ν΄λΌμ΄μΈνΈμ IP μ£Όμμ ν¬νΈ λ²νΈλ₯Ό μΆλ ₯ |
print("Received message: {}".format(data)) | μμ ν λ©μμ§ λ΄μ© μΆλ ₯ |
4. Command Lineμ μλμ κ°μ΄ μ λ ₯νμ¬ Python νμΌ μ€ν
$ sudo python3 udpPacket.py
++ sudo & νμΌ μ€ν λͺ λ Ήμ΄
$ sudo [μ¬μ©ν μΈν°ν리ν°] [μ€νν νμΌλͺ
].py
sudo λͺ λ Ήμ΄λ μνΌ μ μ (Super User) κΆνμΌλ‘ λͺ λ Ήμ μ€ννκΈ° μν΄ μ¬μ©λλ©°, μ¬μ©ν μΈν°ν리ν°μ μ’ λ₯μ μ€νν νμΌλͺ μ λ€μ΄μ΄ μ λ ₯νλ©΄ νμΌμ μ½λκ° μ€νλλ€.
5. νμΌμ μ€νμν¨ μνμμ μ°μΈ‘ μλ¨μ λ°λ₯Ό λλ¬ New Window ν΄λ¦
6. μλ‘μ΄ μ°½μμ nc(netcat) λͺ λ Ήμ΄λ₯Ό μλμ κ°μ΄ μ λ ₯ ν Enter ν΄λ¦
$ nc -u 10.0.2.15 9090
++ netcat (nc) λͺ λ Ήμ΄
$ nc -[μ΅μ
] [λͺ
λ Ήμ΄ μμ ν Port Number]
netcat (nc) λͺ λ Ήμ΄λ λ€νΈμν¬ μ°κ²°μ μμ± λ° κ΄λ¦¬νλ μν μ μννλ μ νΈλ¦¬ν°λ‘, λ€μν μ΅μ λ€κ³Ό ν¨κ» μ¬μ©ν μ μλ€.
μμ κ°μ μ¬μ© νμμ κ°μ§λ©°, λͺ λ Ήμ΄ μ€ν μ μ§μ ν ν¬νΈμμ λ€μ΄μ€λ λ€νΈμν¬ μ°κ²°μ μμ νκ³ ν΄λΉ μ°κ²°μ λν λ°μ΄ν°λ₯Ό νμνλ€.
nc λͺ λ Ήμ΄ μ΅μ | μ€λͺ |
- l | ncλ₯Ό 리μ€λ λͺ¨λ, μ¦ μ°κ²° μμ²μ μμ νλ λͺ¨λλ‘ μ€μ |
- n | νΈμ€νΈ λ° ν¬νΈλ₯Ό μ«μλ‘ νμνκ³ DNS μ΄λ¦ ν΄μμ λΉνμ±ν |
- u | UDP νλ‘ν μ½μ μ¬μ©νμ¬ μ°κ²°μ μμ |
- v | μ°κ²° λ° λ°μ΄ν° μ μ‘κ³Ό κ΄λ ¨λ μ 보λ₯Ό μμΈνκ²(verbose) νμ |
7. μλ‘μ΄ μ°½μμ μ μ‘νκ³ μ νλ λ¬Έμμ΄ μ λ ₯ --> μ΄μ μ°½μμ μ±κ³΅μ μΌλ‘ λ©μΈμ§λ₯Ό λ°μ μΆλ ₯νλ κ²μ νμΈ
μ λ ₯ν λ¬Έμμ΄μ 'hello'