2009-12-03 12 views
1

포함 된 SQL 문을 포함하는 일부 이진 텍스트 파일에서 문자열 데이터를 다듬 으려합니다. 읽을 수있는 텍스트를 추출 할 수있는 간단한 방법이 필요하지 않습니다. vb.net을 사용하고 있지만 외부 유틸리티를 호출해도 작동합니다.VB.Net의 이진 파일에서 문자열 추출

답변

0

감사합니다. 훌륭한 아이디어. 정말로 나를 도왔습니다. Upvotes 주위. 끝났어. 나는 그들이 끈임을 확신 할 필요가 없었기 때문에 나는 빠르고, 거칠고, 추악한 해킹으로 갔다.

'strip out non-string characters 
For Each b As Byte In byteArray 
     If b = 9 Or b = 10 Or b = 13 Or (b > 31 And b < 127) Then 
      newByteArray(i) = b.ToString 
      i += 1 
     End If 
    Next 

    'move it into a string 
    resultString = System.Text.Encoding.ASCII.GetString(newByteArray) 
1

처음에는 그렇게 느껴지지 않습니다. 문자열은 여러 가지 방법으로 인코딩 될 수 있습니다. "읽을 수있는 텍스트"라고 생각하는 부분, 읽을 수없는 부분은 어떻게 보입니까? 그것은 다음과 같습니다 말 : 그것은 가능성이 UTF-16 또는 다른 멀티 바이트 인코딩을 사용하여 인코딩되어 있기 때문에 당신이 운이

&8)JÓxZZ`\■£ÌS?E?L?E?C?T?*?F?R?O?M?m?y?T?b?l?§ıÍ4¢ 

. 이들은 인식하기가 다소 어렵습니다. 그러나 다른 모든 경우 (UTF-8, ISO-8859-1, Windows-1252)에서는 텍스트 또는 텍스트가 아닌 개별 문자를 구별하는 것이 불가능합니다. "읽을 수있는 텍스트"가 시작되고 끝나는 방법.

요점은 무엇이든 허용되며 읽을 수있는 텍스트로 간주됩니다. UTF-8, ASCII 및 Windows-1252는 NULL 문자도 허용합니다 (일부 프로그래밍 언어는 그렇지 않습니다). Here's a thread 당신이 어떻게 진행할 수 있는지에 대한 VB 예제를 제공하면, 몇 가지 힌트를 줄 수 있습니다.

추 신 :이 유형의 데이터를 분석하는 것은 어려울 수 있습니다. 어딘가에 파일을 업로드 할 수 있다면 큰 도움이됩니다. 참고로

+0

메모장에서보고 싶은 텍스트 파일을 열 때 내가 걱정하는 문자열 부분이 명확하게 표시됩니다. 나는 내가 할 필요가 있다고 생각하는 것이 문자열이 아닌 것을 제거하는 것이고 나는 설정 될 것이라고 생각 했는가? – Jeff

+1

나는 당신이 옳았 으면 좋겠지 만 그렇게 쉬운 것은 아니다. 메모장은 이러한 문자열을 알지 * 않습니다. 단지 표시합니다. 바이너리 파일 (예 : 이미지)을 보면 "읽을 수있는"부분을 찾을 수 있습니다. 문자 단위로 볼 때, 전체 파일에서 항상 "문자열"인 문자 범위를 선택할 수 있습니까? – Abel

3

.

MinGW에서 Win32 용 GNU binutils (문자열 포함) : http://sourceforge.net/projects/mingw/files/을 가져옵니다.

+0

참고로, 문자열의 출력에는 많은 오 탐지 (false positives)가 포함되지만 찾고있는 문자열의 문법 (SQL 문)을 알고 있다면 찾고자하는 것만 필터링하는 것이 어렵지 않습니다 . –

+0

+1, esp. 나는 그것을 잘보고 부적절하다고 생각하기 때문에. 내가 틀렸어! ;-). 휴리스틱 스를 사용하는 것은 Rosetta Stone이 아닙니다 ... – Abel