문제

나를 시작으로 약간의 배경입니다.

아침에 하나의 사용자가 보고 Testuff 의 설정 파일은 보고되었으로 감염된 바이러스에 의해 캘리포니아 안티 바이러스입니다.자신감이 긍정적이다,나는 웹에 있는 사용자의 다른 프로그램(SpyBot)보고 동일한 문제입니다.

지금한 실제적인 질문입니다.

가정 바이러스가 찾는 특정 바이너리에서 파일,나를 찾아보 시퀀스에서 두 파일을 모두고 희망을 찾을 수 있는 방법을 조정할 설치 스크립트를 방지하기 시퀀스에서 나타납니다.

나는 다음과 같은 라이브러리는 모두 지원되며,그러나 그것의 실행 된 시간이 오래 지금 내가 있었는지 궁금했을 경우는 더 나은 또는 더 빠른 방법입니다.

from difflib import SequenceMatcher

spybot = open("spybotsd160.exe", "rb").read()
testuff = open("TestuffSetup.exe", "rb").read()

s = SequenceMatcher(None, spybot, testuff)
print s.find_longest_match(0, len(spybot), 0, len(testuff))

더 나은 라이브러리를 위한 파이썬 또는 다른 언어에는 작업을 수행 할 수 있습니까?완전히 다른 방법으로 문제를 해결하기 위해 환영합니다.

도움이 되었습니까?

해결책

장 일반적인 문제는 하위 문자열.나 difflib 사용 DP 솔루션을 확실히 너무 느리게 비교하는 실행 파일.당신이 할 수 있으로 훨씬 더 나은 접미사무/배열입니다.

를 사용하여 perl 트리::미 될 수 있는 가장 쉬운 솔루션입니다.분명히 그것은 모든 일반적인 부분에서 지정된 길이 범위:

@lcs = $tree->lcs;
@lcs = $tree->lcs($min_len, $max_len);
@lcs = $tree->longest_common_substrings;

다른 팁

는 경우에도 당신은 그것을 찾을 이 방법은 없는 것을 보장장치로 실제로는 보았습니다.대신,당신이 찾을 수 있습니다 일반적인 코드를 초기화 또는 문자열 테이블에 추가하여 동일한 컴파일러에 대한 인스턴스입니다.

왜 당신은 연락처 캘리포니아에게 그들에게 그들이 그들이 무엇을 찾는 바이러스?

또는,당신은 파일을 복사하고 변화를 바이트까지 경고 사라졌(수 있을 동안에 따라 크기).

그것은 가능한 바이러스를 검출할 수 있보다 훨씬 더 복잡한 단순히 고정된 문자열입니다.

더 나은지에 대해 궁금해 복잡하고 시간 이러한 종류의 알고리즘을 필요합니다.

이 있는 경우에 관심이-여기 .ps 문서 여기에 연결되어 당신이 찾을 수 있습니다 좋은 도입으로 이 주제.

는 경우 구현을 위한 이러한 알고리즘이 존재,나는 말할 수 없습니다.

내가 의심되는 보고한 바이너리 문자열을 돕기 위하여 려고 하고 있지 않다.는 프로그램을 설치 될 가능성이 높고 일부가'의심'일이다.

당신은 아마 이야기 할 필요가하는 캘리포니아 및 spybot 에 대한 목록에 당신의 설치,또 무엇인지에 대해 트리거가 용이하다.

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