11월, 2019의 게시물 표시

ARP Spoofing(1)

이미지
※ 주의사항 :  글쓴이는 공부를 목적으로 자기 자신 네트워크 에서 실습을 하였습니다.                   본 포스팅을 보고 실서버에서 사용은 금합니다. # 본 글의 내용을 악의적인 목적으로 사용시 그에 대한 법적 책임을 포함한 모든 책임은 전적으로 당사자에게 있으며 작성자는 어떠한 책임도 지지 않음을 알려드립니다. # 이글을 열람하는 것은 위 사항에 동의한 것으로 간주합니다. * ARP Spoofing - 가장 기본적인 도청 공격 - 동일한 네트워크를 사용하는 장치에 대해 수행할 수 있다 - 피해자는 자신이 도청당하고 있다는 사실을 눈치채기 어렵다 ARP = Address Resolution Protocol          : IP 주소에 해당하는 MAC주소를 유지/관리하는 프로토콜          : IP 주소 - 네트워크 장치에 할당된 논리적 주소            MAC 주소 - 네트워크 어댑터에 할당된 물리적 주소 ARP Spoofing 공격을 하기 위해 갖춰야할 네트워크 환경 - 공유기1대 또는 핫스팟이 가능한 모바일 1대 - 공격자 컴퓨터 1대 (우분투 OS) - 희생자 컴퓨터 1대 (Window OS) 현재 네트워크 상태는 하나의 공유기를 통해 희생자 컴퓨터PC는 랜선으로  공격자 PC는 노트북 을 통해 무선랜으로 네트워크를 사용중이다. 현재 밑에 사진은 공격자 PC에서 ettercap 이라는 해킹 툴을 통해 Host스캔을 했을때 뜨는 리스트이다 192.168.0.1 이 gateway 주소 192.168.0.11 이 희생자 PC의 현재 IP 192.168.0.12 는 스마트폰 의 할당된 IP이다 ...

절차 지향 vs 객체지향 프로그래밍

이미지
절차지향(procedural Programming)  절차지향 프로그래밍 은 물이 위에서 아래로 흐르는 것처럼 순차적인 처리 가 중요시 되고 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법을 말합니다. 대표적인 절차지향 언어에는 C언어가 있는데, 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다고 볼수 있습니다. 옛날에는 하드웨어와 소프트웨어의 개발 속도차이가 크지 않았다면 지금은 하드웨어의 개발속도가 소프트웨어의 속도를 따라오지 못하는 상황이 발생합니다.  이는 객제치향 언어 가 나타나면서 이러한 현상이 존재하게되었습니다.  장점 - 컴퓨터의 처리구조와 유사해 실행속도가 빠르다 - 메모리를 직접 조작할수있다. 단점 - 유지보수가 어렵다 - 실행 순서가 정해져 있어 코드의 순서가 바뀌면 동일한 결과를 보장하기 힘들다. - 원하는 기능의 코드를 가져와서 복붙하면 오류가 발생함 객체지향(Object Oriented Programming) 객제치향 은  절차지향 언어와 달리 실제 세계를 모델링 하여 소프트웨어를 개발할수 있다  우리가 흔히 보는 의자 책상 등 을 하나의 객체로 프로그래밍 할수 있는 것이다. 객제치향 프로그래밍에서는 데이터와 절차를 하나의 덩어리로 묶어서 생각해야되고 마치 컴퓨터 부품을 하나씩 모아서 조립하는 것처럼 각 기능들을 불러와서 자신이 원하는 소프트웨어를 개발하는 것이다. 1. 캡슐화 - 캡슐화란 관련된 데이터와 알고리즘(코드)이 하나의 묶음 으로 정리된 것으로    이러한 기능을 이용하여 개발자가 직접 개발하기 보다는 기존에 만들어져 있던 정형화된   코드들을 가져온다 , 관련된 코드와 데이터가 묶여있고 오류가 없어 사용이 편리하다.   또한 데이터를 감추고 외부 세계와의 상호작용은 메소드 를 통하는...

선형(순차) 탐색 알고리즘

