Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

참교육

scapy, RAW socket 본문

코딩/Python

scapy, RAW socket

순수어린이 2018. 8. 24. 01:15

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