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 StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python实现批量转换文件编码的方法
Jul 28 Python
Python断言assert的用法代码解析
Feb 03 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
Python爬取365好书中小说代码实例
Feb 28 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python 实现IP子网计算
Feb 18 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
pandas中pd.groupby()的用法详解
Jun 16 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
详解:――如何将图片储存在数据库里
2006/12/05 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP反射实际应用示例
2019/04/03 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
js实现旋转木马效果
2017/03/17 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Python 字典与字符串的互转实例
2017/01/13 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
基于python代码批量处理图片resize
2020/06/04 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
教师的实习鉴定
2013/12/15 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
讨论nginx location 顺序问题
2022/05/30 Servers
Nginx如何配置根据路径转发详解
2022/07/23 Servers