`
zg049zg
  • 浏览: 13953 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

KBS的BBS系统灌水脚本

 
阅读更多

KBS的BBS系统灌水脚本
2009年12月07日
  基本上,是写一个脚本,定好一系列步骤,并用输出管道传与 telnet 程序:
  water.sh username passwd | telnet -8 forum.byr.edu.cn
  这多亏了 telnet 的作者没有考虑周全,标准输入不从 /dev/tty 读,而是从 stdin 读。换成ssh就没折了。
  这里面的Point是: KBS有很多状态,比如在看一篇文章时,是一个状态,这种状态下,它从客户接受输入,它判断输入的符号串,看是 数据 还是命令,比如你按 ^W 时,表示写好了你的文章,^W会使得客户端发送 027 (八进制)到服务器端,服务器读取后,发现是027,这是一个^W命令,而不是数据,就采取想应的操作。
  关键是,怎么样表示 ^W 的效果? 首先你可以用getchar()得到^W的整数值,打印出来看看是什么,发现是027,然后用 echo 的 -e 参数: echo -e "\027" (见man),这就会将一个值为027的ASCII字节传过去。 另外,注意用 -n,因为KBS的很多都是raw模式的,按个键就响应的,所以,不必要输入回车。
  我在xxx论坛测试成功,脚本如下:
  #!/bin/sh
  USERNAME="$1"
  PASSWORD="$2"
  sleep 2   #等待 telnet 启动完毕
  echo "$USERNAME"
  echo "$PASSWORD"
  sleep 2   #等待验证通过,如果是繁忙的站点,这个值和下面各个sleep的值都要取大点。
  # 下面三个在xxx站点上,跳过一系列需要按个键的地方,就是那种欢迎之类的,按下才跳过去。
  echo
  sleep 1
  echo
  sleep 1
  echo
  sleep 1
  # 选择哪个讨论区
  echo "S"
  sleep 1
  # 选择某个版面(是xx论坛的应该能看出来这是哪个版)
  echo "nic"
  sleep 1
  ########## below for a single reply with one cow ##########
  echo
  sleep 1
  echo -n "R"
  sleep 1
  cowsay "惊现某某两个马甲..."
  echo -n -e "\027"
  sleep 1
  echo "F"
  sleep 1
  exit 0
  ########## below for a single reply with many cows ##########
  #echo
  #sleep 1
  #echo -n "R"
  #sleep 1
  #
  #for file in `ls /usr/share/cows`
  #do
  #    #cowsay -f $file "皮皮封我,好难过,bad,too bad"
  #    cowsay -f $file "小沛生日快乐,挖卡卡"
  #    echo
  #    echo
  #    echo
  #done
  #echo
  #echo "自动灌水脚本哈,测试测试,这个可以用于良好目的的,比如自动更新帖子嘿嘿"
  #echo -n -e "\027"
  #sleep 1
  #echo "F"
  #sleep 1
  #
  #exit 0
  ########## below for replys‘ loop 用这个小心被封阿呵呵 ##########
  #for file in `ls /usr/share/cows`
  #do
  #    echo
  #    sleep 1
  #    echo -n "R"
  #    sleep 1
  #    echo
  #    sleep 1
  #    cowsay -f $file "小沛生日快乐,挖卡卡"
  #    echo -n -e "\027"
  #    sleep 1
  #    echo "F"
  #    sleep 1
  #done
  #exit 0
  over,当然了,你可以定制成任意的操作,只要你知道达成一个结果的操作序列。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics