treazer
Goto Top

Entschlüsseln von Logfiles (mit ASP)

Da ich kein ASP kann, jedoch Logfiles entschlüsseln sollte die mit einem ASP-Programm verschlüsselt wurden, suche ich Hilfe oder eine Erklärung des Codes.

Hallo,

ich habe von meinem Cheff die Aufgabe bekommen unsere Logfiles auf dem Server zu entschlüsseln (Format der Logfiles ist csv).
Die Logfiles wurden automatisch durch eine ASP-Seite verschlüsselt (Verschluesseln.asp). Leider habe ich Probleme mit dem entschlüsseln, da die Datei "Entschluesseln.asp" nicht richtig funktioniert.

Das weitere Problem ist, dass ich mich mit ASP kaum auskenne. Das Verschlüsselungsprogramm hat ein ehemaliger Mitarbeiter vom Internet bei uns eingebaut, leider steht er für eine Befragung nicht mehr bereit.

Ich wäre dankbar für jede Hilfe, Erklärung oder jeden Vorschlag den ich bekomme.

Hier mal der Quelltext der Dateien:

Serversidesha1.asp--------------------------

<script language="JScript" runat="server">
/*
*/

/*
    • Convert a 32-bit number to a hex string with ms-byte first
    */
    var hex_chr = "0123456789abcdef";
    function hex(num)
    {
    var str = "";
    for(var j = 7; j >= 0; j--)
    str += hex_chr.charAt((num >> (j * 4)) & 0x0F);
    return str;
    }

    /*
      • Convert a string to a sequence of 16-word blocks, stored as an array.
      • Append padding bits and the length, as described in the SHA1 standard.
    */
    function str2blks_SHA1(str)
    {
    var nblk = ((str.length + 8) >> 6) + 1;
    var blks = new Array(nblk * 16);
    for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
    for(i = 0; i < str.length; i++)
    blks[i >> 2] |= str.charCodeAt(i) << (24 - (i % 4) * 8);
    blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
    blks[nblk * 16 - 1] = str.length * 8;
    return blks;
    }

    /*
      • Add integers, wrapping at 2^32. This uses 16-bit operations internally
      • to work around bugs in some JS interpreters.
    */
    function add(x, y)
    {
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
    }

    /*
      • Bitwise rotate a 32-bit number to the left
      */
      function rol(num, cnt)
      {
      return (num << cnt) | (num >>> (32 - cnt));
      }

      /*
        • Perform the appropriate triplet combination function for the current
        • iteration
      */
      function ft(t, b, c, d)
      {
      if(t < 20) return (b & c) | ((~b) & d);
      if(t < 40) return b ^ c ^ d;
      if(t < 60) return (b & c) | (b & d) | (c & d);
      return b ^ c ^ d;
      }

      /*
        • Determine the appropriate additive constant for the current iteration
        */
        function kt(t)
        {
        return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
        (t < 60) ? -1894007588 : -899497514;
        }

        /*
          • Take a string and return the hex representation of its SHA-1.
          */
          function calcSHA1(str)
          {
          var x = str2blks_SHA1(str);
          var w = new Array(80);

          var a = 1732584193;
          var b = -271733879;
          var c = -1732584194;
          var d = 271733878;
          var e = -1009589776;

          for(var i = 0; i < x.length; i += 16)
          {
          var olda = a;
          var oldb = b;
          var oldc = c;
          var oldd = d;
          var olde = e;

          for(var j = 0; j < 80; j++)
          {
          if(j < 16) w[j] = x[i + j];
          else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
          t = add(add(rol(a, 5), ft(j, b, c, d)), add(add(e, w[j]), kt(j)));
          e = d;
          d = c;
          c = rol(b, 30);
          b = a;
          a = t;
          }

          a = add(a, olda);
          b = add(b, oldb);
          c = add(c, oldc);
          d = add(d, oldd);
          e = add(e, olde);
          }
          return hex(a) + hex(b) + hex(c) + hex(d) + hex(e);
          }
          </script>


          Verschluesseln.asp--------------------------

          <!-- #include file="Serversidesha1.asp"-->
          <%
          Function jInApplicatonSpeichern(j)
          Application.Lock
          Application(Date() & "j") = j
          Application.Unlock
          End Function

          Function intTochar(z)
          'If z > 152 Then Response.Write z
          strint = Chr(z)
          intToChar = strint
          End Function

          Function getj()
          getj = Application(Date()&"j")
          End Function

          Function konvertiereSonderzeichen(intZeichen)
          Select Case intZeichen
          Case 180 '=´
          konvertiereSonderzeichen = 1
          Case 192 '=À
          konvertiereSonderzeichen = 2
          Case 193 '=Á
          konvertiereSonderzeichen = 3
          Case 196 '=Ä
          konvertiereSonderzeichen = 4
          Case 200 '=È
          konvertiereSonderzeichen = 5
          Case 201 '=É
          konvertiereSonderzeichen = 6
          Case 204 '=Ì
          konvertiereSonderzeichen = 7
          Case 205 '=Í
          konvertiereSonderzeichen = 8
          Case 210 '=Ò
          konvertiereSonderzeichen = 9
          Case 211 '=Ó
          konvertiereSonderzeichen = 10
          Case 214 '=Ö
          konvertiereSonderzeichen = 11
          Case 217 '=Ù
          konvertiereSonderzeichen = 12
          Case 218 '=Ú
          konvertiereSonderzeichen = 13
          Case 220 '=Ü
          konvertiereSonderzeichen = 14
          Case 223 '=ß
          konvertiereSonderzeichen = 15
          Case 224 '=à
          konvertiereSonderzeichen = 16
          Case 225 '=á
          konvertiereSonderzeichen = 17
          Case 228 '=ä
          konvertiereSonderzeichen = 18
          Case 232 '=è
          konvertiereSonderzeichen = 19
          Case 233 '=é
          konvertiereSonderzeichen = 20
          Case 236 '=ì
          konvertiereSonderzeichen = 21
          Case 237 '=í
          konvertiereSonderzeichen = 22
          Case 242 '=ò
          konvertiereSonderzeichen = 23
          Case 243 '=ó
          konvertiereSonderzeichen = 24
          Case 246 '=ö
          konvertiereSonderzeichen = 25
          Case 249 '=ù
          konvertiereSonderzeichen = 26
          Case 250 '=ù
          konvertiereSonderzeichen = 27
          Case 252 '=ü
          konvertiereSonderzeichen = 28
          Case Else
          konvertiereSonderzeichen = 29
          End Select
          End Function

          %>
          <script language="JScript" runat="server">

          function lengthErmitteln(str)
          {
          intlength = str.length;
          return intlength;
          }

          function verschluesseln(strUnverschluesselt, strSha1, intlength, j)
          {

          var strVerschluesselt = "";
          for(var i = 0; i < intlength; i++)
          {
          var intZeichen = strUnverschluesselt.charCodeAt(i); es wird Code von Zeichen ermittelt
          if(intZeichen > 152)
          {
          intZeichen = konvertiereSonderzeichen(intZeichen);
          }
          var intSha1 = strSha1.charCodeAt((getj()+i) % 40);
          var intSha1 = strSha1.charCodeAt((j+i) % 40);
          k = i - CInt(i%40)*40;
          var intSha1 = strSha1.charCodeAt(k);


          es wird von jedem Zeichen in strSha1 der Ascii-Wert ermittelt; da der String kürzer als der zu
          Verschlüsselnde ist fängt man bei strSha1 wieder von vorne an wenn das Ende erreicht ist.
          Response.Write("intSha1: " + intSha1 + "
          ");
          Response.Write("j=: " + j + " i = " + i + "
          ");

          if(intZeichen < 30)
          {
          var intVerschluesselt = intZeichen;
          }
          else
          {
          var intVerschluesselt = intZeichen + intSha1;
          }

          strVerschluesselt += intTochar(intVerschluesselt);
          }
          jInApplicatonSpeichern((j+intlength+1) % 40);
          return strVerschluesselt;
          }

          </script>
          <%
          strSha1 = calcSHA1(CStr(Date()))
          response.write "strSha1 = " & strSha1 & "
          "
          intlength = CInt(lengthErmitteln(strUnverschluesselt))
          response.write "intlength = " & intlength & "
          "
          'strVerschluesselt = verschluesseln(strUnverschluesselt, strSha1, intlength, 0)

          strVerschluesselt = verschluesseln(strUnverschluesselt, strSha1, intlength, Application(Date() & "j"))
          response.write "strverschluesselt = " & strVerschluesselt & "
          "
          response.write "appl(date) & J = " & Application((Date() & "j")) & "
          "


          %>


          Entschluesseln.asp.asp--------------------------

          <!-- #include file="Serversidesha1.asp"-->
          <%
          Function jInSessionSpeichern(j)
          Session("j") = j
          End Function

          Function vbscriptASC(i)
          i = Asc(i)
          vbscriptASC = i
          End Function

          Function intTochar(z)
          Response.Write z & ", "
          strint = Chr(CInt(z))
          intToChar = strint
          End Function

          Function getj()
          getj = Application(Date()&"j")
          End Function

          Function konvertiereSonderzeichen(intZeichen)
          Select Case intZeichen
          Case 1 '=´
          konvertiereSonderzeichen = 180
          Case 2 '=À
          konvertiereSonderzeichen = 192
          Case 3 '=Á
          konvertiereSonderzeichen = 193
          Case 4 '=Ä
          konvertiereSonderzeichen = 196
          Case 5 '=È
          konvertiereSonderzeichen = 200
          Case 6 '=É
          konvertiereSonderzeichen = 201
          Case 7 '=Ì
          konvertiereSonderzeichen = 204
          Case 8 '=Í
          konvertiereSonderzeichen = 205
          Case 9 '=Ò
          konvertiereSonderzeichen = 210
          Case 10 '=Ó
          konvertiereSonderzeichen = 211
          Case 11 '=Ö
          konvertiereSonderzeichen = 214
          Case 13 '=Ù
          konvertiereSonderzeichen = 13
          Case 14 '=Ú
          konvertiereSonderzeichen = 218
          Case 15 '=Ü
          konvertiereSonderzeichen = 220
          Case 16 '=ß
          konvertiereSonderzeichen = 223
          Case 17 '=à
          konvertiereSonderzeichen = 224
          Case 18 '=á
          konvertiereSonderzeichen = 225
          Case 19 '=ä
          konvertiereSonderzeichen = 228
          Case 20 '=è
          konvertiereSonderzeichen = 232
          Case 21 '=é
          konvertiereSonderzeichen = 233
          Case 22 '=ì
          konvertiereSonderzeichen = 236
          Case 23 '=í
          konvertiereSonderzeichen = 237
          Case 24 '=ò
          konvertiereSonderzeichen = 242
          Case 25 '=ó
          konvertiereSonderzeichen = 243
          Case 26 '=ö
          konvertiereSonderzeichen = 246
          Case 27 '=ù
          konvertiereSonderzeichen = 249
          Case 28 '=ù
          konvertiereSonderzeichen = 250
          Case 29 '=ü
          konvertiereSonderzeichen = 252
          Case Else
          konvertiereSonderzeichen = 63 '->?
          End Select
          End Function
          %>
          <script language="JScript" runat="server">

          function lengthErmitteln(str)
          {
          intlength = str.length;
          return intlength;
          }

          function entschluesseln(strZeileVerschluesselt, strSha1, intlength, j)
          {
          var strEntschluesselt = "";
          for(var i = 0; i < intlength; i++)
          {
          var intZeichen = vbscriptASC(strZeileVerschluesselt.charAt(i)); strZeileVerschluesselt.charCodeAt(i); es wird von jedem Zeichen in
          Response.Write("intZeichen: " + intZeichen + "
          "); strUnverschluesselt der Ascii-Wert ermittelt
          var intSha1 = strSha1.charCodeAt((getj()+i) % 40);

          var intSha1 = strSha1.charCodeAt((j+i) % 40);
          es wird von jedem Zeichen in strSha1 der Ascii-Wert ermittelt; da der String kürzer als der zu
          Entschlüsselnde ist fängt man bei strSha1 wieder von vorne an wenn das Ende erreicht ist.
          Response.Write("intSha1: " + intSha1 + "
          ");
          Response.Write("j: " + j + " i = " + i + "
          ");

          var intEntschluesselt = ""

          if(intZeichen < 30)
          {
          intZeichen = konvertiereSonderzeichen(intZeichen);
          intEntschluesselt = intZeichen;
          }
          else
          {
          intEntschluesselt = intZeichen - intSha1; intSha1 oder 56;
          }
          Response.Write("intEntschluesselt: " + intEntschluesselt + "
          ");
          var z = intTochar(intEntschluesselt);
          Response.Write("z: " + z + "

          ");

          strEntschluesselt += intTochar(intEntschluesselt);
          //Response.Write("strEntschluesselt: " + strEntschluesselt + "
          ");
          }
          jInSessionSpeichern((j+intlength+1) % 40);
          return strEntschluesselt;
          }

          </script>

          <%
          Set fsObj = Server.CreateObject("Scripting.FileSystemObject")

          strQuelleName = Request.QueryString("Logfile")
          strParentFolder = Request.QueryString("LogfilePath") & "\"

          strQuelle = strParentFolder & strQuelleName
          strZiel = strParentFolder & "Entschluesselt" & strQuelleName


          'Response.Write "Quelle: " & strQuelle & "
          "
          'Response.Write "Ziel: " & strZiel & "
          "


          If fsObj.FileExists(strQuelle) Then

          strDatumZeit = Request.QueryString("DatumZeit")
          Response.Write "DatumZeit: " & strDatumZeit & "
          "
          strDatum = Left(strDatumZeit, 10)
          Response.Write "Datum: " & strDatum & "
          "
          strSha1 = calcSHA1(strDatum)
          'strSha1 = calcSHA1(CStr(Date())) 'aus verschlüsseln

          Response.Write "strSha1: " & strSha1 & "

          "

          Set objLogDatei = fsObj.OpenTextFile(strQuelle,1,true)
          Session("j") = 0
          Response.Write "Anfang Session(""j""): " & Session("j") & "

          "

          While Not objLogDatei.AtEndOfStream

          strZeileVerschluesselt = objLogDatei.ReadLine
          Response.Write "strZeileVerschluesselt: " & strZeileVerschluesselt & "
          "
          intlength = CInt(lengthErmitteln(strZeileVerschluesselt))
          'Response.Write "intlength: " & intlength & "
          "
          strZeileEntschluesselt = entschluesseln(strZeileVerschluesselt, strSha1, intlength, Session("j"))
          Response.Write "strZeileEntschluesselt: " & strZeileEntschluesselt & "
          "

          If fsObj.FileExists(strZiel) Then
          Set objLogfileEntschluesselt = fsObj.OpenTextFile(strZiel,8,true)
          Else
          Set objLogfileEntschluesselt = fsObj.CreateTextFile(strZiel)
          End If
          objLogfileEntschluesselt.WriteLine strZeileEntschluesselt
          objLogfileEntschluesselt.Close
          Response.Write "Session(""j""): " & Session("j") & "

          "

          Wend

          objLogDatei.Close
          Else
          Response.Write "Datei existiert nicht."
          End If
          %>


          Ich hoffe mir kann jemand helfen. Da der Quellcode nicht richtig hier dargestellt werden kann, sende ich die Dateien auch gerne zu oder lade sie auf meine Homepage hoch.

          MfG

          Treazer

Content-Key: 28873

Url: https://administrator.de/contentid/28873

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: gnarff
gnarff 25.03.2006 um 22:35:27 Uhr
Goto Top
hallo treazer

habe gerade deine email mit den quellcodes gecheckt, wobei serversidesha1 leider nicht mitgekommen ist.
was du mir da geschickt hast hat aber nichts mit asp.net zu tun und ich bezweifele das dich das weiter bringt.
es ist ja nicht so, das man irgendein cryptoprogramm sich runterlaedt und dann ans entschluesseln geht.
das dateiformat ist csv (comma seperated values), also ein tabellen-datenformat.
du hast geschrieben, dass die daten automatisch durch eine ASP-seite verschluesselt worden sind, was mir unlogisch erscheint. die seite verschluesselt nichts, sondern die anwendung oder das script dahinter.

wenn die dateien unter asp.net verschluesselt worden sind dann solltest du dich mal unter folgendem link dazu einlesen : http://www.microsoft.com/germany/msdn/library/security/ErlebnisseMitDer ...

ich habe den quellcode noch nicht ganz durch, aber ich glaube dass er dir nicht helfen wird bei deinem prob
soweit erstmal...

saludos
gnarff