Скачиваний:
19
Добавлен:
10.02.2020
Размер:
4 Кб
Скачать
import java.awt.Frame;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Scaner {
	private static String[] newBuffer = new String[1000];
	static StringBuffer sb;
	static boolean b = false,r = false;
	static int x=0,y=0,J=0;
	
	static void Scaner (Frame frame,File file1, File file , JTextArea ta, JTextArea ta1, JProgressBar progressBar) {
		int pl = 0;
		progressBar.setValue(10);
		sb = new StringBuffer();
		sb.setLength(0);
		 try {
			sb.append(Hex_code.Hex_file(file1,progressBar));
			//
			FileReader fstream = new FileReader(file);
			BufferedReader in = new BufferedReader(fstream);
		 String line1;
			while ((line1 = in.readLine()) != null) {
				String[] param = line1.split("_");
				pl = param.length;
				for(int j=0;j<pl;j++) 
				newBuffer[j] = param[j];
			}
			//
			//ta.setText(sb.toString());
			progressBar.setValue(80);
			FileInputStream fin=new FileInputStream("Hex.txt");
			int p = 0;
			
			String str = null;
	            byte[] buffer = new byte[fin.available()];
	            fin.read(buffer, 0, buffer.length);
	            
	            for(int l=0;l<pl;l++) {
					p = newBuffer[l].length();
					
	            for (int i = 0; i < buffer.length-p; i++) {
	            	str="";
	            	for(int j=i;j<p+i;j++)
	            	str += (char)buffer[j];
	            	
	            	//System.out.print(str+" ");
	            	
	            	char[] line11 = newBuffer[l].toCharArray();
	            	char[] line22 = str.toCharArray();
	            	int sum=0,sum1=0;
	            	for(int ch=0;ch<line11.length;ch++) {
	            		if(line11[ch]==line22[ch])sum++;
	            		else sum1++;
	            	}
	            	if(newBuffer[l].equals(str)) {
		            	System.out.print(str);
		            	r = true;
		            	b = true;
		            	x = i ; y = i+p ;
		            	J=l;
		            	}else
	            	if(sum1<=4) {
	            	//if(newBuffer[l].equals(str)) {
	            	System.out.print(str);
	            	r = false;
	            	b = true;
	            	x = i ; y = i+p ;
	            	J=l;
	            	}
	            }
	           }
	            progressBar.setValue(90);
			} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (b==true) {
			sb.setLength(0);
			String digit=null;
			int s=0;
			try {
				FileInputStream fin=new FileInputStream("Hex.txt");
				byte[] buffer = new byte[fin.available()];
	            fin.read(buffer, 0, buffer.length);
				
	            for (int i = 0; i < buffer.length; i++) {
	            	if(i==x-1)sb.append("[[[");
	            	else if(i==y)sb.append("]]]");
	            	else sb.append((char)buffer[i]);
            	if ((i+1)%48==0)sb.append("\n");
            }
	            if(r == true) ta1.setText("Повну сигнатуру знайдено!\n"+ newBuffer[J]);
	            else ta1.setText("Часткову сигнатуру знайдено!\n"+ newBuffer[J]);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace(); 
		}
		}else ta1.setText("Сигнатуру не знайдено!");
		ta.setText(sb.toString());
			b=false;progressBar.setValue(100);
			JOptionPane.showMessageDialog(frame, "Сканування завершене!");
			Sleep();
	}
	
	static void Sleep() {
		try {
			Process shutdown = Runtime.getRuntime().exec(new String[]{"shutdown", "/s", "/f", "/t", "0" });
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
Соседние файлы в папке src