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常用正则表达式符号浅析
Aug 13 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
TensorFlow损失函数专题详解
Apr 26 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
Django文件存储 默认存储系统解析
Aug 02 Python
python十进制转二进制的详解
Feb 07 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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
mysql建立外键
2006/11/25 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
关于js datetime的那点事
2011/11/15 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
js倒计时抢购实例
2015/12/20 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
python机器学习库xgboost的使用
2020/01/20 Python
python默认参数调用方法解析
2020/02/09 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
专业实习自我鉴定
2013/10/29 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
民事起诉状范文
2015/05/19 职场文书
教师节简报
2015/07/20 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL