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 基础学习教程
Feb 08 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
分析python切片原理和方法
Dec 19 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
详解Python3 基本数据类型
Apr 19 Python
python增加图像对比度的方法
Jul 12 Python
在Tensorflow中查看权重的实现
Jan 24 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
详解Django的MVT设计模式
Apr 29 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
PHP新手上路(十)
2006/10/09 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
搭建vue开发环境
2018/07/19 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
python中sets模块的用法实例
2014/09/30 Python
python文件操作相关知识点总结整理
2016/02/22 Python
windows下python连接oracle数据库
2017/06/07 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
GWT的应用有哪两种部署模式
2012/12/21 面试题
班级活动策划书
2014/02/06 职场文书
庆元旦广播稿
2014/02/10 职场文书
上班玩手机检讨书
2014/02/17 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
个人求职信格式范文
2015/03/20 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis
mysql函数全面总结
2021/11/11 MySQL