revert to backward compatible method of using utc+zone

git-svn-id: file:///home/svn/framework3/trunk@10367 4d416f70-5f16-0410-b530-b9f4589650da
unstable
Joshua Drake 2010-09-18 05:09:47 +00:00
parent e939379b1b
commit ff22e5212e
2 changed files with 17 additions and 8 deletions

View File

@ -523,10 +523,16 @@ EVADE = Rex::Proto::SMB::Evasions
system_zone &= 0x7fff system_zone &= 0x7fff
system_zone *= -1 system_zone *= -1
end end
system_zone *= 60 self.system_zone = system_zone * 60
# XXX: this is being commented out because ruby prior to 1.9.2 doesn't
# seem to support representing non-utc or local times (eg, a time in
# another timezone) If you know a way to do it in pre-1.9.2 please
# tell us!
=begin
# Adjust the system_time object to reflect the remote timezone # Adjust the system_time object to reflect the remote timezone
self.system_time = self.system_time.utc.localtime(system_zone) self.system_time = self.system_time.utc.localtime(system_zone)
=end
return ack return ack
end end
@ -1746,7 +1752,7 @@ EVADE = Rex::Proto::SMB::Evasions
# public read/write methods # public read/write methods
attr_accessor :native_os, :native_lm, :encrypt_passwords, :extended_security, :read_timeout, :evasion_opts attr_accessor :native_os, :native_lm, :encrypt_passwords, :extended_security, :read_timeout, :evasion_opts
attr_accessor :system_time attr_accessor :system_time, :system_zone
# public read methods # public read methods
attr_reader :dialect, :session_id, :challenge_key, :peer_native_lm, :peer_native_os attr_reader :dialect, :session_id, :challenge_key, :peer_native_lm, :peer_native_os

View File

@ -153,9 +153,11 @@ class Metasploit3 < Msf::Exploit::Remote
# Calculate the time (in milliseconds since midnight) to run the job at. # Calculate the time (in milliseconds since midnight) to run the job at.
# NOTE: We use the server's time as determined during SMB negotiation. # NOTE: We use the server's time as determined during SMB negotiation, which
# It has already been localized to the server's timezone as well. # is sent in UTC. We have to localize it before moving on, using the timezone
server_time = simple.client.system_time # which they also kindly sent us.
server_time = simple.client.system_time.utc
server_time += simple.client.system_zone # adjust to localized time
job_time = seconds_since_midnight(server_time) # convert to seconds since midnight job_time = seconds_since_midnight(server_time) # convert to seconds since midnight
elapsed = Time.now - login_time # account for time the module took so far elapsed = Time.now - login_time # account for time the module took so far
@ -492,10 +494,11 @@ class Metasploit3 < Msf::Exploit::Remote
def seconds_since_midnight(time) def seconds_since_midnight(time)
# .tv_sec always uses .utc :-/ # .tv_sec always uses .utc
#(time.tv_sec % 86400) (time.tv_sec % 86400)
# This method uses the localtime # This method uses the localtime
(time.hour * 3600) + (time.min * 60) + (time.sec) #(time.hour * 3600) + (time.min * 60) + (time.sec)
end end
# We have to wait up to two minutes because the Task Scheduler only has # We have to wait up to two minutes because the Task Scheduler only has