파이썬이 내 네트워크를 청취하고 들어오는 모든 연결을 실행하는 동안 나열하도록하려고합니다. 그러나 나는 벽돌 벽에 부딪 쳤고, 어떻게 발견 할 수없는 것처럼 보였다. 어떤 제안? 파이썬 사용하기 2.7.3Python을 사용하여 Linux에서 들어오는 모든 연결을 나열합니다.
1
A
답변
2
@millimoose : 파이썬을 사용하는 모든 소켓에서 듣고 싶지는 않다고 생각합니다. 들어오는 모든 네트워크 연결을 나열 netstat
을 사용할 수 있습니다 Python bindings to libpcap
+0
그래,이 일을, 고마워 (: – Ajukilibodin
1
후 그들은 더 많은 가능성이 무엇입니까. http://voorloopnul.com/blog/a-python-netstat-in-less-than-100-lines-of-code/
0
귀하의 질문은 세부 사항에 매우 모호하지만, 당신이 원하는 모든 컴퓨터에 대한 인바운드 연결을 볼 경우, 당신은 그렇게 할 수 파이썬의 단지 몇 라인 : 사람도 netstat
의 파이썬 구현을 작성했습니다.
from socket import *
rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_TCP)
rawSocket.bind(('IP_ON_IFACE_TO_LISTEN_ON', 0))
while True:
data = rawSocket.recv(2048)
# http://en.wikipedia.org/wiki/IPv4#Packet_structure
# Internet Header Length; Have to determine where the IP header ends
ihl = ord(data[0]) & 15
ip_payload = data[ihl*4:]
# http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
# Match SYN but not SYN/ACK
if (ord(ip_payload[13]) & 18) == 2:
src_addr = inet_ntoa(data[12:16])
dst_addr = inet_ntoa(data[16:20])
# Could use struct.unpack, might be clearer
src_port = (ord(ip_payload[0]) << 8) + ord(ip_payload[1])
dst_port = (ord(ip_payload[2]) << 8) + ord(ip_payload[3])
src_str = (src_addr+':'+str(src_port)).ljust(22)
dst_str = (dst_addr+':'+str(dst_port))
print "%s=> %s" % (src_str, dst_str)
이렇게하면 RST 또는 ICMP 응답에 관계없이 SYN 플래그가 설정된 모든 인바운드 TCP 패킷이 인쇄됩니다. 귀하의 질문에 '들어오는 모든 연결 목록', UDP는 연결이 없기 때문에, 은으로 가정합니다.
FWIW
관련 문제
- 1. Python을 사용하여 Linux에서 사용자를 만드는 방법
- 2. ctypes를 사용하여 linux에서 C++과 python을 연결하십시오.
- 3. 들어오는 연결을 거부하는 방법?
- 4. Python을 사용하여 Linux에서 키 입력을 시뮬레이트
- 5. Python을 사용하여 Linux에서 키 누름 조합을 감지합니까?
- 6. RSpec은 보류중인 모든 예제를 나열합니다
- 7. 프로젝트의 모든 양식을 동적으로 나열합니다.
- 8. Zend_Gdata_Photos 모든 앨범과 사진을 나열합니다.
- 9. Google 플러스에서 모든 활동을 나열합니다.
- 10. 들어오는 연결을 모두 허용하도록 PostgreSQL을 구성하는 방법
- 11. Linux에서 Python을 사용하여 .sit 파일을 읽거나 쓰는 방법
- 12. PC/Linux에서 Python을 사용하여 Quicktime 무비의 시작 타임 코드를 읽음.
- 13. OSX 및 Linux에서 Python을 깨끗하게 다시 설치하기
- 14. Python을 사용하여 쿼리의 모든 파일 가져 오기
- 15. 들어오는 연결을 확인하는 방법은 로컬 컴퓨터에서입니다.
- 16. Erlang은 들어오는 TCP 연결을 동적으로 수락합니다.
- 17. 특정 주소에서 들어오는 연결을 차단하는 방법은 무엇입니까?
- 18. VirtualBox 내부의 서버에 들어오는 연결을 어떻게 허용합니까?
- 19. 내 모뎀에서 들어오는 연결을 검색하는 방법
- 20. Netty에서 들어오는 연결을 거부하는 방법은 무엇입니까?
- 21. NetworkManager와 Python을 사용하여 WiFi 액세스 포인트 연결을 끊으십시오.
- 22. 페이징 툴바는 Extjs2의 스토어에서 모든 행을 나열합니다.
- 23. jquery 유효성 검사를 사용하여 하나의 컨테이너에있는 모든 오류 메시지를 나열합니다.
- 24. SQLite는 데이터베이스의 모든 외래 키를 나열합니다.
- 25. C# 알고리즘 - 숫자의 모든 순열을 나열합니다.
- 26. 디렉토리와 하위 디렉토리에있는 모든 jpg 파일을 나열합니다.
- 27. Application_Start가 들어오는 모든 요청을 차단합니까?
- 28. 모든 syscall은 linux에서 복원됩니까?
- 29. Python을 사용하여 PATH에서 명령을 실행하십시오.
- 30. WCF 특정 계약을 구현하는 모든 클라이언트 끝점을 나열합니다.
여기에서 시작하십시오 : http://docs.python.org/library/socket.html. 또한 아마도 (C 기반) 소켓 API 튜토리얼은 Python 표준 라이브러리가 상당히 밀접하게 반영하기 때문에 가능합니다. (어떤 것이 좋을지는 모르겠지만 링크 된 문서는 몇 가지를 언급합니다.) – millimoose
벽돌 벽을 정확히 쳤을 때 확장하십시오. 파이썬 인터프리터 시작하기? 사용할 라이브러리 찾기? 라이브러리를 사용하고 있습니까? – Kevin
포트에서 수신 대기 중이거나 파이썬 응용 프로그램에서 네트워크를 적극적으로 감지하는 것에 대해 이야기하고 있습니까? – Drahkar