亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? peeridbytedecoder.java

?? Azureus is a powerful, full-featured, cross-platform java BitTorrent client
?? JAVA
字號:
/*
 * Created on Nov 12, 2003
 * Created by Alon Rohter
 * Copyright (C) 2003-2004 Alon Rohter, All Rights Reserved.
 * 
 */
package com.aelitis.azureus.core.peermanager.utils;

import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.Constants;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.FileUtil;

import java.io.*;

/**
 * Used for identifying clients by their peerID.
 */
public class PeerIDByteDecoder {
	
	final static boolean LOG_UNKNOWN;
	
	static{
		String	prop = System.getProperty("log.unknown.peerids");
		
		LOG_UNKNOWN = prop != null && prop.equals("1");
	}
	 
  /**
   * Decodes the given peerID, returning an identification string.
   */  
  protected static String decode(byte[] peer_id) {
    String decoded = null;
    byte[] peerID = new byte[peer_id.length];
    System.arraycopy(peer_id, 0, peerID, 0, peer_id.length);
            
    FileWriter log = null;
    File logFile = FileUtil.getUserFile("identification.log");
    
    int iFirstNonZeroPos = 0;
    try {
      if( (decoded = decodeAzStyle( peerID, "AZ", "Azureus" )) != null ) return decoded;
      if( (decoded = decodeAzStyle( peerID, "LT", "libtorrent" )) != null ) return decoded;
      if( (decoded = decodeAzStyle( peerID, "TS", "TorrentStorm" )) != null ) return decoded;
      if( (decoded = decodeAzStyle( peerID, "MT", "MoonlightTorrent" )) != null ) return decoded;
      if( (decoded = decodeAzStyle( peerID, "XT", "XanTorrent" )) != null ) return decoded;
      if( (decoded = decodeAzStyle( peerID, "bk", "BitKitten (libtorrent)" )) != null ) return decoded;
      if( (decoded = decodeTornadoStyle( peerID, "T", "BitTornado" )) != null ) return decoded;
      if( (decoded = decodeTornadoStyle( peerID, "A", "ABC" )) != null ) return decoded;
      if( (decoded = decodeMainlineStyle( peerID, "M", "Mainline" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "martini", "Martini Man" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "oernu", "BTugaXP" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "BTDWV-", "Deadman Walking" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "PRC.P---", "BitTorrent Plus! II" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "P87.P---", "BitTorrent Plus!" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "S587Plus", "BitTorrent Plus!" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 5, "Azureus", "Azureus 2.0.3.2" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "-G3", "G3 Torrent" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 4, "btfans", "SimpleBT" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "btuga", "BTugaXP" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "DansClient", "XanTorrent" )) != null ) return decoded;
      if( (decoded = decodeSimpleStyle( peerID, 0, "Deadman Walking-", "Deadman" )) != null ) return decoded;


      String burst = new String(peerID, 0, 5, Constants.BYTE_ENCODING);
      if( burst.equals( "Mbrst" ) ) {
        String major = new String(peerID, 5, 1, Constants.BYTE_ENCODING);
        String minor = new String(peerID, 7, 1, Constants.BYTE_ENCODING);
        String sub   = new String(peerID, 9, 1, Constants.BYTE_ENCODING);
        return "Burst! " + major + "." + minor + "." + sub;
      }
            
      String turbobt = new String(peerID, 0, 7, Constants.BYTE_ENCODING);
      if (turbobt.equals("turbobt")) {
        return "TurboBT " + new String(peerID, 7, 5, Constants.BYTE_ENCODING);
      }
      
      //not 100% sure on this one
      String plus = new String(peerID, 0, 4, Constants.BYTE_ENCODING);
      if( plus.equals( "Plus" ) ) {
        String v1 = new String(peerID, 4, 1, Constants.BYTE_ENCODING);
        String v2 = new String(peerID, 5, 1, Constants.BYTE_ENCODING);
        String v3 = new String(peerID, 6, 1, Constants.BYTE_ENCODING);
        return "Plus! " + v1 + "." + v2 + "." + v3;
      }
      
      String xbt = new String(peerID, 0, 3, Constants.BYTE_ENCODING);
      if( xbt.equals( "XBT" ) ) {
        String v1 = new String(peerID, 3, 1, Constants.BYTE_ENCODING);
        String v2 = new String(peerID, 4, 1, Constants.BYTE_ENCODING);
        String v3 = new String(peerID, 5, 1, Constants.BYTE_ENCODING);
        return "XBT " + v1 + "." + v2 + "." + v3;
      }
      
      String shadow = new String(peerID, 0, 1, Constants.BYTE_ENCODING);
      if (shadow.equals("S")) {
        
        if ( (peerID[6] == (byte)45) && (peerID[7] == (byte)45) && (peerID[8] == (byte)45) ) {
          String name = "Shad0w ";
          for (int i = 1; i < 3; i++) {
            String v = new String(peerID, i, 1, Constants.BYTE_ENCODING);
            name = name.concat( Integer.parseInt(v, 16) + "." );
          }
          String v = new String(peerID, 3, 1, Constants.BYTE_ENCODING);
          name = name.concat( "" + Integer.parseInt(v, 16) );
          return name;
        }
        
        if (peerID[8] == (byte)0) {
          String name = "Shad0w ";
          for (int i = 1; i < 3; i++) {
            name = name.concat(String.valueOf(peerID[i]) + ".");
          }
          name = name + String.valueOf(peerID[3]);
          return name;
        }
      }
      
      String bitspirit = new String(peerID, 2, 2, Constants.BYTE_ENCODING);
      if (bitspirit.equals("BS")) {
        if (peerID[1] == (byte)0)  return "BitSpirit v1";
        if (peerID[1] == (byte)2)  return "BitSpirit v2";
      }
            
      String upnp = new String(peerID, 0, 1, Constants.BYTE_ENCODING);
      if (upnp.equals("U")) {
        if (peerID[8] == (byte)45) {
          String version = new String(peerID, 1, 3, Constants.BYTE_ENCODING);
          String name = "UPnP ";
          for (int i = 0; i < 2; i++) {
            name = name.concat(version.charAt(i) + ".");
          }
          name = name + version.charAt(2);
          return name;
        }  
      }
      
      String bitcomet = new String(peerID, 0, 4, Constants.BYTE_ENCODING);
      if (bitcomet.equals("exbc")) {
        String name = "BitComet ";
        name = name.concat(String.valueOf(peerID[4]) + ".");
        name = name.concat(String.valueOf(peerID[5]/10));
        name = name.concat(String.valueOf(peerID[5]%10));
        return name;
      }
      
      // Shareaza check
      boolean bShareaza = true;
      for (int i = 0; i < 16; i++) {
        if (peerID[i] == (byte)0) {
          bShareaza = false;
          break;
        }
      }
      if (bShareaza) {
        for (int i = 16; i < 20; i++) {
      		if (peerID[i] != (peerID[i % 16] ^ peerID[15 - (i % 16)])) {
            bShareaza = false;
      			break;
      		}
     		}
     		return "Shareaza";
      }
      
      iFirstNonZeroPos = 20;
      for (int i = 0; i < 20; i++) {
        if (peerID[i] != (byte)0) { iFirstNonZeroPos = i; break; }
      }
      
      //TODO
      //BitSpirit HTTPBT-compatable extention?
      //Bitspirit clients always have a "BS" in front....this seems to be a
      //client that also supports the httpbt extension
      //if( iFirstNonZeroPos == 8 ) {
      //  String httpbt = new String(peerID, 14, 6, Constants.BYTE_ENCODING);
      //  if( httpbt.equals( "HTTPBT" ) ) {
      //    return "Unknown HTTPBT client";
      //  }
      //}
      
      
      byte three = (byte)3;
      if ((iFirstNonZeroPos == 9)
          && (peerID[9] == three)
          && (peerID[10] == three)
          && (peerID[11] == three)) {
        return "Snark";
      }
      
      if ((iFirstNonZeroPos == 12) && (peerID[12] == (byte)97) && (peerID[13] == (byte)97)) {
        return "Experimental 3.2.1b2";
      }
      if ((iFirstNonZeroPos == 12) && (peerID[12] == (byte)0) && (peerID[13] == (byte)0)) {
        return "Experimental 3.1";
      }
      if (iFirstNonZeroPos == 12) return "Mainline";
      
    }
    catch (Exception e) { Debug.out(e.toString()); }
    
    if (LOG_UNKNOWN) {
      try {
        log = new FileWriter( logFile, true );

        String text = new String(peerID, 0, 20, Constants.BYTE_ENCODING);
        text = text.replace((char)12, (char)32);
        text = text.replace((char)10, (char)32);
        
        log.write("[" + text + "] ");
        
        for (int i=0; i < 20; i++) {
          log.write(i+"=" + peerID[i] + " ");
        }
        log.write("\n");
        
      }
      catch (Exception e) {
        Debug.out(e.toString());
      }
      finally {
        try {
          if (log != null) log.close();
        }
        catch (IOException ignore) {/*ignore*/}
      }
      
    }

    String sPeerID = getPrintablePeerID( peerID, iFirstNonZeroPos );

    
    return MessageText.getString("PeerSocket.unknown") + " " + iFirstNonZeroPos +"[" + sPeerID + "]";
}
  
  
  
