λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
βœ’οΈ Network Communications & Security

[Network Communications & Security] SEED Ubuntu(μš°λΆ„νˆ¬) 컀널을 μ‚¬μš©ν•œ Packet 전솑

by A Lim Han 2023. 9. 13.

πŸ¦‹ SEED Ubuntu(μš°λΆ„νˆ¬) 컀널을 μ‚¬μš©ν•œ νŒ¨ν‚· 전솑 μ‹€μŠ΅

1.  κ°€μƒν™˜κ²½ μ‹€ν–‰ ν›„ Terminal 둜 접속

2.  Command Line에 μ•„λž˜μ™€ 같이 μž…λ ₯ν•˜μ—¬ μ‹€ν–‰ν•  Python 파일 생성 

$ nano packetTest.py

 


++  nano λͺ…λ Ήμ–΄

$ nano [μƒμ„±ν•˜κ±°λ‚˜ νŽΈμ§‘ν•  파일λͺ…]
 nanoλŠ” 터미널 λ˜λŠ” λͺ…령쀄 μΈν„°νŽ˜μ΄μŠ€(CLI)μ—μ„œ κ°„λ‹¨ν•œ ν…μŠ€νŠΈ νŒŒμΌμ„ μƒμ„±ν•˜κ±°λ‚˜ νŽΈμ§‘ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λͺ…령어이닀.

 nano λͺ…λ Ήμ–΄μ˜ μ‚¬μš© ν˜•μ‹μ€ μœ„μ™€ κ°™μœΌλ©°, 파일이 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 ν•΄λ‹Ή νŒŒμΌμ„ μƒμ„±ν•˜κ³  이미 파일이 μ‘΄μž¬ν•˜λŠ” 경우 νŽΈμ§‘ κ°€λŠ₯ν•œ 창을 λ„μš΄λ‹€.

3.  μ•„λž˜μ™€ 같이 μ½”λ“œ μž‘μ„± ν›„ Ctrl + O 와 Ctrl + X λ₯Ό μ°¨λ‘€λ‘œ 눌러 파일 μ €μž₯

!/bin/env python3

import socket

data = b"Hello, Server\n"
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

udp.sendto(data, ("10.0.2.15", 9090))

 


++  μ½”λ“œ 상세 μ„€λͺ…

Line μ½”λ“œ μ„€λͺ…
3 import socket λ„€νŠΈμ›Œν¬ 톡신을 μœ„ν•œ μ†ŒμΌ“ import
5 data = b"Hello, Server\n" 전솑할 데이터λ₯Ό data λ³€μˆ˜μ— μ €μž₯
5 data = b"Hello, Server\n" 'b' μ ‘λ‘μ‚¬λŠ” byte λ¬Έμžμ—΄μ„ μ˜λ―Έν•¨
6 udp = socket.socket
(socket.AF_INET,
socket.SOCK_DGRAM)
UDP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λŠ”
μ†ŒμΌ“ 생성
6 udp = socket.socket
(socket.AF_INET,
socket.SOCK_DGRAM)
AF_INET은
IPv4 μ£Όμ†Œ νŒ¨λ°€λ¦¬ μ‚¬μš©
6 udp = socket.socket
(socket.AF_INET,
socket.SOCK_DGRAM)
SOCK_DGRAM은
λ°μ΄ν„°κ·Έλž¨ ν˜•μ‹μ˜ μ†ŒμΌ“ 생성
8 udp.sendto
(data, ("10.0.2.15", 9090))
udp μ†ŒμΌ“μ„ μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό
νŠΉμ • μ£Όμ†Œ 및 포트둜 전솑
8 udp.sendto
(data, ("10.0.2.15", 9090))
데이터 μˆ˜μ‹  μ„œλ²„μ˜ IP μ£Όμ†ŒλŠ”
10.0.2.15
8 udp.sendto
(data, ("10.0.2.15", 9090))
데이터 μˆ˜μ‹  μ„œλ²„μ˜
포트 λ²ˆν˜ΈλŠ” 9090

4.  Command Line에 μ•„λž˜μ™€ 같이 μž…λ ₯ν•˜μ—¬ Python 파일 μ‹€ν–‰

