zoukankan      html  css  js  c++  java
  • socket笔记

    分析一个bot下载恶意代码时用到的socket,贴几个网址和一些笔记

    socket的一些简单介绍

    各种进制转IPV4地址

    socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
    socket families:
    AF_UNIX  —————————— unix本机之间进行通信 1
    AF_INET  —————————— 使用IPv4 2
    AF_INET6  —————————— 使用IPv6 3
    socket types:
    1 SOCK_STREAM # TCP套接字类型
    2 SOCK_DGRAM   # UDP套接字类型
    3 SOCK_RAW #原始套接字类型,这个套接字比较强大,创建这种套接字可以监听网卡上的所有数据帧
    4 SOCK_RDM #是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。

    struct sockaddr{
    sa_family_t sin_family; //地址族(Address Family),也就是地址类型
    char sa_data[14]; //IP地址和端口号
    };

    struct sockaddr_in{
    sa_family_t sin_family; //地址族(Address Family),也就是地址类型
    uint16_t sin_port; //16位的端口号
    struct in_addr sin_addr; //32位IP地址
    char sin_zero[8]; //不使用,一般用0填充
    };

    struct sockaddr_in6 {
    sa_family_t sin6_family; //(2)地址类型,取值为AF_INET6
    in_port_t sin6_port; //(2)16位端口号
    uint32_t sin6_flowinfo; //(4)IPv6流信息
    struct in6_addr sin6_addr; //(4)具体的IPv6地址
    uint32_t sin6_scope_id; //(4)接口范围ID
    };

    sockaddr 和 sockaddr_in 的长度相同,都是16字节,只是将IP地址和端口号合并到一起,用一个成员 sa_data 表示。要想给 sa_data 赋值,必须同时指明IP地址和端口号,例如”127.0.0.1:80“,遗憾的是,没有相关函数将这个字符串转换成需要的形式,也就很难给 sockaddr 类型的变量赋值,所以使用 sockaddr_in 来代替。这两个结构体的长度相同,强制转换类型时不会丢失字节,也没有多余的字节。
    可以认为,sockaddr 是一种通用的结构体,可以用来保存多种类型的IP地址和端口号,而 sockaddr_in 是专门用来保存 IPv4 地址的结构体。另外还有 sockaddr_in6,用来保存 IPv6 地址

  • 相关阅读:
    python技巧
    tikz vfill vfil
    知之为知之,不知为不知
    newPost
    欢迎使用 WordPress 3.2.1 for SAE
    校正oracle,mysql,hive,postgresql,greenplum 记录数分析命令
    Hive 分区表&分区字段
    oracle 建表、主键、分区
    使用TortoiseSVN 客户端的一些问题
    jquery bankInput银行卡账号格式化
  • 原文地址:https://www.cnblogs.com/snip3r/p/11275756.html
Copyright © 2011-2022 走看看