三款小偷程序(ASP.NET)

1、
MP3資源都在互聯網上,有時聽不了也是正常,但大多數不好用,真是用處不大了。仔細分析了一下它的源碼,原來是讀取目錄下的1.xml,2.xml..4.xml文件。我經常在番茄花園聽歌,也就是http://www.tomatolei.com,就想能不能把番茄的MP3資源放到這裏來放呢?這不就是大家常說的MP3小偷的功能嗎?說幹就幹!

  1、分析一下番茄花園的歌來源: PageUrl = "http://tomatolei.com/bbs/T_playlist.asx";

  2、目標地址:1.xml

  3、用程序轉換格式:

  前臺:

<%@ Page language="c#" Codebehind="ReadAndWriteXml.aspx.cs" AutoEventWireup="false" Inherits="讀取番茄花園的MP3.ReadAndWriteXml" validateRequest=false%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>讀取番茄花園MP3列表</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋體">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 32px" runat="server"
Width="312px" Height="240px" TextMode="MultiLine"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 160px; POSITION: absolute; TOP: 288px" runat="server"
Width="96px" Text="修正~"></asp:Button></FONT></form>
</body>
</HTML>

  後臺:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
namespace 讀取番茄花園的MP3
{
  /// <summary>
  /// WebForm1 的摘要說明。
  /// </summary>
  public class ReadAndWriteXml : System.Web.UI.Page
  {
   protected System.Web.UI.WebControls.TextBox TextBox1;
   protected System.Web.UI.WebControls.Button Button1;
   private string PageUrl = "";

   private void Page_Load(object sender, System.EventArgs e)
   {
    // 在此處放置用戶代碼以初始化頁面
    if(!IsPostBack)
    {
     ///首先讀取番茄花園的acx文件(http://tomatolei.com/bbs/T_playlist.asx)
     ///
     PageUrl = "http://tomatolei.com/bbs/T_playlist.asx";
     WebClient wc = new WebClient();
     wc.Credentials = CredentialCache.DefaultCredentials;
     Byte[] pageData = wc.DownloadData(PageUrl);
     string Result = Encoding.Default.GetString(pageData);
     TextBox1.Text=Result;

    }
   }

   #region Web 窗體設計器生成的代碼
   override protected void OnInit(EventArgs e)
   {
    //
    // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
   }

   /// <summary>
   /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
   /// 此方法的內容。
   /// </summary>
   private void InitializeComponent()
   {
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load);
   }
   #endregion

   private void Button1_Click(object sender, System.EventArgs e)
   {
    string temp=TextBox1.Text;
    TextBox1.Text="<musics firstRun=/"1/">";
    TextBox1.Text+=temp;

    TextBox1.Text=TextBox1.Text.Replace("<Asx Version=3.0>","");
    TextBox1.Text=TextBox1.Text.Replace("<Param Name=/"AllowShuffle/" Value=/"yes/"/> ","");
    TextBox1.Text=TextBox1.Text.Replace("</Asx>","");

    TextBox1.Text=TextBox1.Text.Replace("</Entry>","");
    TextBox1.Text=TextBox1.Text.Replace("<Entry>","");

    TextBox1.Text=TextBox1.Text.Replace("<Title>","<music name=/"");
    TextBox1.Text=TextBox1.Text.Replace("</Title>","/"");
 
    TextBox1.Text=TextBox1.Text.Replace("<Ref href=","addres=");

    TextBox1.Text+="</musics>";

    //TextBox1.Text=TextBox1.Text.Replace("/r/n","");
    /// 下面開始生成 1.xml文件
    ///
    StreamWriter swFromFileStreamUTF8Buffer=new StreamWriter(Server.MapPath("./")+"1.xml",false,System.Text.Encoding.UTF8,512);
    swFromFileStreamUTF8Buffer.Write(TextBox1.Text);
    swFromFileStreamUTF8Buffer.Flush();
    swFromFileStreamUTF8Buffer.Close();
   }
  }
}

2、
在.Net 平臺下,創建一個ASP.Net的程序

1、引用兩個NAMESPACE

using System.Text //因爲用了Encoding類

using System.Net //因爲用了WebClient 類

2、整個程序用了三個控件

txtUrl //輸入你要獲取的網頁地址 TEXTBOX控件

txtBody //得到你要獲取的網頁內容 TEXTBOX控件

btnReturn //按鈕BUTTON控件

3、在***.aspx.cs下的代碼

private void btnReturn_Click(object sender, System.EventArgs e)
{
string url=txtUrl.Text.Trim(); //獲取輸入的網頁地址


WebClient wb=new WebClient(); //創建一個WebClient實例

//獲取或設置用於對向 Internet 資源的請求進行身份驗證的網絡憑據。(可有可無)
//wb.Credentials=CredentialCache.DefaultCredentials;

//從資源下載數據並返回字節數組。(加@是因爲網址中間有"/"符號)
byte[] pagedata=wb.DownloadData(@url);

//轉換字符、
string result=Encoding.Default.GetString(pagedata);


txtBody.Text=result;
}

4、字***.aspx的HTML代碼中加入一條代碼

在第一行代碼<%@ page=.............................%> 中加入validateRequest=false

 

 

總結:整個代碼不過才幾行,而且還不用操心亂碼的事情,我是昨天自己在幫助文檔裏偶然看見的,其實WebClient類有很多下載資源和上載資源的方法,有興趣的朋友可以看看下面有關WebClient類的幫助文檔:

WebClient 類請參見
WebClient 成員 | System.Net 命名空間 | WebRequest | WebResponse | HttpWebRequest |

HttpWebResponse | WebClient 成員(Visual J# 語法) | C++ 託管擴展編程
要求
命名空間: System.Net

平臺: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP

Professional, Windows Server 2003 系列

程序集: System (在 System.dll 中)

.NET Framework 安全性:

WebPermission,用於訪問所請求的 URI 或請求被重定向到的任何 URI。關聯的枚舉:Connect。
語言
C#

C++

JScript

Visual Basic

全部顯示
提供向 URI 標識的資源發送數據和從 URI 標識的資源接收數據的公共方法。不能繼承此類。

有關此類型所有成員的列表,請參閱 WebClient 成員。

System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient

[Visual Basic]
<ComVisible(True)>
NotInheritable Public Class WebClient
Inherits Component

[C#]
[ComVisible(true)]
public sealed class WebClient : Component

[C++]
[ComVisible(true)]
public __gc __sealed class WebClient : public Component

[JScript]
public
ComVisible(true)
class WebClient extends Component

線程安全
此類型的所有公共靜態(Visual Basic 中爲 Shared)成員對多線程操作而言都是安全的。但不保證任何實例

成員是線程安全的。

備註
WebClient 類提供向 URI 標識的任何本地、Intranet 或 Internet 資源發送數據以及從這些資源接收數據的

公共方法。

WebClient 類使用 WebRequest 類提供對 Internet 資源的訪問。WebClient 實例可以通過任何已向

WebRequest.RegisterPrefix 方法註冊的 WebRequest 子代訪問數據。

注意 默認情況下,.NET Framework 支持以 http:、https: 和 file: 方案標識符開頭的 URI。
WebClient 類提供四種將數據上載到資源的方法:

OpenWrite 返回一個用於將數據發送到資源的 Stream。
UploadData 將字節數組發送到資源並返回包含任何響應的字節數組。
UploadFile 將本地文件發送到資源並返回包含任何響應的字節數組。
UploadValues 將 NameValueCollection 發送到資源並返回包含任何響應的字節數組。
WebClient 類還提供三種從資源下載數據的方法:

DownloadData 從資源下載數據並返回字節數組。
DownloadFile 從資源將數據下載到本地文件。
OpenRead 從資源以 Stream 的形式返回數據。
要求
命名空間: System.Net

平臺: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP

Professional, Windows Server 2003 系列

程序集: System (在 System.dll 中)

.NET Framework 安全性:

WebPermission,用於訪問所請求的 URI 或請求被重定向到的任何 URI。關聯的枚舉:Connect。

3、
Imports System.net
Imports System.io
Public Class WebForm1
    
Inherits System.Web.UI.Page
 
Public web As New WebClient
    
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
'讀網頁源文件先
        If Session("aaa"= "" Then
            
Dim str As Stream
            
str = web.OpenRead("http://www.023ehouse.com")
            
Dim read As New StreamReader(str, System.Text.Encoding.GetEncoding("GB2312"))
            
Dim html As String = read.ReadToEnd()
            
'接下來當然是分析源文件,提出自己要用的了
            Dim aaa, bbb, ccc '這裏定義的都是用來處理結果的,要把中間自己要用的新聞給截取出來
            aaa = CStr(html)
            bbb 
= Split(aaa, "<div id=""onlinemb_05"">")
            aaa 
= bbb(1)
            ccc 
= Split(bbb(1), "</div>")
            aaa 
= ccc(0)

            
'這裏是把新聞地址轉到自己的新聞顯示頁面,把本來的新聞地址當參數傳給頁面
            aaa = Replace(aaa, "href=""""href=""newsshow.asp?url=http://www.023ehouse.com/")
            aaa 
= Replace(aaa, "target=""_blank""""")

            
'這裏就是寫session了
            Session("aaa"= aaa

        
End If

        
'最後把處理好的輸出
        Response.Write(Session("aaa"))
   
End Sub

End Class

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章