$ sudo python3 packetTest.py

 


++  sudo & 파일 μ‹€ν–‰ λͺ…λ Ήμ–΄

$ sudo [μ‚¬μš©ν•  인터프리터] [μ‹€ν–‰ν•  파일λͺ…].py
 sudo λͺ…λ Ήμ–΄λŠ” 슈퍼 μœ μ €(Super User) κΆŒν•œμœΌλ‘œ λͺ…령을 μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©°, μ‚¬μš©ν•  μΈν„°ν”„λ¦¬ν„°μ˜ μ’…λ₯˜μ™€ μ‹€ν–‰ν•  파일λͺ…을 뒀이어 μž…λ ₯ν•˜λ©΄ 파일의 μ½”λ“œκ°€ μ‹€ν–‰λœλ‹€.

5.  νŒŒμΌμ„ μ‹€ν–‰μ‹œν‚¨ μƒνƒœμ—μ„œ 우츑 μƒλ‹¨μ˜ λ°”λ₯Ό 눌러 New Window 클릭

6.  μƒˆλ‘œμš΄ μ°½μ—μ„œ nc(netcat) λͺ…λ Ήμ–΄λ₯Ό μ•„λž˜μ™€ 같이 μž…λ ₯ ν›„ Enter 클릭

$ nc -lnuv 9090

 


++  netcat (nc) λͺ…λ Ήμ–΄

$ nc -[μ˜΅μ…˜] [λͺ…령이 μˆ˜μ‹ ν•  Port Number]
 netcat (nc) λͺ…λ Ήμ–΄λŠ” λ„€νŠΈμ›Œν¬ 연결을 생성 및 κ΄€λ¦¬ν•˜λŠ” 역할을 μˆ˜ν–‰ν•˜λŠ” μœ ν‹Έλ¦¬ν‹°λ‘œ, λ‹€μ–‘ν•œ μ˜΅μ…˜λ“€κ³Ό ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλ‹€.

 μœ„와 같은 μ‚¬μš© ν˜•μ‹μ„ 가지며, λͺ…λ Ήμ–΄ μ‹€ν–‰ μ‹œ μ§€μ •ν•œ ν¬νŠΈμ—μ„œ λ“€μ–΄μ˜€λŠ” λ„€νŠΈμ›Œν¬ 연결을 μˆ˜μ‹ ν•˜κ³  ν•΄λ‹Ή 연결에 λŒ€ν•œ 데이터λ₯Ό ν‘œμ‹œν•œλ‹€.

 

nc λͺ…λ Ήμ–΄ μ˜΅μ…˜ μ„€λͺ…
- l ncλ₯Ό λ¦¬μŠ€λ‹ λͺ¨λ“œ, 즉 μ—°κ²° μš”μ²­μ„ μˆ˜μ‹ ν•˜λŠ” λͺ¨λ“œλ‘œ μ„€μ •
- n 호슀트 및 포트λ₯Ό 숫자둜 ν‘œμ‹œν•˜κ³ 
DNS 이름 해석을 λΉ„ν™œμ„±ν™”
- u UDP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ μ—°κ²°μ„ μˆ˜μ‹ 
- v μ—°κ²° 및 데이터 전솑과 κ΄€λ ¨λœ 정보λ₯Ό μžμ„Έν•˜κ²Œ(verbose) ν‘œμ‹œ

7.  λ‹€μ‹œ κΈ°μ‘΄ 창으둜 λŒμ•„μ™€ sudo λͺ…λ Ήμ–΄λ₯Ό ν•œλ²ˆ 더 μž…λ ₯

$ sudo python3 packetTest.py

8.  κΈ°μ‘΄ μ°½μ—μ„œ λͺ…λ Ήμ–΄ μž…λ ₯ ν›„, μƒˆλ‘œ μΆ”κ°€ν•œ 창으둜 이동  -->  Data λ³€μˆ˜ 속 λ°”μ΄νŠΈ λ¬Έμžμ—΄μ΄ μ„±κ³΅μ μœΌλ‘œ μ „μ†‘λ˜μ—ˆμŒμ„ 확인