참교육
scapy, RAW socket 본문
raw 소켓 공부하다가 알아낸 파이썬 모듈이다. ethernet, ip, tcp header들 모두 조작 가능하다.
from scapy.all import *
syn = IP(dst='127.0.0.1') / TCP(dport=80, flags='S')
syn_ack = sr1(syn)
getStr = 'POST / HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: 0\r\nAccept: */*\r\nOrigin:\r\n127.0.0.1\r\nX-Requested-With: XMLHttpRequest\r\nAccept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7\r\nConnection: close\r\n\r\n'
request = IP(dst='127.0.0.1') / TCP(dport=80, sport=syn_ack[TCP].dport,seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / getStr
reply = sr1(request)
위 예제는 웹 페이지로 보낼때 src_ip를 변경해서 보내는걸 해보고 싶었는데 3way handshaking 때문에 불가능하다고 깨달았다.
예제에서 보면 syn을 보내고 syn_ack를 받은 뒤에 ack를 보내지 않고 바로 http 통신을 하는데 이렇게 해도 통신은 된다.
일반 socket보다 공부하면 훨씬 편리해보인다.
'코딩 > Python' 카테고리의 다른 글
python yaml 설치 (0) | 2018.01.30 |
---|---|
ANGR 오류수정 (0) | 2017.07.04 |
Z3 Solver (0) | 2017.06.02 |