  private static String decodeAzStyle( byte[] id, String ident, String name ) {
    try {
      if( (id[0] == (byte)45) && (id[7] == (byte)45) ) {
        String decoded = new String( id, 1, 2, Constants.BYTE_ENCODING );
        if( decoded.equals( ident ) ) {
          String v1 = new String( id, 3, 1, Constants.BYTE_ENCODING );
          String v2 = new String( id, 4, 1, Constants.BYTE_ENCODING );
          String v3 = new String( id, 5, 1, Constants.BYTE_ENCODING );
          String v4 = new String( id, 6, 1, Constants.BYTE_ENCODING );
          return name + " " + v1 + "." + v2 + "." + v3 + "." + v4;
        }
      }
    }
    catch( Exception e ) {  return null;  }
    return null;
  }
  
  
  private static String decodeTornadoStyle( byte[] id, String ident, String name ) {
    try {
      if( (id[4] == (byte)45) && (id[5] == (byte)45) && (id[6] == (byte)45)
          && (id[7] == (byte)45) && (id[8] == (byte)45)) {
        String decoded = new String( id, 0, 1, Constants.BYTE_ENCODING );
        if( decoded.equals( ident ) ) {
          int v1 = Integer.parseInt( new String( id, 1, 1, Constants.BYTE_ENCODING ), 16 );
          int v2 = Integer.parseInt( new String( id, 2, 1, Constants.BYTE_ENCODING ), 16 );
          int v3 = Integer.parseInt( new String( id, 3, 1, Constants.BYTE_ENCODING ), 16 );
          return name + " " + v1 + "." + v2 + "." + v3;
        }
      }
    }
    catch( Exception e ) {  return null;  }
    return null;
  }
  
  
  private static String decodeSimpleStyle( byte[] id, int start_pos, String ident, String name ) {
    try {
      String decoded = new String( id, start_pos, ident.length(), Constants.BYTE_ENCODING );
      if( decoded.equals( ident ) ) return name;
    }
    catch( Exception e ) {  return null;  }
    return null;
  }
  
  
  private static String decodeMainlineStyle( byte[] id, String ident, String name ) {
    try {
      if ( (id[2] == (byte)45) && (id[4] == (byte)45) && (id[6] == (byte)45) && (id[7] == (byte)45) ) {
        String decoded = new String( id, 0, 1, Constants.BYTE_ENCODING );
        if( decoded.equals( ident ) ) {
          String v1 = new String( id, 1, 1, Constants.BYTE_ENCODING );
          String v2 = new String( id, 3, 1, Constants.BYTE_ENCODING );
          String v3 = new String( id, 5, 1, Constants.BYTE_ENCODING );
          return name + " " + v1 + "." + v2 + "." + v3;
        }
      }
    }
    catch( Exception e ) {  return null;  }
    return null;
  }
  
  

