Python使用Telnet库实现弱密码检测的方法详解

Miles
Miles
发布时间:2026-10-13| 6人浏览过
原创

本文详解利用Python的telnetlib库进行弱密码登录检测的实现过程。重点解析read_until函数的timeout设置必要性,以及针对不同服务器(如网络设备)返回提示差异(login/user、大小写敏感)的处理策略。通过调整读取次数和正则匹配逻辑,提高脚本在AIX、Linux等不同环境下的兼容性与准确性。

系统运行环境配置如下:

操作系统为64位Windows 7企业版。

Python解释器版本为2.7.10。

2016.08.16修改内容:

1)read_until()函数支持设置timeout参数。此前无法获取password之后的返回信息,原因是调用read_some()函数的次数不足,未能充分读取到服务器返回的数据。

2)若未给read_until()函数设置timeout值,程序将无限期保持连接状态而不会自动关闭,导致脚本永远无法返回结果。因此,合理设置timeout参数是必要的。

3)不同服务器返回的内容存在差异。例如,网络设备radware返回的提示并非"login:",而是"user:";部分服务器的password提示中p为大写,因此匹配"assword:"更为稳妥。此外,不同服务器在用户密码错误时的提示信息也各不相同,建议在编写代码前,先在Python控制台中测试具体返回内容。

def check_23_port(ip,username,passwd):
 try:
  tn=telnetlib.Telnet()#
  #tn.set_debuglevel(0),设置为2可以看到更多信息
  tn.open(host=ip)
  tn.read_until('login:')#这里设置timeout=10比较好,否则如果不能匹配字符串,这个连接将一直建立,程序不会返回
  tn.write(username+'\r\n')
  tn.read_until('password:')
  tn.write(passwd+'\r\n')
  tn.read_some()#为result准备数据,可能需要多调用几次才能够获取到服务器返回的信息"Login Failed"
  result = tn.read_some()#这里调用两次,不同的操作系统返回的不一样,AIX linux返回的是invalid
  rex = r'Login Failed'
  tmp = re.search(rex,result)
  if tmp == None:
   return True
  else:
   return False 
  tn.write("exit\r\n")
  tn.close()
 except Exception as e:
  pass
  print "connect error:" + str(e)

以上关于使用Python通过telnet实现弱密码登录检测的方法详解即为全部内容,希望能对读者有所帮助。也欢迎大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。