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面相对象编程中对象的属性与类的方法
Jan 19 Python
浅谈python中的占位符
Nov 09 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python使用lambda表达式对字典排序操作示例
Jul 25 Python
Python pandas用法最全整理
Aug 04 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
Python数据库小程序源代码
Sep 15 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 Python
Python实现仓库管理系统
May 30 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
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
jQuery 处理表单元素的代码
2010/02/15 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
javascript填充默认头像方法
2018/02/22 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
pycharm安装图文教程
2017/05/02 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
python生成随机红包的实例写法
2019/09/02 Python
pygame实现非图片按钮效果
2019/10/29 Python
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
公司财务工作总结的自我评价
2013/11/23 职场文书
大学三年的自我评价
2013/12/25 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
旷工检讨书1000字
2015/01/01 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
Python机器学习之PCA降维算法详解
2021/05/19 Python
Js类的构建与继承案例详解
2021/09/15 Javascript
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle