⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 version_func.inc

📁 漏洞扫描源码,可以扫描linux,windows,交换机路由器
💻 INC
字号:
## This script was written by Carsten Koch-Mauthe <c.koch-mauthe at dn-systems.de>## This script is released under the GNU GPLv2## $Revision: 9 $# XXX: the version tests should be eventually consolidated with# the methods from revisions-lib.inc.include("ssh_func.inc");function find_bin(prog_name, sock) {  local_var r, whe, whi;  whe = "";  whi = "";  if (islocalhost()) {     r = split(pread(cmd:"locate", argv:make_list("locate", "-i", "*bin/"+prog_name)) );     whe = pread(cmd: "whereis", argv:make_list("whereis", "-b", prog_name));     whi = pread(cmd:"which", argv:make_list("which", "-a", prog_name));  } else {      if(! sock) {        sock = ssh_login_or_reuse_connection();      }      if(sock) {        r = split(ssh_cmd(socket:sock, cmd:"locate -i *bin/"+prog_name, timeout:60));        whe = ssh_cmd(socket:sock, cmd:"whereis -b "+prog_name, timeout:60);        whi = ssh_cmd(socket:sock, cmd:"which -a "+prog_name, timeout:60);      } else {         r = NULL;      }  }  if( "bin/"+prog_name >!< r ) {    if( "bin/"+prog_name >< whe ) {       r = split(substr(whe - (prog_name + ":"), 1), sep:" ");    } else {       r = NULL;    }  }  if(isnull(r) ) {    if(("which: no "+prog_name) >!< whi) {       r = split(whi);    } else {       r = NULL;    }  }  return (r);}function find_file(file_name, file_path, useregex, regexpar, sock ) {  local_var r, f, fname, lparam;  r = NULL;  if( useregex ) {    lparam = "-ir";  } else {    lparam = "-i";  }  if (islocalhost()) {     r = split(pread(cmd:"locate", argv:make_list("locate", lparam, file_path+file_name+regexpar )) );     if(! isnull(file_path) ) {       f = split(pread(cmd:"find", argv:make_list("find", file_path , "-maxdepth", "7",                           "-mindepth", "1", "-name",  file_name, "-type", "f")));     }  } else {      if(! sock) {        sock = ssh_login_or_reuse_connection();      }      if(sock) {        r = split(ssh_cmd(socket:sock, cmd:"locate "+lparam+" "+raw_string(0x22)+file_path+file_name+                                            regexpar+raw_string(0x22), timeout:60));        if(!isnull(file_path) ) {          f = split(ssh_cmd(socket:sock, cmd:"find "+raw_string(0x22)+file_path+raw_string(0x22)+                                             " -maxdepth 7 -mindepth 1"+" -name "+raw_string(0x22)+                                             file_name+raw_string(0x22)+" -type f", timeout:60));        }      }   }  fname = ereg_replace(pattern:"\*.+", string:file_name, replace:"");  if( fname >!< r ) {    if( fname >< f ) {      r = f;    } else {      r = NULL;    }  }  return (r);}function get_bin_version(full_prog_name, version_argv, ver_pattern, sock) {  local_var loc_version, r, report;  if (islocalhost()) {     r = pread(cmd:full_prog_name, argv:make_list(full_prog_name, version_argv) );  } else {     if(! sock) {       sock = ssh_login_or_reuse_connection();     }     if(sock) {       r = ssh_cmd(socket:sock, cmd:full_prog_name +" "+version_argv, timeout:60);     }  }  loc_version = eregmatch(pattern:ver_pattern, string:r);  if(loc_version != NULL) loc_version[max_index(loc_version)] = r;  return (loc_version);}function get_string_version(text, ver_pattern) {  local_var loc_version;  if( isnull( ver_pattern) ) {           # Standard Version Pattern for most cases    ver_pattern = "([0-9\.]+)";  }  loc_version = eregmatch(pattern:ver_pattern, string:text);  if(loc_version != NULL) loc_version[max_index(loc_version)] = text;  return (loc_version);}function version_is_less(version ,test_version, icase) {  return (version_test(version:version, test_version:test_version, less:TRUE, icase:icase));}function version_is_equal(version, test_version, icase) {  return (version_test(version:version, test_version:test_version, less:FALSE, icase:icase));}function version_test(version, test_version, less, icase) {  local_var ver_ary, test_ary, ver_num, ver_sep, i, r, s, char_found;  if(isnull(icase) ) icase = TRUE;  if(icase) {    version = tolower(version);    test_version = tolower(test_version);  }  ver_sep = ereg_replace(pattern:"([A-Za-z0-9])", string: version, replace:"");  if( ver_sep == "" ) ver_sep = ".";   # Set Standard Separator  ver_ary = split(version, sep:ver_sep[0], keep:0);  ver_sep = ereg_replace(pattern:"([A-Za-z0-9])", string: test_version, replace:"");  if( ver_sep == "" ) ver_sep = ".";   # Set Standard Separator  test_ary = split(test_version, sep:ver_sep[0], keep:0);  while(max_index(ver_ary) < max_index(test_ary) ) {    ver_ary[max_index(ver_ary)] = "0";  }  while(max_index(ver_ary) > max_index(test_ary) ) {    test_ary[max_index(test_ary)] = "0";  }  foreach i (keys(test_ary) ) {    r = eregmatch(pattern:"([0-9]+)", string:test_ary[i]);    s = eregmatch(pattern:"([A-Za-z])", string:test_ary[i]);    if(isnull(s) ) {      test_ary[i] = int(r[0]) * 128;                         # Changed to * 128 so if a char follows a number the number is more significant       char_found = FALSE;    } else {      test_ary[i] = (int(r[0]) * 128) + ord(s[0]);      char_found = TRUE;    }    r = eregmatch(pattern:"([0-9]+)", string:ver_ary[i]);    s = eregmatch(pattern:"([A-Za-z])", string:ver_ary[i]);    if(isnull(s) ) {      ver_ary[i] = int(r[0]) * 128;    } else if(char_found) {             ver_ary[i] = (int(r[0]) * 128) + ord(s[0]);           } else {             if(isnull(r) ) {               ver_ary[i] = ord(s[0]);             } else {               if(! less) return (0);			     # If char found in test_version and no char in version it is not equal	       ver_ary[i] = int(r[0]) * 128;                 # No chars if test_version has no chars on this position else 1.1.1a is > 1.1.2             }    }    if(less) {      if(ver_ary[i] < test_ary[i]) return (1);      if(ver_ary[i] > test_ary[i]) return (0);    } else {      if(ver_ary[i] != test_ary[i]) return (0);    }  }  if(less) return (0); else return (1);}function version_is_less_equal(version, test_version) {  if(version_is_equal(version:version, test_version:test_version) ) return (1);  if(version_is_less(version:version, test_version:test_version) ) return (1);  return (0);}function version_is_greater_equal(version, test_version) {  if(version_is_equal(version:version, test_version:test_version) ) return (1);  if(version_is_less(version:test_version, test_version:version) ) return (1);  return (0);}function version_is_greater(version, test_version) {  if(version_is_less(version:test_version, test_version:version) ) return (1);  return (0);}function version_in_range(version, test_version, test_version2){  if(version_is_greater_equal(version:version, test_version:test_version)){    if(version_is_less_equal(version:version, test_version:test_version2)) return (1);  }  return (0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -