Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sub Main
- Dim input As String = "My name is Inigo Montoya. You killed my father. Prepare to die.ꬾ"
- Dim encodings = {
- Encoding.Unicode,
- Encoding.BigEndianUnicode,
- Encoding.UTF8,
- New UTF8Encoding(False),
- Encoding.UTF7,
- Encoding.UTF32,
- Encoding.ASCII,
- Encoding.Default}.Concat(Encoding.GetEncodings().Select(Function(e) e.GetEncoding)).ToArray
- encodings.Select(Function(e, i) New With {.Index = i, .Encoding = e, .Preamble= String.Join(" ",array.ConvertAll(e.GetPreamble,Function(b) b.ToString("X2")))}).Dump("Encodings")
- Using aes As System.Security.Cryptography.aes = System.Security.Cryptography.Aes.Create()
- Dim index As Integer = Integer.Parse(Util.ReadLine("Pick an encoding (0) for unicode, (6) for Ascii, (2,3) for UTF8(BOM,no BOM)")) Mod encodings.Count
- Util.ClearResults
- Dim picked = encodings(index).Dump("Picked encoding")
- String.Join(" ",array.ConvertAll(picked.GetPreamble,Function(b) b.ToString("X2"))).Dump("Preamble")
- Dim encoded = encodings.Select(Function(e) New With {
- .input = input,
- .Encoding = e,
- .Bytes = encode(input, e),
- .BytesToHex = String.Join(" ", Array.ConvertAll(.Bytes, Function(b) b.ToString("X2"))),
- .Encrypted = EncryptBytes_Aes(.Bytes, aes),
- .EncryptedToHex = String.Join(" ", Array.ConvertAll(.Encrypted, Function(b) b.ToString("X2")))
- })
- Dim decoded = encoded.Select(Function(enc) New With {.Encoded = enc, .Decoded = encodings.Select(Function(de) New With {
- .Encoding = de,
- .BytesToString = Decode(enc.Bytes, de),
- .EncryptedBytesToString = Decode(enc.Encrypted, de),
- .Decrypted = New With {
- .Decrypted = DecryptBytes_Aes(enc.Encrypted, aes),
- .DecryptedBytesToHex = String.Join(" ", Array.ConvertAll(.Decrypted, Function(b) b.ToString("X2"))),
- .DecryptedToString = Decode(.Decrypted, de),
- .DecryptedEqualsBytes = Enumerable.SequenceEqual(enc.Bytes, .Decrypted)}
- })
- })
- 'verbose info
- decoded(index).Dump("Decoding Info")
- 'decoded.Dump 'Or use this to dump all options
- Dim output = From de In decoded
- Select New With {.EncodedBy = de.Encoded.Encoding.EncodingName, .Decoded = de.Decoded.Select(Function(d) New With {.DecodingName = d.Encoding.EncodingName, .String = d.BytesToString, .StringFromEncrypted = d.EncryptedBytesToString})}
- output(index).Dump("Decoded Strings")
- End Using
- End Sub
- Function Decode(bytes As Byte(), Enc As System.Text.Encoding) As String
- Return enc.GetString(bytes)
- End Function
- Function encode(str As String, Enc As System.Text.Encoding) As Byte()
- Return enc.GetPreamble.Concat( enc.GetBytes(str)).ToArray
- End Function
- Function EncryptBytes_Aes(ByVal plainTextBytes As Byte(), AESProvider As Aes) As Byte()
- Dim encryptor As ICryptoTransform = AESProvider.CreateEncryptor()
- Using msEncrypt As New MemoryStream()
- Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
- Using swEncrypt As New BinaryWriter(csEncrypt)
- swEncrypt.Write(plainTextBytes)
- End Using
- Return msEncrypt.ToArray()
- End Using
- End Using
- End Function
- Function DecryptBytes_Aes(ByVal cipherText() As Byte, AESProvider As Aes) As Byte()
- Dim decryptor As ICryptoTransform = AESProvider.CreateDecryptor()
- Dim output As New List(Of Byte)
- Using msDecrypt As New MemoryStream(cipherText)
- Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)
- Dim tmp As Integer = csDecrypt.ReadByte
- While tmp <> -1
- output.Add(CByte(tmp))
- tmp = csDecrypt.ReadByte
- End While
- Return output.ToArray
- End Using
- End Using
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement