ruby通过telnet读取互联网时间
2014-12-12 11:49
155 查看
在前面的博文ntp服务器也谈逆向工程中,本猫曾经武断的认为telnet是无法连接到ntp服务器的.因为当时是这样连接的:
telnet time.nist.gov 123,端口号123是在/etc/services服务表里查询到的ntp的服务端口:
ntp 123/tcp
ntp 123/udp # Network Time Protocol
可是time.nist.gov开放的端口不是123,而是37,从服务表里可以看到该服务名称为time:
time 37/tcp timserver
time 37/udp timserver
咋回事呢?不知道啊!time.nist.gov压根不是ntp服务器吗?可能123是ntp的协议端口而不是实际可连接的端口.下面上ruby的telnet读取互联网时间的代码:
执行结果如下:
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ./telnet.rb
11:45:17
老的代码是直接tn.recv,但现在recv放在了tn.sock里.msg是返回的4个大尾字节,减去1970-01-01 0:0:0的秒数,即得当前时间相对的秒数.
telnet time.nist.gov 123,端口号123是在/etc/services服务表里查询到的ntp的服务端口:
ntp 123/tcp
ntp 123/udp # Network Time Protocol
可是time.nist.gov开放的端口不是123,而是37,从服务表里可以看到该服务名称为time:
time 37/tcp timserver
time 37/udp timserver
咋回事呢?不知道啊!time.nist.gov压根不是ntp服务器吗?可能123是ntp的协议端口而不是实际可连接的端口.下面上ruby的telnet读取互联网时间的代码:
#!/usr/bin/ruby require 'net/telnet' time_svr = "time.nist.gov" #tn = Net::Telnet.new(Host:time_svr,Port:"time",Timeout:60,Telnetmode:false) tn = Net::Telnet.new("Host"=>time_svr,"Port"=>"time","Timeout"=>60,"Telnetmode"=>false) msg = tn.sock.recv(4).unpack('N')[0] remote = Time.at(msg - 2208988800).strftime("%H:%M:%S") puts remote
执行结果如下:
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ./telnet.rb
11:45:17
老的代码是直接tn.recv,但现在recv放在了tn.sock里.msg是返回的4个大尾字节,减去1970-01-01 0:0:0的秒数,即得当前时间相对的秒数.
相关文章推荐
- ruby通过telnet读取互联网时间
- ruby通过telnet读取互联网时间
- 关于通过ruby互联网同步时间的几个思路
- 关于通过ruby互联网同步时间的几个思路
- 关于通过ruby互联网同步时间的几个思路
- Android ICS系统是支持通过互联网时间同步的
- 教你如何在TFS中让所有的成员都能够通过使用Project来读取计划的Start Date 时间
- 通过jxl 读取excel 文件中的日期,并计算时间间隔
- HR数据抽取:经过 Read Master Data 转换规则读取时间相关主属性数据HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
- HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
- 用telnet测试通过pop3读取163邮箱邮件
- php读取excel时间42930转化为时间然后正则验证时间是否通过
- vc6.0读取系统时间并与自己通过其他方式获取的时间比较
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
- 通过sqlserver的日志来进行基于时间点的恢复
- 通过分析系统日志,统计你的电脑开机时间的小程序PC PowerOn Time,附源码
- 通过DataSet读取XML的效率问题
- 通过OLEDB读取SQLSERVER数据库的使用经验
- 通过读取KiWaitInListHead列出隐藏的进程
- 通过java提供的URL类包读取网上的文件