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各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
python中正则表达式 re.findall 用法
Oct 23 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
python django 原生sql 获取数据的例子
Aug 14 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Python netmiko模块的使用
Feb 14 Python
Python多线程正确用法实例解析
May 30 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 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 empty函数 使用说明
2009/08/10 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
PHP Include文件实例讲解
2019/02/15 PHP
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
利用Python实现图书超期提醒
2016/08/02 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
详解python中的闭包
2020/09/07 Python
浅析python连接数据库的重要事项
2021/02/22 Python
运动会通讯稿50字
2014/01/30 职场文书
学校节能减排方案
2014/06/13 职场文书
美化环境标语
2014/06/20 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
感谢信范文大全
2015/01/23 职场文书
大连导游词
2015/02/12 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis