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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
python简单的函数定义和用法实例
May 07 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
python之信息加密题目详解
Jun 26 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
Python 实现集合Set的示例
Dec 21 Python
用python-webdriver实现自动填表的示例代码
Jan 13 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中批量替换文件名的实现代码
2011/07/20 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
Python中的super()方法使用简介
2015/08/14 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
简述安装Slackware Linux系统的过程
2012/01/12 面试题
旅游管理专业学生求职信
2013/09/28 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
共青团员自我评价范文
2014/09/14 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
教师旷工检讨书
2015/08/15 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
MySQL数据库事务的四大特性
2022/04/20 MySQL
Android中的Launch Mode详情
2022/06/05 Java/Android
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers