socket

wpa_supplicant代码初探收藏

≡放荡痞女 提交于 2020-03-01 09:31:07
wpa_supplicant代码初探收藏 这几天在尝试把wpa_supplicant移植到windows ce上,替换微软的WZC。先把源代码down下来,了解了一下大致的结构。 wpa_supplicant运行的整个 核心就是 eloop_run 函数 。这个函数负责处理应用程序的请求和数据链路层发来的EAPOL数据。eloop的针对不同的平台有好几个实现版本,我这里只讨论针对WIN32的eloop_win.c版本。 外部需要通过调用eloop_register_event或者eloop_register_read_sock来注册一个回调函数,并绑定了一个相应的事件。eloop会等待每一个事件的发生,并在事件发生时调用相应的回调函数进行处理。 所有与平台相关的网络驱动程序接口,都被通过wpa_driver_ops结构抽象成统一的接口,不管你是WEXT或者NDIS。因此也实现了平台无关性。 此外,wpa_supplicant与应用层通信的方式多种多样,有pipe、socket,你也可以实现自己的方式。只需要实现几个基本的函数就可以了: wpa_supplicant_global_ctrl_iface_init wpa_supplicant_global_ctrl_iface_deinit wpa_supplicant_ctrl_iface_init wpa_supplicant

wpa_supplicant 初始化流程分析

随声附和 提交于 2020-03-01 08:50:48
1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是wpa_interface. 这主要是考虑到wpa_supplicant是可以同时支持多个网络接口的。 wpa_params数据结构主要记录与网络接口无关的一些参数设置。 而每一个网络接口就用一个wpa_interface数据结构来记录。 在启动命令行中,可以用-N来指定将要描述一个新的网络接口,对于一个新的网络接口,可以用下面六个参数描述: -i<ifname> : 网络接口名称 -c<conf>: 配置文件名称 -C<ctrl_intf>: 控制接口名称 -D<driver>: 驱动类型 -p<driver_param>: 驱动参数 -b<br_ifname>: 桥接口名称 2. wpa_supplicant 初始化流程 2.1. main()函数: 在这个函数中,主要做了四件事。 a. 解析命令行传进的参数。 b. 调用wpa

python基础-11 socket,IO多路复用,select伪造多线程,select读写分离。socketserver源码分析

给你一囗甜甜゛ 提交于 2020-03-01 05:34:45
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭) socket和file的区别: file模块是针对某个指定文件进行【打开】【读写】【关闭】 socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】 服务端 #!/usr/bin/env python # -*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1',9999) sk = socket.socket() sk.bind(ip_port) sk.listen(5) while True: print 'server waiting...' conn,addr = sk.accept()#阻塞 client_data = conn.recv(1024) print client_data conn.sendall('不要回答,不要回答,不要回答') conn.close()

netty—入门(一)

倾然丶 夕夏残阳落幕 提交于 2020-03-01 02:37:31
netty入门 一、介绍 netty是基于事件驱动的网络:例如一个server的请求要如何处理 netty是基于异步的(同步:发出请求一定要在获取到该请求的结果以后才能继续执行以下代码,异步则是发出请求以后,不需要等待,直接就可以继续执行以下代码) 1、netty认识 netty是基于TCP/ip协议,基于NIO架构 netty作为异步高并发通信中的应用中,其中AVRO是针对netty的二次封装。 2、I/O模型 I/O模型就是用什么样的通道进行数据的发送和接收 (1)BIO 同步并阻塞:一个连接就是一个线程,不适合高平发场景。适合连接数目小且固定的结构 (2)NIO(netty基础) 一个线程处理多个请求,有一个多路复用器,可以认为一个线程连接多个连接(这样可以处理多个连接)。适合连接数目多但是连接比较短的场景 (3)AIO 没有广泛的应用。适合连接数目多并且连接时间长的场景 2.1 BIO模型 可以t通过线程池机制改善(实现多个客户连接服务器,可高并发) (1)编程流程 a) 服务器启动一个serverSocket b)客户端启动socket对服务器进行通信。默认情况下服务器端需要对每个客户建立一个线程与之通信 c)客户端发出请求后,先咨询服务器是否有线程响应,如果没有则会等待或者被拒绝 d)如果有响应,客户端线程会等待情趣结束以后,再继续执行 (2)应用实例

响应式编程系列(一):什么是响应式编程?reactor入门

送分小仙女□ 提交于 2020-02-29 23:00:10
响应式编程 系列文章目录 (一)什么是响应式编程?reactor入门 (二)Flux入门学习:流的概念,特性和基本操作 (三)Flux深入学习:流的高级特性和进阶用法 (四)reactor-core响应式api如何测试和调试? (五)Spring reactive: Spring WebFlux的使用 (六)Spring reactive: webClient的使用 引言   Spring framework 5 的一大新特性:响应式编程(Reactive Programming)。那么什么是响应式?他能给我们带来什么?如何优雅地使用?本系列会从最基础的概念和简单的api讲起,再慢慢深入探讨响应式的一些高级特性,最后讲解实战内容,例如WebFlux和WebClient等在Spring boot中的使用,如何测试和调试。   想要了解原理的话,美团点评的这篇博客 Java NIO浅析 非常适合入门。 简单地说:   当我们调用socket.read()、socket.write()这类阻塞函数的时候,这类函数不能立即返回,也无法中断,需要等待socket可读或者可写,才会返回,因此一个线程只能处理一个请求。在这等待的过程中,cpu并不干活,(即阻塞住了),那么cpu的资源就没有很好地利用起来。因此对于这种情况,我们使用多线程来提高cpu资源的利用率:在等待的这段时间

了解黑客的关键工具---揭开Shellcode的神秘面纱

纵然是瞬间 提交于 2020-02-29 21:45:27
ref: http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开Shellcode的神秘面纱 对于初期接触网络安全的人来说,Shellcode是很神秘的东西,对于网络攻击过程中的嗅探信息、漏洞剖析都是可以理解的,但真正利用漏洞入侵时,通过把一段二进制码送入后并执行,就可以获得目标机器的控制权,之后的事情是属于爱好者学习技术,还是黑客的行为,就看攻击者的一念之差了。Shellcode就好象神秘的武器,安全防护变得如此不堪一击。Shellcode究竟是什么样的程序?是什么特殊代码?如何才能学会编写?我下面收集了几类常见的Shellcode,主要是学习使用。它其实也是一般的软件程序,主要是因为二进制码的“不可读性”,增加了神秘色彩。 Shellcode是指能完成特殊任务的自包含的二进制代码,根据不同的任务可能是发出一条系统调用或建立一个高权限的Shell,Shellcode也就由此得名。它的最终目的是取得目标机器的控制权,所以一般被攻击者利用系统的漏洞送入系统中执行,从而获取特殊权限的执行环境,或给自己设立有特权的帐户。Shellcode因操作系统有一些差异,这里以Linux为例。 Shellcode是一段高技巧的软件代码,为了小而精,一般直接写为16进制的操作码,当然编写者一般采用C或汇编编写

Java 使用 TCP 和 UDP 传输文件

和自甴很熟 提交于 2020-02-29 13:59:14
  引言    本项目的目的是实现两个应用,通过网络连接在不同的主机之间传输一个文件的功能。两个应用应该分别利用 UDP 和 TCP 协议,以具有传输至少 1 MB 文件的能力。    实现和说明    源代码    两个应用都由单个程序实现,源代码下载地址。    说明    程序使用以下命令行进行编译:    javac *.java    然后使用以下两个命令行运行: Receiver: # java FileReceiver [protocol] [port] Sender: # java FileSender [protocol] [host] [port] [filename]   其中 [protocol] 参数可以是 "udp" 或者 "tcp",但 sender 和 receiver 必须一致。    文件将会在 receiver 启动的目录下生成,默认指定名为 "Received-[filename]"。    TCP 实现    实现概述    在 TCP 实现中,Receiver 打开了一个 ServerSocket,并对定义好的端口进行监听。Sender 启动后将会为监听者 Receiver 打开一个新的 Socket,这导致了 socket 两端 InputStream 和 OutputStream 对象的创建。   

wpa_supplicant软件架构分析

三世轮回 提交于 2020-02-29 12:33:44
struct socket 数据结构 interface network callback 目录 (?) [+] 启动命令 wpa_supplicant 初始化流程 main函数 wpa_supplicant_init函数 wpa_supplicant_add_iface函数 wpa_supplicant_run函数 Wpa_supplicant提供的接口 上行接口 Dbus接口 Unix domain socket 接口 下行接口 Control interface commands 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant 对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是 wpa_interface. 这主要是考虑到 wpa_supplicant 是可以同时支持多个网络接口的。 wpa_params 数据结构主要记录与网络接口无关的一些参数设置。 而每一个网络接口就用一个 wpa_interface 数据结构来记录。

Apache JMeter TCPSampler的使用及自定义

烂漫一生 提交于 2020-02-29 12:02:51
JMeter提供纯TCP协议级别Sampler,如果你不觉得麻烦可以通过它来完成所有基于TCP协议的性能测试,这样一个万金油式的Sampler由于很少进入使用者的视野,因此,在实际使用中存在着许多隐藏特性和误解,本篇将对TCP Sampler使用中的一些特点进行讲解。 Mock TCP Server 为了更好的理解TCP Sampler的使用,我们将构建一个Mock TCP Server用于测试,并根据不同的TCP Sampler类型和设置进行调整,以达到直观易懂的目的,一个典型的TCP Server代码参考如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TCPServer { private int port = 10009;

python编程学习之socket编程

无人久伴 提交于 2020-02-29 08:51:56
讲解 C/S架构 客户机和服务器结构 Server唯一的目的就是等待client的请求,client连上server发送必要的数据,然后等待server端完成请求的范阔 C/S网络编程 Server端进行设置,首先创建一个通信端点,让server端能够监听请求,之后就进入等待和处理Client请求的无限循环中 Client编程相对Server端编程简单,只要创建一个通信端点,建立到服务器的连接,就可以提出wing我就来 套接字(socket) 是一种具有之前所说的“通信端点”概念的计算机网络数据结构。网络化的应用程序在开始任何通讯之前都必须创建套接字 套接字 = (ip, 端口) Python支持: - AF_UNIX –> Unix下进行通信的 - AF_NETLINK –> 是Linux下的套接字 - AF_INET –> 是基于网络的套接字 (我们下面的重点) Python的 socket模块 创建TCP/IP套接字,方法如下: 1234 copy # 参数(套接字家族,套接字类型)# AF_INET:基于网络的, SOCK_SREAM:代表TCP/IPtcp_scoket = socket(socket.AF_INET, socket.SOCK_SREAM) 套接字对象的方法: 服务端套接字函数: 公共用途套接字函数: 创建连接之后要关闭 实例: 反弹Shell: