xml - 从 xml 文件的 vb.net 十六进制扫描

标签 xml vb.net hex

我正在试验一些十六进制扫描器源。

以下代码有效但速度很慢:

Public Class frmMain

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadFile.Click

        Dim ArrayHold() As Byte
        Dim Index As Integer = 0
        Dim Str As New StringBuilder
        Dim tStr As String = ""
        Dim tempStr As String = ""
        Dim IndexEnd As Integer = 0
        Dim InputString As String = ""

        OpenDia.Filter = "All Files|*.*"

        If OpenDia.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim myStreamReader As StreamReader = Nothing
            myStreamReader = File.OpenText(OpenDia.FileName)
            InputString = myStreamReader.ReadToEnd()
            ArrayHold = Encoding.Default.GetBytes(InputString)

            Do
                IndexEnd = Index + 9

                For x As Integer = Index To IndexEnd

                    If x > UBound(ArrayHold) Then
                        tempStr = tempStr
                    Else
                        tStr = UCase(Convert.ToString(ArrayHold(x), 16))

                    If tStr.Length < 2 Then tStr = "0" & tStr

                    Str.Append(tStr)
                    tempStr = tempStr & Chr(ArrayHold(x))

                    End If
                Next

                Index = Index + 10
            Loop While IndexEnd < UBound(ArrayHold)

            If InStr(1, Str.ToString, "58354f2150254041505b345c505a58353428505e2937434329377d2445494341522d5354414e4441", vbTextCompare) Then
                Label1.Text = "Eicar-test-signature virus Detected!"
            End If
        End If
    End Sub
End Class

为了加快速度,我可以在 XML 文件中使用这种格式:

?xml version="1.0"?>
<signatures>
  <signature>
    <name>Eicar-Test-Signature</name>
      <hex>58354f2150254041505b345c505a58353428505e2937434329377d2445494341522d5354414e4441</hex>
  </signature>
  <signature>
    <name>Mid/Kakworm-Z</name>
      <hex>66732e4372656174655465787446696c652877642b276b616b2e72656727293b74322e77726974652827524547454449</hex>
  </signature>
</signatures>

但我不知道如何在VB.NET中读取和实现XML文件。很难吗,有人可以帮忙吗?

最佳答案

好的,下面是一个如何读取 XML 文件的示例:

Dim xml = <?xml version="1.0"?>
          <signatures>
            <signature>
              <name>Eicar-Test-Signature</name>
              <hex>58354f2150254041505b345c505a58353428505e2937434329377d2445494341522d5354414e4441</hex>
            </signature>
            <signature>
              <name>Mid/Kakworm-Z</name>
              <hex>66732e4372656174655465787446696c652877642b276b616b2e72656727293b74322e77726974652827524547454449</hex>
            </signature>
          </signatures>

Dim dict As New Dictionary(Of String, String)
For Each signature As XElement In xml.Root.Elements
  dict.Add(signature.<name>.Value, signature.<hex>.Value)
Next

您可能会使用 XDocument.LoadXDocument.Parse,而不是在您的代码中嵌入 XML(如上例)。

关于xml - 从 xml 文件的 vb.net 十六进制扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934751/

相关文章:

将节点添加到根节点时出现 java.lang.NullPointerException

PHP MYSQL XML 错误

java - 如何在android资源文件中动态存储字符串

.net - 如何在 vb - asp.net 中拆分带有多字符分隔符的字符串?

css - Web 颜色十六进制表示法

c++ - 在 C++ 中打印十六进制值

java - 在 Java 中,如何将十六进制字符串转换为字节 []?

javascript - 使用 javascript 漂亮地打印 XML

c# - 如何在设计器中单击用户控件子项?

windows - 已安装程序集的桌面图标上有两个蓝色箭头