Python任务

通过Python的网络连接来开发一个基础的端口扫描

我们的设计思路是使用socket一遍又一遍的去连接ip与端口的组合的新值

**端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。**端口扫描是计算机解密高手喜欢的一种方式。攻击者可以通过它了解到从哪里可探寻到攻击弱点。实质上,端口扫描包括向每个端口发送消息,一次只发送一个消息。接收到的回应类型表示是否在使用该端口并且可由此探寻弱点。
扫描器是一种自动检测远程或本地主机安全性弱点的程序
通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本!这就能让我们间接的或直观的了解到远程主机所存在的安全问题。

1、for循环概念

  • 功能

for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

  • for循环的一般格式
for iter_var in iterable:

    suite_to_repeat

注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.

Fruits=['apple','orange','banana','grape']
for fruit in Fruits:
    print(fruit)
print("结束遍历")
结果演示:
    apple
    orange
    banana
    grape

Socket工作原理和基本概念

   Socket的中文翻译是套接字,它是TCP/IP网络环境下应用程序与底层通信驱动程序之间运行的开发接口,它可以将应用程序与具体的TCP/IP隔离开来,使得应用程序不需要了解TCP/IP的具体细节,就能够实现数据传输。

   在网络应用程序中,Socket通信是基于客户端/服务器结构。客户端是发送数据的一方。服务器时刻准备接受来自客户端的数据,对做出响应

   实现基于tcp网络通信与现实中打电话很像:
  1.  客户端(相当于打电话的一方),需要了解服务器的ip地址,如果该服务器有多个网络应用程序,单单ip地址则不够,这时候socket通信借用tcp/ip中端口的概念,不同应用程序使用不同端口通信(这就很类似电话分机)。
    
  2.  服务器应用程序必须早于客户端启动,并在指定ip地址和端口上执行监听,端口被占用,服务器则无法正常启动。(服务器处于监听状态就类似电话接通好电话线,等待被拨打的状态)
    
  3.  客户端在申请发送数据时,服务器端应用程序必须有足够的时间响应才能进行正常通信(电话响,却无人接听)。通常情况下,服务器的应用程序都需要具备同时处理多个客户端请求的能力,应用程序设计不合理或访问量过高都会导致响应超时。
    
  4.  使用Socket协议进行通信的双方必须使用相同的通信协议,Socket支持的底层通信协议包括tcp和udp两种,通信过程中,双方还必须采用相同的字符编码,按照约定的方式进行通信(打电话时,双方必须语言相同,才能进行信息交流)
    
  5.  通信时,物理网络必须保持通畅,否则通信将会中断(电话线有效,且连接正常)。
    
  6.  通信结束之前,客户端和服务器端都可以中断连接(任何一方都可以挂电话)。
    

TCP是基于连接的通信协议,即先建立稳定连接后,再数据传输

如果Socket通信基于UDP,则数据传输前不需要连接,类似发短信或发电报,即使对方不在线,也可以发送数据,发送的数据在指定时间没有得到对方响应,则视为操作超时,可以选择超时后重新发送数据。

1、建立socket连接

import socket
s = socket.socket()
s.connect((‘’指定的ip地址‘,指定端口))

Python任务

  • try/except函数
  • Python任务
    Python任务
    指定地址情况下,多个端口的情况
    Python任务
    Python任务
    多个地址,多个端口
    类似单一地址的情况,不同在于,用双重循环
    Python任务

Python任务

dir()函数

dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
Python任务
乱七八糟这一堆我也看不懂是个啥。。。。。。

最后,一些socket里面比较重要的常用的命令函树的汇总
Python任务