python에서 Packet Capture Library 없나하고 찾아보다가
pypcap을 알게 되었습니다.
근데 pypcap에 대한 정보가 의외로 많이 없더라고요,,,
(사실 제가 못찾는 거 같아요,,)
혹시라도 제 글을 보고
도움이 되실 수도 있으니 포스팅 해보도록 하겠습니댜!
https://pypcap.readthedocs.io/en/latest/
먼저 pypcap 사용 예는 위 사이트에 친절하게 설명되어있습니다.
위 코드를 먼저 보신 다음 아래 글을 참고해주세요!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def sniffer(ifs, count, firstgetpacket):
sniffer.setfilter('tcp and port 80') # HTTP
p = re.compile("GET ([a-zA-z0-9\/\.\_\?\=\&])* HTTP")
for ts, pkt in sniffer: # When a packet comes in ... start...
# packet check : print('%s\t' % str(pkt))
# GET packet
result = p.search(str(pkt))
if bool(result) is True:
print('%s\t' % str(pkt))
|
예제를 응용하여
HTTP GET 패킷을 스니핑하는 sniffer를 구현해봤습니다.
들어오는 패킷에서
sniffer.setfilter("tcp and port 80")
HTTP 필터를 걸어주고
p = re.compile("GET ([a-zA-Z0-9\/\.\_\?\=\&])* HTTP")
정규식을 통해 GET 패킷을 찾아준 후에
result = p.search(str(pkr))
일치하는 패킷의 결과를 받아
if bool(result) is True:
print('%s\t' % str(pkt))
GET 패킷을 출력해주시면 됩니다.
만약 GET 패킷이 아닌
모든 패킷을 스니핑하고 싶으시다면
print('%s\t' % str(pkt))
print(bool(result)
부분의 주석을 지우고 사용해주시면 됩니다. 간단하죵?!
그리고 만약
인터넷을 들어갔을 때의 패킷들은 잘 잡히지만
내가 보낸 패킷의 응답이 스니퍼에 잡히지 않는다면
인터페이스를 변경해주세요!
이후 위와 같이 내가 보낸 패킷을 확인할 수 있습니다.
http sniffer 전체 코드는 아래를 참고해주세요.
참고
https://www.programcreek.com/python/example/91670/pcapy.findalldevs
'Network' 카테고리의 다른 글
Wireshark filter 정리 (0) | 2022.07.26 |
---|---|
암호화/복호화, 암호 알고리즘 (0) | 2018.12.25 |
Form 태그, GET, POST 방식 (0) | 2018.12.25 |