re 모듈의 주요 메소드

compile(pattern[,flags]) : pattern을 컴파일하여 정규식 객체를 반환

match(pattern,string[,flags]) : string의 시작부분부터 pattern이 존재하는지 검사하여 MatchObject 인스턴스를 반환

search(pattern,string[,flags]) : string의 전체에 대해서 pattern이 존재하는 지 검사하여 MatchObject 인스턴스를 반환

split(pattern, string[,maxplit=0]) : pattern을 구분자로 string을 분리하여 리스트로 반환

findall(pattern, string[,flags]) : string에서 pattern을 만족하는 문자열을 리스트로 반환

finditer(pattern, string[,flags]) : string에서 pattern을 만족하는 문자열을 반복자로 반환

sub(pattern, repl, string[,count=0]) : string에서 pattern과 일치하는 부분에 대하여 repl로 교체하여 결과 문자열을 반환

subn(patter, repl, string[,count=0] : sub과 동일하나 결과(결과문자열, 매칭횟수)를 튜플로 반환

escape(string) : 영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴 (임의의 문자열을 정규식 패턴으로 사용할 경우 유용)

 

 

포트 스캐너

네트워크 소켓(socket)을 사용하여 특정 IP와 Port에 지속적으로 연결 요청을 보내는 작업을 수없이 반복하는 과정이 필요

socket 모듈을 import 한 후 connect() 함수를 호출하여 IP 주소와 포트 번호를 지정해주기

코드를 실행하면 TCP 연결을 수립하여 SYN/SYN-ACK/ACK하게 되고 send() 함수를 사용하여 데이터를 송신하거나 recv() 함수를 사용하여 데이터를 수신

개방되어 있지 않은 port에 대해서는 예외(exception)가 발생하는데, 소켓은 이것을 처리하기 위한 예외처리 루틴 수행(3-way handshake가 수립된 상태)

try~except 구문을 사용하여 닫혀 있는 포트를 무시하고 건너뛰는 형태로 작성할 수도 있음

이때 if문을 사용하여 open된 포트에 대해서만 결과물을 출력하도록 설정하고 조사하고자 하는 포트에 대해 리스트나 배열을 만들어둔 후 해당 값들에 대해서만 루프를 수행하여 조사하게 할 수도 있음

 

 

socket 모듈의 주요 메소드

socket() : 소켓 객체를 생성하는 함수

with as : 파일이나 소켓을 with as 구문으로 생성하면 후에 소멸할 때 close() 메소드를 호출하지 않아도 인터프리터가 자동으로 해줌

bind() : 서버를 만들 때 필요한 메소드로 튜플 형식을 받음

connect() : 클라이언트에서 서버에 접속하기 위해 AF가 인자로 들어가는데, (호스트 주소, 포트번호)로 구성된 튜플을 인자로 전달

listen() : 서버가 데이터 수신을 기다리는 상태로 인자 값으로 들어가는 숫자는 해당 소켓이 몇 개의 동시접속을 허용할 것인지의 의미

accept() : 소켓에 누군가가 접속하여 연결되었을 때 결과 값이 튜플로 return되는 함수로 return 값은 새로운 소켓과 상대방의 AF(Address Family)를 전달, 이 이후부터의 데이터 송수신은 새로운 소켓 이용

sendall()과 recv() : 데이터를 송수신하는 메소드, 클라이언트는 기존의 소켓으로 송수신을 하는 반면 서버는 accept()로 생성된 소켓으로 송수신을 함, 소켓은 턴 바이 턴 형식이기 때문에 데이터를 한 번 송신하면 다음은 수신해야 함

 

 

Nmap Port Scan

nmap을 사용하여 타겟 서버의 포트 개방 여부를 확인하고 어떤 프로세서가 러닝되고 있는지를 확인

 

 

1. os를 import 해줌

2. 첫번째 인자로 options, 두번째 인자로 ip address를 받는 함수 정의, 이때 –F 옵션을 사용하면 빠르고 개략적인 정보만을 보여줌

3. command에 nmap 명령어와 옵선, 스페이스와 IP 할당

4. command를 실행시키기 위해 popen() 메소드를 이용하여 지정

5. 위에서 지정된 process를 읽어들인 후 str() 메소드로 converting하여 results에 넣어주기

6. 저장된 results 반환

 

 

os 모듈의 주요 메소드

getcwd() : 현재 디렉토리 확인하기

chdir() : 디렉토리 변경

listdir() : 현재 디렉토리의 파일 목록 확인하기

read_csv() : csv 파일 호출

walk() : 파일이나 디렉토리의 목로을 얻기 위한 함수, 인수로 디렉토리명을 지저앟여 파일이나 특정 확장자의 목록, 파일 경로 취득 가능

path() : 파일이나 디렉토리의 존재를 확인하거나 지정한 경로의 파일명을 취득하거나 경로나 파일명의 결합 등의 용도로 사용

    exists() : 파일 및 디렉토리의 존재 확인. return값 Bool형

    isdir() : 디렉토리의 존재 여부 확인. return값은 Bool형

    isfile() 파일의 존재 여부를 확인. return값은 Bool형

    basename() : 지정된 경로의 파일명 리턴

    dirname() : 지정된 경로로부터 파일명을 제외한 것 리턴.

    split() : 지정된 경로의 파일명과 그 경로 리턴.

    splitext() : 지정된 파일의 확장자와 확장를 제외한 파일명까지의 경로를 리턴.

    join() : 경로와 파일명 등을 결합

environ() : 환경변수를 취득하거나 읽기 및 쓰기를 위해 사용, 환경변수란 시스템이 참고하고 있는 공통의 변수로 환경에 관련된 데이터나 공통으로 사용하는 파일의 경ㅇ로 등을 저장하기 위해 사용

 

 

robots.txt

웹을 만들 때 검색엔진에서 사이트를 프로그램으로 자동 저장하는 크롤링을 하는데 이때 민감한 페이지나 관리자 페이지 같은 것은 크롤링하지 못하게 텍스트 파일 형태로 작성해둔 것

 

 

1. urllib.request import

2. io import

3. url을 전달 받는 함수 정의

4. url이 ‘/’로 끝난다면 조건문 실행

5. 조건문이 참이면 path에 url 값 그대로 넣어주고 거짓이면 url 값에 ‘/’를 붙여 넣음

6. request 파일 만들기(어떤 사이트든 열어 그 값을 임의로 지정)

7. TextIOWrapper을 이용해서 data에 값 할당

8. return 값으로 위의 결과인 data 값 반환

 

 

sys 모듈 주요 메소드

파이썬 인터프리터를 제어할 수 있는 방법 제공

argv : 명령 행에서 인수 전달, 0번째는 스크립트 이름

exc_info() : 현재 발생한 예외 정보를 튜플로 반환 (예외가 없는 경우 None)

exit() : 강제로 스크립트 종료

path() : 자신이 만든 모듈 불러와서 사용하기

getrefcount(object) : 객체의 참조 카운트 값 반환

modules() : 현재 로딩되어 있는 모듈들을 사전 형태로 나타냄

 

 

파일 사용법

파일객체 = open(‘filename’,‘filemode’)

파일객체.write(‘string’)

파일객체.close()

with~as를 사용하면 자동으로 파일 객체를 닫을 수 있음

ex) with open(‘filename’,‘filemode) as 파일객체: 코드

파일객체.writelines(리스트) : 문자열로 된 리스트를 사용하여 파일에 한 번에 내용 작성

변수 = 파일객체.readline() or readlines() : 파일 내용 불러오기

pickle 모듈의 dump를 사용하여 객체들을 파일에 저장 가능

 

 

 

'2021-1 STUDY > Web Programming Study' 카테고리의 다른 글

scant3r_SQLI  (0) 2021.05.05
scant3r_SSTI  (0) 2021.05.05
Python  (0) 2021.03.27

+ Recent posts