이미지
오늘의 포스팅은 순차 탐색 또는 선형 탐색이라고도 불리는  "Linear Search (Sequential Search)" 알고리즘에 대해 써볼려고 합니다.   이 알고리즘은 탐색 알고리즘 중에서도 가장 기본이 되는 알고리즘 입니다.   "순차" 라는 단어를 보면 아마 다들 느낌이 오셨을 겁니다.   이 알고리즘은 그냥 다수의 데이터를 순차적으로 하나씩 조회 하면서 내가 찾고자 하는 아이템이 있는지를 탐색하는 것입니다. 찾고자하는 데이터를 찾을때 까지 모든 아이템을 검사하고 특정 데이터를 검사하게 되며 특정 데이터를 찾았을 경우에는 해당 아이템을 반환하고 알고리즘은 거기서 종료하게 됩니다. 간략하게 말하자면 10개의 데이터중 첫번째로 검색한 데이터가 내가 원하는 데이터이면 나머지 9개의 데이터는 조회할 필요없이 알고리즘은 종료됩니다. 못 찾았을 경우에는 모든 데이터를 다 검사하게 됩니다.                                   데이터를 따로 정렬하거나 건드릴 필요가 없고, 난이도가 쉬운 편이나, 데이터의 양이 많아지면 검색에 소요되는 시간도 비례하여 많아지고, 하나씩 일일이 비교하는 단점이 있기때문에 비효율적이라는 단점이 있습니다. 예를 들어 위와 같은 데이터를 데이터의 집합이 있을때 9를 찾을려면 7번의 비교를 거쳐야 합니다.   100만개의 데이터가 있고 찾을려하는 데이턱 100만번 째에 있다면 100만번의 비교를 해야 한다는 뜻입니다.   이와 같은 상황을 Worst Case라고 합니다. 관련되 용어로 평균적인 상황을 Average...

ADFGVX암호

이미지
 ADFGVX 암호문을 파이썬으로 완성했었는데   다시한번 짚어보며 써볼려고 합니다. ADFGVX 암호는 제1차 세계대전때 독일군이 처음 사용한 암호방식이라고 합니다.  ADFGVX 암호는 알파벳 26문자와 숫자 10개로 36문자로 이루어져 있습니다. - ADFGVX 암호 표 위에표는 ADFGVX암호이고 저렇게 6X6 행렬로 이루어져 있습니다. 이표를 보고 암호화를 하면 되는데요  표를 보는 방법을 설명하겠습니다. 평문을 gwangju 키를 secure로 정하겠습니다. 먼저 g 를 ADFGVX표로 암호문을 만들면 DA가 되는데요  예를 들어  숫자 5를 암호문으로 만들고 싶은면 5가 교차돼있는 지점이 X와D가 교차돼있는걸 볼수 있습니다. 제가 그려논 1번 2번순서로  왼쪽꺼부터 써주면 되요 즉, P를 암호문으로 하면 FG U를 암호문으로 하면 GF H를 암호문으로 하면 DD 이런식으로 암호문을 만들어주면 됩니다. ADFGVX암포 효를 보고 암홈누을 만들면  위에 표처럼 되는데 gwangju을 암호문으로 하면 DA GV AA FD DA DG GF이렇게 나옵니다. 아직 여기서 끝이아니고 아까 암호키를 SECURE라고 했는데 여기서 주의할게 SECURE에서 E가 중복되면 그러면 중복된문자나 숫자를 지워줘야됩니다. 이럴때 앞에 E와 뒤에 E가 있다면 뒤에것을 삭제하게 코드를 짜시면 되요 그러면 암호키는 SECUR이 최종형태로 되요 그럼 5x5행렬 표를 만들어주고 위에 SECUR를 써주고 밑에 채우는방법은  아까 나온 암호문을 처음부터 순서대로 DAGVAAFDDADGGF 로 채워줍니다 그런 한칸 모자라는데 패딩 값으로 P를 채워줍니다. 그리고  알파벳 순서대로 문자들을 다시 뽑아줘야 됩...