免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6745 | 回复: 3
打印 上一主题 下一主题

使用python伪造DNS请求 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-23 17:11 |只看该作者 |倒序浏览
使用google,只搜到一个示例代码,是TCP SYN的,再想搜其他的资料就没有了。
下面是我写的伪造DNS REQUST的代码,参考了上面提到的代码


  1. #!/usr/bin/python

  2. import sys
  3. import libnet
  4. from libnet.constants import *

  5. l = libnet.context(
  6.                   RAW4,                        # The injection type
  7.                     'eth0'                       # Device name
  8.                       )

  9. dst_ip = l.name2addr4(
  10.                   '10.0.0.197', # Let's get the network byte ordered representation of this IP
  11.                     DONT_RESOLVE
  12.                       )

  13. src_ip = l.name2addr4(
  14.                   '10.0.0.31', # Let's get the network byte ordered representation of this IP
  15.                     DONT_RESOLVE
  16.                       )
  17. #query
  18. import struct
  19. query=struct.pack('b3sb4sb3sbbbbb',3,'www',4,'sina',3,'com',0,0,1,0,1)

  20. dns_tag = l.build_dnsv4(
  21.                         h_len=12,
  22.                         id=2,
  23.                         flags=256,
  24.                         num_q=1,
  25.                         num_anws_rr=0,
  26.                         num_auth_rr=0,
  27.                         num_addi_rr=0,
  28.                         payload=query,
  29.                         )


  30. udp_tag = l.build_udp(
  31.                    dp=53,                      # destination port
  32.                    sum=0,
  33.                    len=38,
  34.                          )


  35. # Now onto the IPv4 header
  36. #ipv4_tag = l.autobuild_ipv4(
  37. ipv4_tag = l.build_ipv4(
  38. #                   len=IPV4_H + UDP_H + 12,         # IPV4 packet length
  39.                       prot=IPPROTO_UDP,           # Protocol type
  40.                          dst=dst_ip,
  41.                          src=src_ip,
  42.                             )
  43. #send packet
  44. l.write()
复制代码

[ 本帖最后由 印随 于 2009-10-23 17:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-10-23 17:15 |只看该作者
系统需要安装libnet和pylibnet。
在构造DNS部分的时候,发现系统帮助build_dnsv4的语法是错误的,第一个参数应该是h_len,
经过实验,这个参数必须写,而系统帮助中没有提到这个参数

从安装libnet到伪造数据成功,花了将近7个小时,主要原因还是发现问题不去认真思考,
而是去不停的尝试,希望哪一次能够碰巧蒙对,真是浪费生命

论坛徽章:
0
3 [报告]
发表于 2009-10-23 17:17 |只看该作者
构造下面这个语句也花了近半个小时,主要是对struct模块不熟悉
query=struct.pack('b3sb4sb3sbbbbb',3,'www',4,'sina',3,'com',0,0,1,0,1)

基本上是凭着感觉写的,一步一步调试出来的

论坛徽章:
0
4 [报告]
发表于 2009-10-23 21:37 |只看该作者
好帖留名
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP