VB.NET编写的Windows服务-等待外部连接(类似木马)  
发布时间: 2008-6-27 文章流量: 3849 次 文章来源: 本站
作品名称   VB.NET编写的Windows服务-等待外部连接(类似木马)  
作品编号  
编程工具  
数 据 库  
论文字数   2000 字
运行环境  
论文价格   200 元
推荐指数   ☆☆☆☆☆
包含内容  
整理日期  
作品简介

Imports System.Net
Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports System.ComponentModel
Imports System.Xml
Imports System.Threading
Imports Microsoft.VisualBasic
Imports System.ServiceProcess
Imports System.Management
Imports System.Net.Sockets
Imports System.Text
Public Class MyService
    Inherits System.ServiceProcess.ServiceBase
    Public N As Integer
    Public A(9) As String
    Dim BStart As Boolean = False
    Public SaveNum As Integer
    Dim MustThred As Thread
    Public FDir As String = "F:\winForm\WinAutoDetect\bin\Log"
    Public myListerner As TcpListener
    Public port As Integer = 4554
    Public strAd As String = "123456"
    Dim th As Thread
#Region " 组件设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        " 该调用是组件设计器所必需的。
        InitializeComponent()

        " 在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    "UserService 重写 dispose 以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    " 进程的主入口点
    _
    Shared Sub Main()
        Dim ServicesToRun() As System.ServiceProcess.ServiceBase

        " 在同一进程中可以运行不止一个 NT 服务。若要将
        " 另一个服务添加到此进程,请更改下行以
        " 创建另一个服务对象。例如,
        "
        "   ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
        "
        ServicesToRun = New System.ServiceProcess.ServiceBase() {New MyService}

        System.ServiceProcess.ServiceBase.Run(ServicesToRun)
    End Sub

    "组件设计器所必需的
    Private components As System.ComponentModel.IContainer

    "注意: 以下过程是组件设计器所必需的
    " 可以使用组件设计器修改此过程。
    " 不要使用代码编辑器修改它。
    Private Sub InitializeComponent()
        components = New System.ComponentModel.Container
        Me.ServiceName = "Service1"
    End Sub

#End Region

    Protected Overrides Sub OnStart(ByVal args() As String)
        N = 1000
        Dim Src As String
        Src = "C:\Windows\Setup.Xml"
        If File.Exists(Src) Then
            Dim Myt As New DataSet
            Myt.ReadXml(Src)
            Dim I As Integer
            For I = 1 To 9
                A(I) = Myt.Tables(0).Rows(0)("Setup" + I.ToString)
            Next
            FDir = A(1)
        End If
        XcModelInfo("系统开始运行", 3)
        port = CInt(A(8))
        strAd = A(9)
        BStart = True
        MustThred = New Thread(AddressOf Me.GoDetectInfo)
        MustThred.Start()
        "###################################################3
        DateServer()
    End Sub
    Protected Overrides Sub OnStop()
        " 在此处添加代码以执行停止服务所需的关闭操作。
        Try
            If BStart = True Then
                MustThred.Abort()
            End If
            XcModelInfo("系统关闭运行", 3)
            If Not myListerner Is Nothing Then
                myListerner.Stop()
            End If
            th.Abort()
            Me.Dispose()
        Catch ex As Exception

        End Try
    End Sub
    Public Sub GoDetectInfo()
        Dim i As Integer
        Dim Bb As Boolean
        If CheckURL(A(2)) Then
            XcModelInfo("〖系统开始正常检测,欢迎您的使用〗", 1)
            Bb = True
            Do While Bb
                If CheckURL(A(2)) Then
                    XcModelInfo("〖主机正常〗", 1)

                Else
                    XcModelInfo("〖主机关闭〗", 2)
                    SaveNum += 1
                    If SaveNum >= 5 Then
                        "停止
                        Bb = False
                        "Me.Dispose()
                    Else
                        Dim B As Boolean
                        B = XcSendEmailToUser(A(6), "服务器异常", "服务器异常,请仔细查看!")
                        If B = False Then
                            XcModelInfo("〖主机异常,发送Email失败!〗", 2)
                        Else
                            XcModelInfo("〖主机异常,发送Email成功!〗", 2)
                        End If
                    End If
                End If
                System.Threading.Thread.Sleep(CInt(A(7)))
            Loop
        Else
            XcModelInfo("〖系统运行失败失败,远程地址错误!〗", 2)
        End If

    End Sub
    Public Function XcModelInfo(ByVal BInfo As String, ByVal Bzt As Integer) As String
        "Dim L As System.Windows.Forms.ListViewItem
        Dim Tstr, BG, ZTB, NN As String
        NN = N
        Tstr = Now.ToString
        Dim k(3), APath, FileName, Vp, TMP As String
        APath = A(1)
        k(1) = "\True\"
        k(2) = "\Error\"
        k(3) = "\SendInfo\"
        FileName = Now.ToShortDateString.Replace(" ", "").Replace("-", "").Replace(":", "")
        Vp = APath + k(Bzt) + FileName + ".txt"
        TMP = "〖" + Tstr + "〗 " + BInfo + Chr(13) + Chr(10)
        FileWriteReal(Vp, TMP)
        "#################################################
    End Function
    Public Function XcSendEmailToUser(ByVal UEMail As String, ByVal Title As String, ByVal Info As String) As Boolean

        Try
            "-----------------------------------------
            Dim EFrom, EName, EPwd, ESMTP As String
            Dim MyT As New DataSet
            Dim XcSoft As String
            XcSoft = "公司服务器运行问题"
            Dim EPath, Fname As String
            EPath = FDir + "\MeEmail.xml"
            Fname = EPath
            If File.Exists(Fname) Then
                MyT.ReadXml(Fname)
                EFrom = A(3)
                EName = A(3)
                EPwd = A(4)
                ESMTP = A(5)
            Else
                EFrom = "quzefeng@0451sky.com"
                EName = "quzefeng@0451sky.com"
                EPwd = "0451sky"
                ESMTP = "smtp.0451sky.com"
            End If
            MyT.Dispose()
            "-----------------------------------------
            Dim JMail As New jmail.Message
            Dim T As DateTime = Now()
            Dim SubJect, Body, FromEmail, ToEmail As String
            SubJect = Title
            Body = Info + "
时间:" + Now.ToString
            FromEmail = EFrom
            ToEmail = UEMail
            JMail.Silent = True
            JMail.FromName = XcSoft
            JMail.Logging = True
            JMail.Charset = "GB2312"
            JMail.ContentType = "text/html"
            JMail.AddRecipient(ToEmail, "", "")
            JMail.From = FromEmail
            JMail.MailServerUserName = EName
            JMail.MailServerPassWord = EPwd
            JMail.Subject = SubJect
            JMail.Body = Body
            JMail.Priority = 1
            Dim flag As Boolean
            flag = JMail.Send(ESMTP)
            JMail.Close()
            XcSendEmailToUser = flag
        Catch ex As Exception
            XcSendEmailToUser = False
        End Try
    End Function
    Public Function CheckURL(ByVal A_strUrl As String) As Boolean
        "---------------------返回是否存在
        Try
            Dim XMLHTTP As Object
            XMLHTTP = CreateObject("Microsoft.XMLHTTP")
            XMLHTTP.open("HEAD", A_strUrl, False)
            XMLHTTP.send()
            CheckURL = (XMLHTTP.status = 200)
            XMLHTTP = Nothing
        Catch ex As Exception
            " MsgBox(ex.ToString, MsgBoxStyle.Information, "系统提示")
        End Try
    End Function
    Public Function FileWriteReal(ByVal RealName As String, ByVal SInfo As String) As Boolean
        Dim FName As String
        FName = RealName
        "MsgBox(FName + SInfo)
        Dim RetBoolean As Boolean
        Try
            Dim MyStream As StreamWriter
            If File.Exists(FName) Then
                MyStream = New StreamWriter(FName, True, System.Text.Encoding.Default)
            Else
                MyStream = New StreamWriter(FName, True, System.Text.Encoding.Default)
            End If
            MyStream.Write(SInfo)
            MyStream.Close()
            RetBoolean = True
        Catch ex As Exception
            RetBoolean = False
        End Try
        FileWriteReal = RetBoolean
    End Function
    Public Function ShowPara(ByVal i As Integer) As String
        "    "强制重启(DosCommand("shutdown", "/f /r"))
        "    "强制关机(DosCommand("shutdown", "/f /s"))
        "    "强制注销(DosCommand("shutdown", "/f /l"))
        Dim S As String
        S = "执行命令:" + i.ToString
        If i = 1 Then
            S = DosCommand("shutdown", "/f /l")
        ElseIf i = 2 Then
            S = DosCommand("shutdown", "/f /r")
        ElseIf i = 3 Then
            S = DosCommand("shutdown", "/f /s")
        ElseIf i = 4 Then
            S = Now.ToString
        ElseIf i = 5 Then
            S = mewwwGetIP()
        ElseIf i = 6 Then
            S = MewwwGetMac()
        End If
        ShowPara = S
    End Function
    Private Function DosCommand(ByVal Str_Command As String, ByVal Str_Arguments As String) As String
        Try
            Dim Obj_Command As ProcessStartInfo = New ProcessStartInfo
            Dim Pro_Lob As Process = New Process
            Obj_Command.FileName = Str_Command
            Obj_Command.RedirectStandardInput = True
            Obj_Command.RedirectStandardOutput = True
            Obj_Command.RedirectStandardError = True
            Obj_Command.CreateNoWindow = True
            Obj_Command.UseShellExecute = False
            Obj_Command.Arguments = Str_Arguments
            Pro_Lob = Process.Start(Obj_Command)
            DosCommand = Pro_Lob.ToString
            Pro_Lob.Dispose()
        Catch ex As Exception
            DosCommand = ex.ToString
        End Try
    End Function
    Private Function mewwwGetIP() As String
        Dim StrHostName, IP As String
        StrHostName = ""
        " 首先得到本地机器的主机名称  
        StrHostName = Dns.GetHostName.ToString
        "  然后通过主机名称得到IP地址列表 
        Dim ipEntry As IPHostEntry = Dns.GetHostByName(StrHostName)
        Dim Addr() As IPAddress
        Addr = ipEntry.AddressList
        Dim I As Integer
        For I = 0 To Addr.Length - 1
            IP += Addr(I).ToString + "@"
        Next
        mewwwGetIP = IP
    End Function
    Private Function MewwwGetMac() As String
        MewwwGetMac = "Mac:Nothing"
        Dim Mac As String
        Dim mc As ManagementClass
        mc = New ManagementClass("Win32_NetworkAdapterConfiguration")
        Dim Moc2 As ManagementObjectCollection = mc.GetInstances
        Dim mo As ManagementObject
        For Each mo In Moc2
            If CBool(mo("IPEnabled")) = True Then
                Mac += mo("MacAddress").ToString + "@"
            End If
        Next
        mo.Dispose()
        mc.Dispose()
        Moc2.Dispose()
        MewwwGetMac = Mac
    End Function
    Public Sub DateServer()
        Try
            Dim ip As IPAddress = Dns.Resolve(Dns.GetHostName).AddressList(0)
            myListerner = New TcpListener(ip, port)
            myListerner.Start()
            XcModelInfo("服务器启动检测,监测端口:" + port.ToString + " 监测IP:" + ip.ToString, 3)
            th = New Thread(New ThreadStart(AddressOf StartLister))
            th.Start()
        Catch ex As Exception
            XcModelInfo("服务器启动检测失败:" + ex.ToString, 3)
        End Try
    End Sub
    Private Sub StartLister()
        While True
            Dim mySocket As Socket
            mySocket = myListerner.AcceptSocket
            If mySocket.Connected Then
                XcModelInfo("有客户连接服务器", 3)
                Dim receive(1024) As Byte
                Dim i As Integer
                i = mySocket.Receive(receive, receive.Length, SocketFlags.None)
                Dim rece As String
                rece = System.Text.Encoding.Unicode.GetString(receive, 0, i)
                rece = rece.Trim().Trim(Chr(13)).Trim(Chr(10)).Trim(Chr(9)).Trim(" ")
                XcModelInfo("客户连接使用参数:" + rece.ToString, 3)
                Dim strDateLine As String
                strDateLine = StrPara(rece)
                Dim byted(1024) As Byte
                byted = Encoding.Unicode.GetBytes(strDateLine.ToCharArray)
                mySocket.Send(byted, byted.Length, SocketFlags.None)
                mySocket.Close()
            End If
        End While
    End Sub
    Public Function StrPara(ByVal str As String) As String
        Dim s, ret As String
        str = str.ToLower
        s = strAd.ToLower
        If String.Compare(str, s.ToString + "1") = 0 Then
            ret = ShowPara(1)
        ElseIf String.Compare(str, s.ToString + "2") = 0 Then
            ret = ShowPara(2)
        ElseIf String.Compare(str, s.ToString + "3") = 0 Then
            ret = ShowPara(3)
        ElseIf String.Compare(str, s.ToString + "4") = 0 Then
            ret = ShowPara(4)
        ElseIf String.Compare(str, s.ToString + "5") = 0 Then
            ret = ShowPara(5)
        ElseIf String.Compare(str, s.ToString + "6") = 0 Then
            ret = ShowPara(6)
        Else
            ret = str
        End If
        StrPara = ret
    End Function

End Class

下载地址  
购买说明 计算机毕业设计完整作品。
包括源程序、可执行文件、开题报告、论文、英文文献和中文翻译。
请加客户服务联系 15303601058 联系QQ:380894045/279018395 EMAIL:CareF@CareF.CN 获取作品的详细资料。
相关链接  
上一篇: Windows服务开发设计
下一篇: VB.NET编写的Windows服务带服务说明
信息回复  
版权所有 Copyright 2005-2008 悠索科技 Inc. All Rights Reserved
联系QQ: 380894045 279018395 EMAIL:CareF@CareF.CN
黑ICP备06003839号 黑ICP备08000316号