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简单的实现树莓派的WEB控制
Feb 18 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
详解pandas中iloc, loc和ix的区别和联系
Mar 09 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
Python如何执行精确的浮点数运算
Jul 31 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 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
php2html php生成静态页函数
2008/12/08 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
如何基于Python批量下载音乐
2019/11/11 Python
三个python爬虫项目实例代码
2019/12/28 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
python破解同事的压缩包密码
2020/10/14 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
中学优秀班主任事迹材料
2014/05/01 职场文书
大学新闻系自荐书
2014/05/31 职场文书
python字符串常规操作大全
2021/05/02 Python
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
DQL数据查询语句使用示例
2022/12/24 MySQL