回答
原始套接字也很容易在蟒(https://docs.python.org/2/library/socket.html,http://bt3gl.github.io/black-hat-python-building-a-udp-scanner.html)和组件(http://sock-raw.org/,必须适应此代码到x64组件,请参阅本64 bit version of socketcall system call Linux)
分组嗅探在蟒蛇(界面必须设置为promiscous模式):
import socket
import os
# host to listen
HOST = '192.168.1.114'
def sniffing(host, win, socket_prot):
while 1:
sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_prot)
sniffer.bind((host, 0))
# include the IP headers in the captured packets
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
if win == 1:
sniffer.ioctl(socket.SIO_RCVALL, socket_RCVALL_ON)
# read in a single packet
print sniffer.recvfrom(65565)
def main(host):
if os.name == 'nt':
sniffing(host, 1, socket.IPPROTO_IP)
else:
sniffing(host, 0, socket.IPPROTO_ICMP)
if __name__ == '__main__':
main(HOST)
复制自http://bt3gl.github.io/black-hat-python-building-a-udp-scanner.html
根据我的经验(主要是Ruby和C),原始套接字在大多数语言中都很容易使用。
你可能会考虑的问题是:
,你会用什么来轮询套接字数据?
即
select
仅限于1024个插槽,如果你没有访问kqueue
(BSD)或epoll
(Linux)上,你会从连接限制(你可能会或可能不会在意)受到影响。你的插座提供什么服务?
有些语言可以轻松地进行字符串操作,可以直接提供正则表达式和其他工具。有一个GC可能是一个性能问题,但它确实可以更容易编写大量的东西。
原始套接字只是一个图层,我会考虑方程中的其他图层。
至于Ruby工具,很多使用EM(Event Machine),我不太喜欢它。拥有这个强大的开发者社区应该对宝石产生积极的影响,所以这可能是一个很好的选择。
我也注意到Faye和Rails(ActionCable)选择了一个看起来很有前途的不同库,nio4r
。拥有这些强大的社区支持nio4r
将会改善图书馆(建立在libev
之上)。
我开始为我自己的项目编写一个库(最初是在Ruby中,但后来在C中使用了一个Ruby桥)......它仍在开发中,但我正在写这本书有一点重要 - 如果我设法做到了这一点,它不能那么难;-)
好运!
- 1. 支持哪些语言的nltk.word_tokenize和nltk.pos_tag
- 2. Eclipse不支持哪些编程语言?
- 3. Xcode 6支持哪些语言?
- 4. 在Mono中应该更好地支持哪些.NET功能?
- 5. IPv6原始套接字库?任何语言
- 6. 哪些.NET语言对扩展方法有语法支持?
- 7. 支持套接字的客户端浏览器语言/插件?
- 8. 哪些浏览器插件支持跨域TCP套接字?
- 9. 哪里更好地初始化字段?
- 10. 哪些编程语言可以支持变异测试?
- 11. Google Cloud Natural Language API支持哪些自然语言?
- 12. Hyperledger Fabric支持哪些编程语言和数据库?
- 13. Django支持哪些语言?我找不到完整的列表
- 14. 哪些Android设备支持en_CA语言环境?
- 15. 除C++外,哪些编程语言支持运算符重载?
- 16. 目前支持mixin的语言有哪些?
- 17. Facebook Messenger平台支持哪些语言环境?
- 18. iOS 4和5支持哪些语言环境?
- 19. 您认为哪些Eclipse支持很好?
- 20. Android多语言和少数语言支持语言不支持语言区域
- 21. C#套接字vs C++套接字,哪个更好?
- 22. recv与原始套接字
- 23. 使用原始套接字
- 24. UDP - 原始套接字 - C#
- 25. 支持RTL语言
- 26. 多语言支持
- 27. 多语言支持
- 28. EditText语言支持?
- 29. Yocto语言支持
- 30. Safari4HTML5套接字支持
不,C是答案 – Proxytype