  protected static String
  getPrintablePeerID(
  	byte[]		peerID,
  	int iStartAtPos )
  {
  	String	sPeerID = "";
  	
    try {
    	for (int i = iStartAtPos; i < peerID.length; i++) {
    	  int b = (0xFF & peerID[i]);
    		if (b < 32 || b > 127)
    			peerID[i] = '-';
    	}
    	sPeerID = new String(peerID, iStartAtPos, peerID.length - iStartAtPos, 
    	                     Constants.BYTE_ENCODING);
    }
    catch (UnsupportedEncodingException ignore) {}
    catch (Exception e) {}
    
    return( sPeerID );
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆9l精品三级站| 福利电影一区二区| 激情综合网av| 在线观看欧美日本| 国产亚洲成年网址在线观看| 亚洲制服丝袜一区| 国产精品亚洲综合一区在线观看| 在线观看国产91| 中文字幕乱码亚洲精品一区| 久久99国内精品| 欧美色综合网站| 亚洲视频一区二区在线观看| 黄一区二区三区| 制服丝袜中文字幕亚洲| 亚洲v中文字幕| 91香蕉视频黄| 国产精品欧美一级免费| 黄色资源网久久资源365| 欧美日韩国产精选| 有码一区二区三区| 91天堂素人约啪| 国产精品欧美一级免费| 国产乱人伦精品一区二区在线观看| 欧美日韩一区二区在线视频| 夜夜嗨av一区二区三区中文字幕| 成人免费视频国产在线观看| 国产日产欧产精品推荐色 | 欧美一区二区三区电影| 1024亚洲合集| 91亚洲精品一区二区乱码| 国产精品视频在线看| 国产成a人亚洲精| 国产亚洲成aⅴ人片在线观看 | 亚洲夂夂婷婷色拍ww47| 91麻豆国产精品久久| 椎名由奈av一区二区三区| 成人动漫一区二区在线| 国产精品久久久久永久免费观看 | 奇米影视在线99精品| 宅男噜噜噜66一区二区66| 日韩中文字幕亚洲一区二区va在线| 欧美三级中文字幕| 午夜精品久久久久久久| 欧美一区二视频| 琪琪久久久久日韩精品| 久久久久综合网| 国产99久久久国产精品| 国产精品乱子久久久久| 色综合中文字幕| 亚洲成人免费看| 欧美一区二区国产| 黑人巨大精品欧美一区| 亚洲精品中文在线影院| 欧美二区在线观看| 狠狠色综合日日| 亚洲国产精品成人久久综合一区| av电影一区二区| 亚洲综合丝袜美腿| www久久精品| 一本大道久久a久久精品综合| 亚洲国产wwwccc36天堂| 日韩精品综合一本久道在线视频| 国产精品123| 亚洲免费资源在线播放| 666欧美在线视频| 国产高清亚洲一区| 一区二区三区在线观看动漫| 日韩精品在线看片z| 91欧美激情一区二区三区成人| 亚洲国产成人av网| 国产欧美日韩另类一区| 精品视频全国免费看| 国内外成人在线| 亚洲第一综合色| 久久欧美中文字幕| 欧美日韩精品一区视频| 国产精品一区专区| 亚洲综合色区另类av| 久久久久久电影| 欧美色涩在线第一页| 丁香婷婷综合激情五月色| 日韩精品欧美精品| 亚洲欧美视频一区| 国产亚洲精品福利| 欧美一区二区三区视频在线| 93久久精品日日躁夜夜躁欧美| 美女视频一区在线观看| 亚洲一线二线三线视频| 亚洲国产精品成人综合| 精品粉嫩超白一线天av| 欧美日韩国产bt| 97se亚洲国产综合自在线| 国产精品自在在线| 美日韩黄色大片| 午夜成人免费电影| 一区二区三区中文字幕在线观看| 国产亚洲一本大道中文在线| 91精品久久久久久久91蜜桃| 91黄色小视频| 99国产精品久| 国产盗摄精品一区二区三区在线| 日本免费在线视频不卡一不卡二| 亚洲一区视频在线| 亚洲乱码精品一二三四区日韩在线| 国产女主播在线一区二区| 日韩你懂的在线播放| 欧美一区二区网站| 欧美久久久一区| 日本韩国欧美国产| 色综合色综合色综合色综合色综合| 成人性生交大片免费| 懂色av一区二区三区免费观看| 国产露脸91国语对白| 狠狠色狠狠色合久久伊人| 九一九一国产精品| 国产剧情一区二区| 国产精品一二三四五| 国产一区二区女| 风间由美性色一区二区三区| 成人一区二区三区| 成人av在线播放网址| 99国产精品99久久久久久| 色香蕉成人二区免费| 在线看日韩精品电影| 欧美色区777第一页| 91精品视频网| 91精品欧美综合在线观看最新| 在线不卡一区二区| 欧美xxxxx牲另类人与| 久久婷婷国产综合精品青草| 国产午夜亚洲精品午夜鲁丝片 | 国产成人精品亚洲777人妖| 国内精品久久久久影院色| 国产91精品久久久久久久网曝门| 成人免费黄色大片| 欧美亚洲愉拍一区二区| 日韩欧美自拍偷拍| 国产精品日日摸夜夜摸av| 亚洲精品欧美激情| 蜜桃视频在线观看一区| 国产米奇在线777精品观看| 成人激情小说乱人伦| 在线一区二区观看| 欧美videofree性高清杂交| 国产欧美一区二区三区在线看蜜臀| 国产精品成人免费在线| 午夜精品福利在线| 国内精品写真在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产精品麻豆欧美日韩ww| 一区二区免费视频| 免费三级欧美电影| 99热国产精品| 欧美日韩精品一区二区| 日本一区二区免费在线| 亚洲午夜视频在线观看| 国产精品小仙女| 在线电影欧美成精品| 亚洲国产成人在线| 蜜臀精品一区二区三区在线观看| 丁香激情综合五月| 日韩一级片网站| 亚洲女同一区二区| 国产一区二区三区四区五区美女| 色综合久久66| 久久久99久久| 免费在线观看精品| 欧美日韩一区二区在线观看| 国产精品亲子伦对白| 麻豆精品精品国产自在97香蕉| 91色.com| 国产欧美日韩久久| 免费人成精品欧美精品| 欧美中文字幕一区二区三区亚洲 | 中文字幕一区二区5566日韩| 老汉av免费一区二区三区 | 亚洲国产一区二区视频| 国产黄色精品网站| 精品福利在线导航| 香港成人在线视频| 色嗨嗨av一区二区三区| 欧美激情综合在线| 国产精品亚洲一区二区三区在线| 欧美一区二区视频网站| 亚洲一二三级电影| 在线日韩国产精品| 亚洲男人都懂的| 99视频在线观看一区三区| 国产欧美日产一区| 国产乱子伦视频一区二区三区| 日韩精品一区在线观看| 日本欧美一区二区在线观看| 欧美日韩一本到| 亚洲一区精品在线| 在线视频国内自拍亚洲视频| 亚洲欧美区自拍先锋| 91蜜桃婷婷狠狠久久综合9色| 国产精品伦一区二区三级视频| 成人网在线播放| 国产日韩欧美综合一区|