saltor 2016-03-03 06:11 采纳率: 100%
浏览 2814
已采纳

python raw socket构造packet后能send,但是recv不了?

s = socket.socket(socket.AF_INET,
                  socket.SOCK_RAW,
                  socket.IPPROTO_RAW)
# IP Header
ipobj = IP(src_host, dst_host)
iph = ipobj.pack()
# TCP Header
tcpobj = TCP(1234, 80)
tcpobj.data_length = len(data)  # Used in pseudo header
tcph = tcpobj.pack(ipobj.source,
                   ipobj.destination)    

        # Injection
packet = iph + tcph + data    #构造好的packet

s.sendto(packet,(dst_host,80))
#s.connect((dst_host,80))不管是用send()还是sendto()都能发出去
response=s.recvfrom(1024)[0][0:]  #但是就是卡在这儿了,一直没有收到信息,不管是用recv()还是recvfrom()
    #response=s.recv(1024)
if response:
    ip = ipobj.unpack(response)
    response = response[ip.ihl:]
    tcp = tcpobj.unpack(response)
    print "IP Header:", ip.list
    print "TCP Header:", tcp.list

问题就是:构造的packet能够发出去,但是就是recv()没有收到任何信息,就一直卡在那里,加个settimeout的话,全部都是超时。我是想写个tcp syn扫描的。

参考代码的网址是:http://www.freebuf.com/articles/network/41127.html
https://github.com/OffensivePython/Pinject/blob/master/pinject.py

  • 写回答

3条回答 默认 最新

  • oyljerry 2016-03-05 01:25
    关注

    抓包分析一下,可能包直接被drop了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Acrn IVSHMEM doorbell问题
  • ¥15 yolov5中的val测试集训练时数量变小问题
  • ¥15 MPLS/VPN实验中MPLS的配置问题
  • ¥15 materialstudio氢键计算问题
  • ¥15 已知隐函数其中一个变量的,求另外一个变量
  • ¥15 echarts图表制作
  • ¥15 halcon根据玻璃面板纹路取区域
  • ¥15 HFSS设计小型化180度耦合器
  • ¥15 使用CInternetSession,CHttpFile读取网页文件时有些电脑上会卡住怎么办?
  • ¥15 水下机器人的半物理仿真研究