V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
302790951
V2EX  ›  问与答

python 在 osx 下发送原生数据包问题

  •  1
     
  •   302790951 · 2015-09-23 01:18:22 +08:00 · 2263 次点击
    这是一个创建于 3386 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是代码,只能在 linux 下运行,因为 osx 不支持 PF_PACKET ,只能用 AF_INET,记得以前用 AF_INET 发过原生数据,后悔当时没有记录代码。

    求问在 osx 下如何发送原生数据包!万分感谢!!

    !/usr/bin/python

    import socket
    rawSocket=socket.socket(socket.PF_PACKET,socket.SOCK_RAW,socket.htons(0x0800))

    rawSocket.bind(("eth0",socket.htons(0x0800)))

    packet='\x01\x0c\x29\x29\x4d\x89\x00\x50\x56\xc0\x00\x08\x08\x00\x45\x00\x00\x54\xcb\xab\x40\x00\x40\x01\x0b\x2b\xcc\xa8\x71\x01\xc0\xa8\x71\x80\x00\x00\x08\xa6\x0a\xb3\x00\x04\x41\x51\xf9\x55\xbc\xf8\x0a\x00\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37'

    rawSocket.send(packet)

    2 条回复    2015-09-23 09:21:21 +08:00
    TheCure
        1
    TheCure  
       2015-09-23 01:45:00 +08:00
    OS X 的 raw socket 有问题,我以前在写一些 SYN 扫描的脚本时候遇到过
    FreeBSD takes another approach. It *never* passes TCP or UDP packets to raw
    sockets.
    不确定是否能解决你的问题
    302790951
        2
    302790951  
    OP
       2015-09-23 09:21:21 +08:00 via iPhone
    @callofmx 说了一些明白了,但是没看到解决方法啊…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:36 · PVG 03:36 · LAX 11:36 · JFK 14:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.