【问题标题】:difference between `sr()` and `sniff()` scapy`sr()` 和 `sniff()` 之间的区别
【发布时间】:2016-11-26 07:44:39
【问题描述】:

我想知道sr()sniff() 之间的区别 我会澄清自己: 当我用sr() 发送数据包然后打印答案时,它只给了我一个数据包:

Received 1 packets, got 1 answers, remaining 0 packets
[(<IP  frag=0 ttl=64 proto=tcp dst=216.58.210.4 |<TCP  sport=37945 dport=http seq=1 ack=1477254816 flags=A |<Raw  load='GET /index.html HTTP/1.0 \n\n' |>>>, <IP  version=4L ihl=5L tos=0x0 len=40 id=1338 flags= frag=0L ttl=128 proto=tcp chksum=0xe12d src=216.58.210.4 dst=192.168.233.128 options=[] |<TCP  sport=http dport=37945 seq=1477254816 ack=28 dataofs=5L reserved=0L flags=A window=64240 chksum=0x5528 urgptr=0 |<Padding  load='\x00\x00\x00\x00\x00\x00' |>>>)]

但是当我用嗅探做同样的事情时,我得到了更多的数据包,其中一个是我问的答案的数据包:

<Ether  dst=00:0c:29:bb:8e:79 src=00:50:56:e9:b8:b1 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=537 id=1339 flags= frag=0L ttl=128 proto=tcp chksum=0xdf3b src=216.58.210.4 dst=192.168.233.128 options=[] |<TCP  sport=http dport=37945 seq=1477254816 ack=28 dataofs=5L reserved=0L flags=PA window=64240 chksum=0x98df urgptr=0 options=[] |<Raw  load='HTTP/1.0 302 Found\r\nCache-Control: private\r\nContent-Type: text/html; charset=UTF-8\r\nLocation: http://www.google.co.il/index.html?gfe_rd=cr&ei=_geSV8u1C6Xb8AeaxJCoDQ\r\nContent-Length: 271\r\nDate: Fri, 22 Jul 2016 11:48:14 GMT\r\n\r\n<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">\n<TITLE>302 Moved</TITLE></HEAD><BODY>\n<H1>302 Moved</H1>\nThe document has moved\n<A HREF="http://www.google.co.il/index.html?gfe_rd=cr&amp;ei=_geSV8u1C6Xb8AeaxJCoDQ">here</A>.\r\n</BODY></HTML>\r\n' |>>>>

如果你会看到 - 第二个数据包有我要求的 html 代码(那是嗅探它。)但首先没有这个。

【问题讨论】:

    标签: http packet scapy


    【解决方案1】:

    您可以在 scapy bash 中使用 lsc() 来检查所有必需的命令及其用法。

    sr : 在第 3 层发送和接收数据包

    sr1 : 在第 3 层发送数据包并仅返回第一个答案

    srp : 在第 2 层发送和接收数据包

    srp1 : 在第 2 层发送和接收数据包并仅返回第一个答案

    srloop : 在第 3 层循环发送一个数据包并每次打印答案

    srploop : 在第 2 层循环发送一个数据包并每次打印答案

    sniff : 嗅探数据包

    send : 在第 3 层发送数据包

    sendp : 在第 2 层发送数据包

    您可以使用 sniff(iface ="your interface", filter="dst aa:bb:cc:dd:ee") 来获取您想要的数据包。 sniff 函数有很多参数可以将数据包列入候选名单。

    【讨论】:

      【解决方案2】:

      sr() 是发送和接收数据包。该函数发送特定数据包,然后仅查找对这些数据包的响应

      sniff() 充当嗅探器并读取以太网线路上的所有流量,即使它不是指向您的 IP 地址或用于发送原始数据包的特定套接字。这使您可以查看网络上的其他流量

      【讨论】:

      • 那么我怎样才能通过“sr”而不是 Ack 消息获得 HTTP 答案?有可能吗?
      • 使用sr() 你应该会收到一个ACK。然后,发送一个 SYN/ACK,然后发送 TCP 负载
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2020-05-10
      • 2014-09-20
      • 2010-10-28
      • 2015-10-04
      • 2012-08-12
      相关资源
      最近更新 更多