Jump to content
Fórum Script Brasil
  • 0

(Resolvido)Filtrar Conteudo em Texto


travesso

Question

Olá Pessoal da SB Venho aqui tirar uma pequena Duvida...

Será que é possível encontrar um Código BASE64 dentro de um Arquivo de TEXTO ?

Melhor Explicando, tenho um arquivo de texto onde nele existe algumas linhas codificadas em base 64 queria(se for possível), montar uma função que encontre essa linha e salve em uma array para se usada Depois em outra função e caso fosse encontrada mais de uma linha codificada seria posta em outra array

Caso for Possível Gostaria de Indicações de Como Realizar Tal Façanha Obg a todos, no aguardo de Resposta !

Edited by travesso
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Não entendi a necessidade de manter um texto codificado no meio de um texto normal. O problema nessa situação é que você não tem um padrão de dados. Sua informação pode ser qualquer texto (em base64).

Isso dificulta, pois você teria que ler todas as palavras e tentar decodificá-las.

Link to comment
Share on other sites

  • 0
Não entendi a necessidade de manter um texto codificado no meio de um texto normal. O problema nessa situação é que você não tem um padrão de dados. Sua informação pode ser qualquer texto (em base64).

Isso dificulta, pois você teria que ler todas as palavras e tentar decodificá-las.

Bom o codigo base64 sempre estará na 6º linha do arquivo de texto.

Talvez sabendo onde ele estará fica mais facil encontra-lo!

Edited by travesso
Link to comment
Share on other sites

  • 0

Legal! Isso já estabele um padrão! Sendo assim, você pode percorrer seu arquivo até a 6ª linha e aplicar a decodificação em Base64 para esta linha. Segue algum código:

public static string Encode(string texto)
{

    byte[] vetorBytes = System.Text.Encoding.Unicode.GetBytes(texto);

    string resultado = System.Convert.ToBase64String(vetorBytes);

    return resultado;

}

public static string Decode(string texto)
{

    byte[] vetorBytes = System.Convert.FromBase64String(texto);

    string resultado = System.Text.Encoding.Unicode.GetString(vetorBytes);

    return resultado;

}

Link to comment
Share on other sites

  • 0
Legal! Isso já estabele um padrão! Sendo assim, você pode percorrer seu arquivo até a 6ª linha e aplicar a decodificação em Base64 para esta linha. Segue algum código:

public static string Encode(string texto)
{

    byte[] vetorBytes = System.Text.Encoding.Unicode.GetBytes(texto);

    string resultado = System.Convert.ToBase64String(vetorBytes);

    return resultado;

}

public static string Decode(string texto)
{

    byte[] vetorBytes = System.Convert.FromBase64String(texto);

    string resultado = System.Text.Encoding.Unicode.GetString(vetorBytes);

    return resultado;

}

Pois é SO que nessa linha tambem tem algumas palavra então ele retorna um error dizendo:

"Caractere inválido em uma seqüência Base-64."

Link to comment
Share on other sites

  • 0
Cara você pode tentar trabalhar tratando essa exceção. Tipo, se der esse erro, pular pra próxima palavra.

Dê uma olhada também nesse link:

http://stackoverflow.com/questions/3857999...ng-inside-of-it

Vlw pela Resposta mas Tipo eu Estou Usando VB.net e esse Codigo e para C# tentei converter mas o codigo não funciona . Segue Abaixo o Codigo Convertido:

' non-base64 ASCII chars 
        Dim delimiters = New Char() {}
        Dim possibles = TextBox2.Text.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
        'need to tweak to include padding chars in matches, but still split on padding?
        'maybe better off creating a regex to match base64 + padding
        'and using Regex.Split?

        For Each match As Var In possibles
            Try
                Dim converted = Convert.FromBase64String(match)
                Dim text = System.Text.Encoding.UTF8.GetString(converted)
                If Not String.IsNullOrEmpty(text) Then
                    value = value.Replace(match, text)
                End If
                'handle it
            Catch generatedExceptionName As System.ArgumentNullException
                'handle it
            Catch generatedExceptionName As System.FormatException
            End Try
        Next

Retorna o Seguinte Error : "Type 'Var' is not defined"

Link to comment
Share on other sites

  • 0
Tente

"For Each match As Object In possibles"

Mas lembre-se de adaptar o código (campos, variáveis, lógica) de acordo com o seu programa. Ctrl + C, Ctrl + V não dá muito certo.

Vlw pela Dica Funcionou Perfeitamente !

Mas enquanto eu Esperava sua resposta acabei por fazer meu projeto de uma outra maneira.

eu estava pegando o source de uma pagina da web onde eu so queria a parte que estava em base 64. então peguei na net um codigo para baixar o source da pagina e salvar em um txt:

Try
            ' inicia o leitor da stream para a pagina atual
            Dim myHttpWebRequest As HttpWebRequest = WebRequest.Create(urll)
            Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
            Dim recvStream As Stream = myHttpWebResponse.GetResponseStream()

            ' le o stream no formato "utf-8"
            Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
            Dim readStream As New StreamReader(recvStream, encode)
            Dim sPagina As String
            While (readStream.Peek() > -1)
                sPagina += readStream.ReadLine() + vbCrLf
            End While
            Dim f As New IO.StreamWriter("c:\arquivo.txt")
            f.Write(sPagina)
            f.Close()
        Catch ex As Exception
            Beep()
        End Try
Apos da uma analisada nesse código percebi que todas as palavras no código estava dentro de Aspas Duplas... Então Pensei "Opa vou usar isso como um delimitador" e foi isso que fiz peguei um código para ler arquivos de txt com limitadores e coloquei tudo em um ComboBox, então só foi ir até o index onde estava o código que eu queria e pimba mandava decodificar ! Vou Por Abaixo Todo o Código do Meu Projeto para Quem Tiver uma Duvida Parecida:
Imports System.IO
Imports System.Net
Imports System.Text

Public Class Form1
'função para ler o arquivo de texto com delimitador
    Public Shared Function lerArquivo(ByVal arquivo As String, ByVal delimitador As String)
        Try
            Return Split(System.IO.File.OpenText(arquivo).ReadToEnd(), delimitador)
        Catch e As FileNotFoundException
            MessageBox.Show("Arquivo não Localizado")
        End Try
    End Function
    
    Function GerarTXT(ByVal urll As String)
       'função para baixar o código fonte para um txt. usar com o camando GerarTXT("URL a ser baixada")
       'Obs ele não cria nem verifica se o arquivo existe por isso o arquivo deve ser existente Não adaptei para isso :D
 Try
            ' inicia o leitor da stream para a pagina atual
            Dim myHttpWebRequest As HttpWebRequest = WebRequest.Create(urll)
            Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
            Dim recvStream As Stream = myHttpWebResponse.GetResponseStream()

            ' le o stream no formato "utf-8"
            Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
            Dim readStream As New StreamReader(recvStream, encode)
            Dim sPagina As String
            While (readStream.Peek() > -1)
                sPagina += readStream.ReadLine() + vbCrLf
            End While
            Dim f As New IO.StreamWriter("c:\arquivo.txt")
            f.Write(sPagina)
            f.Close()
        Catch ex As Exception
            Beep()
        End Try
        'Usa a função de ler o arquivo para preencher o ComboBox
        ComboBox1.DataSource = lerArquivo("c:\arquivo.txt", """")
        ' Define o index 429 com o index a ser visto de primeira no meu caso esse é o index do base64
        ComboBox1.SelectedIndex = 429
    End Function
End Class

Bom mas de qualquer maneira sua ajuda foi muito Util e tenho certeza que usarei ela em meus projetos Futuros

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...