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写的贪吃蛇游戏例子
Jun 16 Python
开源Web应用框架Django图文教程
Mar 09 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
python实现简易内存监控
Jun 21 Python
Python多进程原理与用法分析
Aug 21 Python
详解python校验SQL脚本命名规则
Mar 22 Python
基于python实现高速视频传输程序
May 05 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
python各层级目录下import方法代码实例
Jan 20 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
实操Python爬取觅知网素材图片示例
Nov 27 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上传文件并显示上传进度的方法
2015/03/24 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
js实现弹窗效果
2020/08/09 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python中字符串的处理技巧分享
2016/09/17 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
python argparser的具体使用
2019/11/10 Python
python dumps和loads区别详解
2020/02/04 Python
python程序如何进行保存
2020/07/03 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
Python实现壁纸下载与轮换
2020/10/19 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
求职信范文英文版
2014/01/05 职场文书
便利店投资创业计划书
2014/02/08 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
银行转正自我鉴定
2014/09/29 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