Layer 4 계층 : L4 ▶ udp의 chksum 계산 pseudo=ip.src+ip.dst+b'\x00'+ip.type+udp.len+udp.get_header() udp.set_chksum(make_chksum(pseudo)) [ #vi udp.py ] import structclass Udp: def __init__(self,data=None): if data !=None: (self.src,)=struct.unpack('!H',data[:2]) (self.dst,)=struct.unpack('!H',data[2:4]) (self.len,)=struct.unpack('!H',data[4:6]) (self.chksum,)=struct.unpack('!H',data[6:8]) self.data=da..
1. 전부 더해준다 2. 올림수 제거 3. 1의 보수 체크 def make_chksum(header): size=len(header) #짝수를 맞춰줌 if (size %2) !=0 : header=header+b'\x00' size=len(header) header=struct.pack('!'+str(size//2)+'H',header) chksum=sum(header) #올림수 있는지 확인 carry=chksum & 0b_1111_1111_0000_0000_0000_0000 carry >>=16 while carry !=0: chksum =chksum & 0b_0000_0000_1111_1111_1111_1111 chksum =chksum +carry carry=chksum & 0b_1111_1111_..
▷ ip는 취약점이 없음 1. DoS( Denial of Service ) Attack - 서비스 거부 공격 - QoS (DoS 와는 반대되는 개념 ) Quality of Service >>>시험문제 많이 나옴 1) Tear Drop - fragment offset ( 아이피에 대한 취약점이 현재없기때문에 시험에는 나옴 ) 2) Smurf Attack - 출발지와 도착지 아이피를 조작 (IP Spoofing) - 목적지를 브로드 캐스트 아이피를 사용 - 출발지를 타겟 주소로 사용 ip.set_src('192.168.4.134') ip.set_dst('192.168.4.255') eth.set_dst('FF:FF:FF:FF:FF:FF') --> 응답이 한쪽으로 몰린다 (src의 아이피에 부하가 걸린다 ) ..
>> 이너뎃(Ethernet) 헤더 + 아이피(IP) 헤더 사용 Ethernet 헤더 : 같은 네트워크 상에서 Mac 주소를 이용한 통신 IP 헤더 : 다른 네트워크 상에 있는 호스트와 ip주소를 사용하여 통신 1. ip packet 을 통해서 전달할 데이터 데이터 : ICMP ( ping ) ICMP 메세지는 오류보고 메세지와 질의 메세지로 나뉨 오류보고 메세지 : 라우터나 호스트가 IP 패킷을 처리하는 도중에 탐지하는 문제를 보고 질의 메세지 : 호스트나 네트워크 관리자가 라우터나 다른 호스트로부터 특정 정보를 획득하기 위해 사용 2. ICMP 헤더 - 매우 단순한 구조 - 원래는 네트워크 상에 에러를 제어할 목적으로 나왔으나 현재는 잘 사용되지 않는다 - Internet Contorl Message..
- 대표적인 sinffing 기법중 하나 - ARP Spoofing 은 근거리 통신망(LAN) 하에서 주소 결정 프로토콜(ARP) 메세지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격기법 (Man In The Middle) - ARP 프로토콜 사용하므로 근거리상의 통신에서 사용할 수 있는 공격 ▷ ARP Spoofig --> 강력한 해킹 --> 차단이 어려움 --> 대량의 reguest >>공격 원리 B) >실습 A : 192.168.219.106 A Mac : 00:0c:29:fb:2e:6fB : 192.168.219.180 B Mac : 00:0c:29:52:30:daC : 192.168.219.102 C Mac : 00:0c:29:66:09:fc ▶ fragrouter 툴을 이용해..
>>다른 호스트와 통신을 하려고 한다면 호스트의 물리 주소(물리계층 : layer 2) 를 알아야 한다 그 맥주소로 이더넷 헤더를 완성 할 수 있다 물리 주소를 알아내기 위해 ARP 프로토콜을 사용 ▶ARP(Addess Resolution Protocol)--> 아이피 주소로 물리 주소를 확인 할 수 있는 프로토콜 - 주소 변환 프로토콜 - ip 주소를 물리적 네트워크(Mac Address 가 포함된 형태)로 변환하는데 사용되는 프로토콜 - ethernet type 중에 하나 : 0x0806 ! 데이터의 송 수신시 Mac 주소를 이용해 통신하는 네트워크계층에서 IP 주소로만 프레임을 전달하는 것은 불가능 ! 하드웨어의주소, MAC 주소를 알기위해 ARP 를 사용해 IP와 MAC 주소간의 동적매핑을 제공 ..
▶ 헤더를 직접 만들어서 데이터를 송 /수신 - 맥 어드레스(Mac Address)만 알고 잇으면 통신이 가능 - 맥 어드레스(Mac Address)는 반드시 알아야 한다 - 누가? L2 Swithch(S/W) --> 교환한다는 의미 ▷스위칭(switching) : 교환 ▷hub : L1의 대표적인 장비 1) 이더넷 클래스 수정 - 문자열이나 숫자를 입력 -> 바이트 형태로 변환 생성자가 있는 경우 인자를 받아들여서 맴버 구성 생성자 없는 경우 값이 없으므로 빈 것을 만듬 1> ' : ' 제거 dst=dst.split(':') 2> 형변환을 한번에 해줌 dst=[int(x)for x in dst] --> 16진수를 받아드릴려면 인자를 주면됨 dst=[int(x, 16) for x in dst] # vi ..
--> HUB(Dummy)가 식별이 불가능하기 때문에 고유번호를 부여함 장치마다고유값을 가지고 있음 :Mac address --> 상대방을 식별을 함 중요 3자리 : 3자리 vender 번호: 제조사가같으면 같다 -->L2 스위치 : 요즘 변형된 L2 이더넷헤더(Ethernet) : 출발지와 목적지에 대한 Mac Address를 가지고있는 것 a와b 가 통신을 하고있는 도중이다라고 한다면 c는 통신하면안된다는 규칙을 세우는 방법 --> 이 네트워크들은 충돌구간에 있다는 의미 Ethernet -->먼저 쓰는 사람이 임자(이더넷 방식) 안정석이 낮음(충돌이 자주 남) 그러나 빠르다 (충돌이 일어나지 않을때는 빠르고 안정적이다 ) ex) 토렌트를 사용하면 느려지는 이유 (속도가) -->대한민국이 쓰는 빵식--..
> 데이터 링크 계층 (Data-Link Layer) > 맨 앞에 14바이트 > 대표적인 프로토콜 : Ethernet, ARP,VPN(가상 사설망을 이용한 이론을 이용) > 주소 체계 : MAC(Media Access Control) Address > PDU(Protocol Data Unit) : 프레임(frame) > 가장 신뢰도가 높은 통신 구간 > 아이피 넷마스크 설정이 동일하다면 무조건 통신이 가능한 구간 > 물리적으로 같은 네트워크 (라우팅이 필요하지 않음) b"\x00PV\xcc\xcc\x14\x00\x0c) \x10\01\x08\x08\00E\x00\00!\x00\x00@\x11\xb0y\xc0\xa8\x041 \xc0\xa8\x04\x9a\xa0\x12'\x10\x00\rj\x88hello..
b"\x00PV\xcc\xcc \x00\x0c) \x10\01\x08\x08\00E\x00\x00!\x00\x00@\x00@\x11\xb3\xe2\xc0\xa8\x02\xb3\xc0\xa8\x04\x9a\xa0\x12'\x10\x00\rj\x88hello --> 네트워크 계층 (Network Layer)--> 데이터와 udp 헤더를 제외한 20 바이트 - 대표적인 프로토콜 : IP(Internet Protocol) version 4(IPv4) IPv6 - 경로 설정 (서로 다른 네트워크간의 통신) ->경로는 장비가 동작함 즉 정보만 구성을 해줘야 함 // 3계층의 핵심 역할 - 주소 체계 : IP address (version 4) ->아이피를 가지고 목적지를 구별하게 됨 -> ip 주소는 네트워크상에서..