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实现ipsec开权限实例
Nov 11 Python
Python创建xml文件示例
Mar 22 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
Django rest framework工具包简单用法示例
Jul 20 Python
解决sublime+python3无法输出中文的问题
Dec 12 Python
numpy linalg模块的具体使用方法
May 26 Python
python输入多行字符串的方法总结
Jul 02 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
在Python下进行UDP网络编程的教程
2015/04/29 Python
jupyter安装小结
2016/03/13 Python
分享python数据统计的一些小技巧
2016/07/21 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python中的for循环
2018/09/28 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
函授自我鉴定
2013/11/06 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
公司离职证明样本
2014/09/13 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang