Author: chandra
Date: 2008-10-07 15:20:14 +0200 (Tue, 07 Oct 2008)
New Revision: 1491
Modified:
trunk/openvas-plugins/ChangeLog
trunk/openvas-plugins/scripts/secpod_smb_func.inc
Log:
resolved an issue with fetching file version
Modified: trunk/openvas-plugins/ChangeLog
===================================================================
--- trunk/openvas-plugins/ChangeLog 2008-10-07 12:39:34 UTC (rev 1490)
+++ trunk/openvas-plugins/ChangeLog 2008-10-07 13:20:14 UTC (rev 1491)
@@ -1,4 +1,9 @@
2008-10-07 Chandrashekhar B <[EMAIL PROTECTED]>
+ * scripts/secpod_smb_func.inc:
+ Resolved an issue, was fetching unwanted numbers in certain
+ file versions patterns
+
+2008-10-07 Chandrashekhar B <[EMAIL PROTECTED]>
* scripts/gb_thunderbird_mult_vuln_july08_lin.nasl,
scripts/gb_seamonkey_mult_vuln_july08_lin.nasl,
scripts/gb_firefox_detect_lin.nasl,
Modified: trunk/openvas-plugins/scripts/secpod_smb_func.inc
===================================================================
--- trunk/openvas-plugins/scripts/secpod_smb_func.inc 2008-10-07 12:39:34 UTC
(rev 1490)
+++ trunk/openvas-plugins/scripts/secpod_smb_func.inc 2008-10-07 13:20:14 UTC
(rev 1491)
@@ -35,87 +35,94 @@
function GetVersion(socket, uid, tid, fid, offset, verstr, debug)
{
- local_var fsize, data, i, offset, tmp, version, ver, vers, len, retVal;
+ local_var fsize, data, i, offset, tmp, version, ver, vers, len, retVal;
- pattern = "FileVersion";
- if(verstr == "prod"){
- pattern = "ProductVersion";
- }
+ pattern = "F?i?l?e?V?e?r?s?i?o?n";
+ if(verstr == "prod"){
+ pattern = "P?r?o?d?u?c?t?V?e?r?s?i?o?n";
+ }
- else if(verstr){
- pattern = verstr;
- }
+ else if(verstr){
+ pattern = verstr;
+ }
- patlen = strlen(pattern);
-
- fsize = smb_get_file_size(socket:socket, uid:uid, tid:tid, fid:fid);
+ patlen = strlen(pattern);
- if(isnull(offset))
- {
- if(fsize < 180224){
+ fsize = smb_get_file_size(socket:socket, uid:uid, tid:tid, fid:fid);
+
+ if(isnull(offset))
+ {
+ if(fsize < 180224){
+ offset = 0;
+ }
+ else{
+ offset = fsize - 180224;
+ }
+ }
+
+ if(offset < 0){
+ offset = fsize + offset;
+ }
- offset = 0;
- }
- else{
- offset = fsize - 180224;
- }
- }
-
- if(offset < 0){
- offset = fsize + offset;
- }
-
- start = offset;
-
- if (start < 0 || start > fsize)
- {
- start = fsize/2;
- }
+ start = offset;
- offset = start;
- chunk = 16384;
+ if(start < 0 || start > fsize){
+ start = fsize/2;
+ }
- for(i = 0; offset < fsize; i++)
+ offset = start;
+ chunk = 16384;
+
+ for(i = 0; offset < fsize; i++)
+ {
+ tmp = ReadAndX(socket:socket, uid:uid, tid:tid, fid:fid, count:chunk,
off:offset);
+ if(tmp)
+ {
+ if(pattern == "build"){
+ tmp = str_replace(find:raw_string(0), replace:"", string:tmp);
+ }
+ else
+ tmp = str_replace(find:raw_string(0), replace:"?", string:tmp);
+
+ data += tmp;
+ version = strstr(data, pattern);
+ if(version)
+ {
+ len = strlen(version);
+ for(i = patlen; i < len; i++)
{
- tmp = ReadAndX(socket:socket, uid:uid, tid:tid, fid:fid,
count:chunk, off:offset);
- if(tmp)
- {
- tmp = str_replace(find:raw_string(0), replace:"",
string:tmp);
- data += tmp;
- version = strstr(data, pattern);
- if(version)
- {
- len = strlen(version);
- for(i = patlen; i < len; i++)
- {
- if((ord(version[i]) < ord("0") ||
ord(version[i]) > ord("9")) &&
- (version[i] != "." && version[i] !=
"," && version[i] != " "))
- {
- if(ver[strlen(ver)-1] == ".")
- {
- vers = split(ver,
sep:".", keep:0);
- foreach item (vers){
- retVal +=
string("." + item);
- }
- retVal -= string(".");
- return(retVal);
- }
- return (ver);
- }
- else if(version[i] == "," || version[i]
== "."){
- ver += ".";
- }
- else if(version[i] == " "){
- }
- else{
- ver += version[i];
- }
- }
- }
- offset += chunk;
- }
+ if((ord(version[i]) < ord("0") || ord(version[i]) > ord("9")) &&
+ (version[i] != "." && version[i] != "," && version[i] != " " &&
+ version[i] != "?"))
+ {
+ if(ver[strlen(ver)-1] == ".")
+ {
+ vers = split(ver, sep:".", keep:0);
+ foreach item (vers){
+ retVal += string("." + item);
+ }
+ retVal -= string(".");
+ return(retVal);
+ }
+ return (ver);
+ }
+ else if(version[i] == "," || version[i] == "."){
+ ver += ".";
+ }
+ else if(ver && version[i] == "?" && version[i+1] == "?"){
+ return (ver);
+ }
+ else if(version[i] == " "||version[i] == "?"){
+ }
+ else{
+ ver += version[i];
+ }
}
- return NULL;
+ }
+ offset += chunk;
+ }
+ }
+ return NULL;
}
@@ -129,7 +136,7 @@
########################################################################
-# Enumerate registry vaules for a given key
+# Enumerate registry values for a given key
# param:
# key: REGISTRY_KEY
#
@@ -542,4 +549,3 @@
count:count, off:offset);
return content;
}
-
_______________________________________________
Openvas-commits mailing list
[email protected]
http://lists.wald.intevation.org/mailman/listinfo/openvas-commits