문제

내장 된 SQL 문이 포함 된 일부 바이너리 텍스트 파일에서 문자열 데이터를 긁어 내고 싶습니다. 멋진 정리가 필요하지 않습니다. 읽을 수있는 텍스트를 추출 할 수있는 방법이 있습니다. vb.net을 사용하고 있지만 외부 유틸리티에 대한 호출도 효과가 있습니다.

도움이 되었습니까?

해결책 4

감사합니다. 훌륭한 아이디어. 정말로 생각하는 데 도움이되었습니다. 주위에 반대합니다. 결국 나는 그들이 끈이라고 확신 할 필요가 없었기 때문에 나는 빠르고, 조잡하고, 못생긴, 해킹을 가지고 갔다.

 '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)

다른 팁

GNU 문자열 유틸리티는 영원히 주변에 있었고 이진에서 "문자열처럼 보이는"데이터를 잡아 당기기 위해 휴리스틱을 사용하여 정확하게 이런 일을합니다.

Mingw의 Win32에 대한 GNU Binutils (현 포함)를 잡아라 : http://sourceforge.net/projects/mingw/files/.

이것은 처음에는 보일 수있는 것처럼 사소하지 않습니다. 문자열은 여러 가지 방법으로 인코딩 될 수 있습니다. "읽기 쉬운 텍스트"라고 생각하는 것은 읽을 수없는 부분이 어떻게 보입니까? 이렇게 보인다 :

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

UTF-16 또는 다른 멀티 바이트 인코딩을 사용하여 인코딩되기 때문에 운이 좋다. 이것들은 오히려 인식하기가 다소 사소합니다. 그러나 거의 모든 사례 (UTF-8, ISO-8859-1, Windows-1252)에서는 텍스트 또는 비 텍스트로 개별 캐릭터를 구별하는 것은 불가능합니다. "읽기 쉬운 텍스트"가 시작되고 어떻게 끝나는 지.

요점은 다음과 같습니다. 모든 것이 허용되고 읽을 수있는 텍스트로 간주됩니다. UTF-8, ASCII 및 Windows-1252는 널 문자조차 허용합니다 (일부 프로그래밍 언어는 그렇지 않습니다). 여기 스레드가 있습니다 그것은 당신이 진행할 수있는 방법에 대한 VB 예를 제공하면, 당신에게 몇 가지 힌트를 줄 수 있습니다.

추신 : 이러한 유형의 데이터를 분석하는 것은 어려울 수 있으므로 파일을 어딘가에 업로드하여 살펴볼 수 있다면 큰 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top