回答
原始套接字也很容易在蟒(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