python取代netcat过程分析


Posted in Python onFebruary 10, 2018

首先解释几个概念:

TCP:TCP是因特网中的传输层协议,使用三次握手协议建立连接。

IP:Internet Protocol协议的英文名直译就是:因特网协议。

UDP:和TCP一样,是网络传输层协议,UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据。

scoket:

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

Linux中Netcat命令整理参考:https://3water.com/article/134906.htm

我们所要学习的,就是用python模仿netcat来做一些很神奇的事情。

创建一个简单的TCP客户端:

# -*- coding: utf-8 -*- 
import socket 
target_host = "www.baidu.com" 
target_port = 80 
#建立socket对象,建立包含AF_INET,和SOCK_STREAM参数的socket对象。AF_INET参数锁门我们使用IPV4地址,SOCK_STREAM说明这是一个TCP客户端 
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
#连接客户端 
client.connect((target_host, target_port)) 
 
#send some data 
client.send("GET / HTTP/1.1\r\nHsot:baidu.com\r\n\r\n") 
 
#get some data 
response = client.recv(4096) 
print response

创建一个基础的TCP服务器:

# -*- coding: utf-8 -*- 
import socket 
import threading 
 
bind_ip = '0.0.0.0' 
bind_port=9999 
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
server.bind((bind_ip, bind_port)) 
server.listen(5) 
print "[+]listening on %s, %d"%(bind_ip,bind_port) 
 
#创建客户处理线程 
def handle_client(client_socket): 
 #打印客户端发送得到的内容 
 request = client_socket.recv(1024) 
 print "[*]Recived:%s"%request 
  
 #返回数据包 
 client_socket.send("Fuck You All!") 
 client_socket.close() 
  
while True: 
 client, addr=server.accept() 
 print "[*]Accepted connection from:%s:%d"%(addr[0], addr[1]) 
  
 #挂起客户端,处理传入数据 
 client_handler = threading.Thread(target=handle_client,args=(client,)) 
 client_handler.start()

由于之前没有接触过,于是对TCP服务器和TCP客户端有一定的疑问,于是开始寻找答案。

1、客户根据用户提供的IP地址连接到相应的服务器;

2、服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串;

3、客户接收服务器发送的信息并显示。

如果没有理解错的话,应该是客户端控制服务端。

将上面的TCP客户端的target_ip修改后,可以控制该服务端。修改send()函数。

Python 相关文章推荐
教你用Python写安卓游戏外挂
Jan 11 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
Django 缓存配置Redis使用详解
Jul 23 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
Aug 13 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
python Plotly绘图工具的简单使用
Mar 03 Python
Python日志logging模块功能与用法详解
Apr 09 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
浅谈Python黑帽子取代netcat
Feb 10 #Python
python3爬取淘宝信息代码分析
Feb 10 #Python
Python中property属性实例解析
Feb 10 #Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 #Python
Python中协程用法代码详解
Feb 10 #Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 #Python
Django中Forms的使用代码解析
Feb 10 #Python
You might like
Apache中php.ini的设置方法
2013/02/28 PHP
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python中对列表排序实例
2015/01/04 Python
Python解析最简单的验证码
2016/01/07 Python
python自动翻译实现方法
2016/05/28 Python
python与php实现分割文件代码
2017/03/06 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
pytorch简介
2020/11/11 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
Bootstrap 学习分享
2012/11/12 HTML / CSS
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
触摸春天教学反思
2014/02/03 职场文书
《我的信念》教学反思
2014/02/15 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
2014年教研组工作总结
2014/11/26 职场文书
法院个人总结
2015/03/03 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
导游词之崇武古城
2019/10/07 职场文书
python中print格式化输出的问题
2021/04/16 Python
MySQL transaction事务安全示例讲解
2022/06/21 MySQL