首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏xcywt

    关于 getsockname、getpeername和gethostname、gethostbyname

    一、gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息。 gethostname:获取主机的名字 gethostbyname:通过名字获取其他的信息(比如ip) 1.gethostname: man手册里面的解释(部分):        #include On error, -1 is returned, and errno is        set appropriately. 2.gethostbyname:        #include <netdb.h>        extern int h_errno;        struct hostent *gethostbyname(const char *name); 可以看到获取的内容保存在一个指针里面 (myhost = gethostbyname(host))) { perror("gethostbyname"); return -2; }

    1.6K50发布于 2018-01-11
  • 来自专栏运维技术迷

    Python:gethostbyname获取本地ip地址

    gethostbynamegethostbyname_ex均是socket模块中的一个函数,都可用于来获取本地ip地址。 gethostbyname函数获取本地ip地址 >>>impoert socket >>> socket.gethostbyname(socket.gethostname()) '116.196.107.126 ' >>> hostname = socket.gethostname() >>> print hostname jd.svr.lianst.com >>> socket.gethostbyname( hostname) '116.196.107.126' gethostbyname_ex函数获取本地ip地址 >>> socket.gethostbyname_ex(socket.gethostname ()) ('jd.svr.lianst.com', [], ['116.196.107.126']) >>> socket.gethostbyname_ex(socket.gethostname())[

    5.2K90发布于 2018-03-26
  • 来自专栏嵌入式、安防、流媒体、AI分析

    linux获取主机名后用gethostbyname() 不能获取主机ip,该怎么处理

    linux获取主机名后用gethostbyname() 不能获取主机ip 我在虚拟机上用以下函数能获取主机ip的ip char hostname[256]; if (gethostname( hostname, 256) == 0) { printf("localhost name:%s\n",hostname); struct hostent* hostinfo = gethostbyname                 }             }         }         close (fd);     }     return ip; } gethostname() gethostbyname

    3.5K40编辑于 2023-01-04
  • 来自专栏开发与安全

    linux网络编程之socket(七):一个进程发起多个连接和gethostbyname等函数

    while (waitpid(-1, NULL, WNOHANG) > 0)         ; } 二、与前面说的getsockname 类似的函数还有getpeername、gethostname、gethostbyname 、gethostbyaddr 、getaddrinfo、 getifaddrs, freeifaddrs、getnameinfo 等,现在着重来看一下gethostname 和 gethostbyname include <unistd.h>    int gethostname(char *name, size_t len);  #include <netdb.h> struct hostent *gethostbyname (const char *name); gethostname 可以得到主机名,而gethostbyname 可以通过主机名得到一个结构体指针,可以通过此结构体得到与主机相关的ip地址信息等。         (host)) == NULL)         ERR_EXIT("gethostbyname error");     int i = 0;     while (hp->h_addr_list[

    2.1K00发布于 2017-12-28
  • 来自专栏逆向与安全

    Linux漏洞分析入门笔记-CVE-2015-0235

    Ubuntu 12.04 32位 ida 7.0 0x00:漏洞描述 1.glibc的__nss_hostname_digits_dots存在缓冲区溢出漏洞,导致使用gethostbyname系列函数的某些软件存在代码执行或者信息泄露的安全风险 通过gethostbyname()函数或gethostbyname2()函数,将可能产生一个堆上的缓冲区溢出。 经由gethostbyname_r()或gethostbyname2_r(),则会触发调用者提供的缓冲区溢出, 漏洞产生时至多sizeof(char* )个字节可被覆盖(因为char*指针的大小,即32 第二次断下,发现gethostbyname的参数为我们输入的参数。Gethostbyname中调用__nss_hostname_digits_dots,其中缓冲区的大小默认为0x400。 0x02:总结 1.产生漏洞的条件是当gethostbyname()函灵敏被调用时且满足下面两个条件。 a.size_need足够大,让其调用realloc重新分配。 b.name全为数字或者.号

    96410发布于 2019-02-22
  • 来自专栏刘晓杰

    UNPv1第九章:基本名字与地址转换

    1.gethostbyname 查找主机名最基本的函数是gethostbyname,如果成功,它返回一个指向结构hostent的指针,该结构中包含了该主机的所有IPv4或IPv6地址 #include <netdb.h> struct hostent *gethostbyname(const char *hostname); hostent结构如下: struct hostent{ char address: 4 or 16 char * *h_addr_list; }; 2.gethosybyaddr 函数gethostbyaddr取一个二进制IP地址并试图找到相应于此地址的主机名,这与gethostbyname 3.uname函数 返回当前主机名字,通常和gethostbyname一起用来确定本地主机的IP地址 #include <sys/utsname.h> int uname (struct utsname machine[_UTS_ NAMESIZE];//硬件类型 } 获取IP方法: struct utsname myname; uname(&myname); struct hostent *hptr = gethostbyname

    67230发布于 2019-02-21
  • 来自专栏python3

    Python中接口定义和依赖注入

    zope.interface import implementer import socket class IHostNameResolver(Interface): def getHostByName (self, name, timeout = (1, 3, 11, 45)): try: address = socket.gethostbyname(name none' else: return address resolver = HostNameResolver() print resolver.getHostByName zope.interface import implementer   import socket   class IHostNameResolver(Interface):   def getHostByName (self, name, timeout = (1, 3, 11, 45)):   try:               address = socket.gethostbyname(name)  

    1.4K20发布于 2020-01-10
  • 来自专栏Soul Joy Hub

    域名转化到IP地址的实现

    在linux中,有一些函数可以实现主机名和地址的转化,最常见的有gethostbyname()、gethostbyaddr()等,它们都可以实现IPv4和IPv6的地址和主机名之间的转化。 其中gethostbyname()是将主机名转化为IP地址,gethostbyaddr()则是逆操作,是将IP地址转化为主机名。     函数原型: 1 #include <netdb.h> 2 3 struct hostent* gethostbyname(const char* hostname); 4 5 结果存在hptr结构中 */ 22 23 if((hptr = gethostbyname(ptr)) == NULL) 24 25 { 26 27 printf( " gethostbyname error for host:%s\n", ptr); 28 29 return 0; 30 31 } 32 33 /* 将主机的规范名打出来

    9.3K20发布于 2019-02-13
  • 来自专栏腾讯开源的专栏

    微信开源 libco :简单易用高性能的协程库

    gethostbyname 的 Hook 方法 对于现网服务,有可能需要通过系统的 gethostbyname API 接口去查询 DNS 获取真实地址。 我们在协程化改造的时候,发现我们 hook 的 socket 族函数对 gethostbyname 不适用,当一个协程调用了 gethostbyname 时会同步等待结果,这就导致了同线程内的其它协程被延时执行 最终gethostbyname协程异步化是通过Hook __poll方法以及定义协程私有变量解决的。 gethostbyname 是 glibc 提供的同步查询 dns 接口,业界还有很多优秀的 gethostbyname 的异步化解决方案,但是这些实现都需要引入一个第三方库并且要求底层提供异步回调通知机制 libco 通过 hook 方法,在不修改 glibc 源码的前提下实现了的 gethostbyname 的异步化。

    4.2K10发布于 2016-11-09
  • 来自专栏HACK学习

    实战 | Python 编写端口扫描器

    sys.argv[2].split("-") startPort = targetport[0] endPort = targetport[1] remote_server_ip = socket.gethostbyname (options.host) # remote_server_info = socket.gethostbyname_ex(host) ports = [] openPort = [] print ' ) 使用 gethostbyname_ex 函数获取目标的域名、ip 等信息 更新日志: 1、使用 gethostbyname_ex 函数实现对输入的域名进行解析 2、使用-D 参数传递域名,扫描器将对域名相关的 -------------" def Ip_scan_port(port): socket.setdefaulttimeout(0.5) remote_server_ip = socket.gethostbyname (i)) Ip_from_domain.append(socket.gethostbyname(i)) else: Ip_from_domain.append(socket.gethostbyname

    1.5K10发布于 2020-09-14
  • 来自专栏蓝里小窝

    计网 | C语言Socket编程获取本机IP及指定域名IP

    IDE DEV-C++ 5.10 目录 实验目的和要求 结果预览 环境记录 目录 实验记录 配置IDE 新建程序 实验分析 winsock2常见结构体和方法 gethostname获取本机主机名 gethostbyname =0){ printf("初始化错误"); } //char host[255]; struct hostent *p=gethostbyname(host gethostbyname获取主机名对应信息 struct hostent *gethostbyname(const char *hostname); 参数说明: 参数 类型 说明 hostname const hostent 对于一个hostname,可以通过gethostbyname(char *hostname);方法来获得一个hostent的结构体的指针。 h_addrtype:gethostbyname() 不仅支持 IPv4,还支持 IPv6,可以通过此成员获取IP地址的地址族(地址类型)信息,IPv4 对应 AF_INET,IPv6 对应 AF_INET6

    4.7K20编辑于 2023-03-05
  • 来自专栏腾讯Bugly的专栏

    揭秘:微信是如何用libco支撑8亿用户的

    gethostbyname的Hook方法 对于现网服务,有可能需要通过系统的gethostbyname API接口去查询DNS获取真实地址。 我们在协程化改造的时候,发现我们hook的socket族函数对gethostbyname不适用,当一个协程调用了gethostbyname时会同步等待结果,这就导致了同线程内的其它协程被延时执行。 最终gethostbyname协程异步化是通过Hook poll方法以及定义协程私有变量解决的。 gethostbyname是glibc提供的同步查询dns接口,业界还有很多优秀的gethostbyname的异步化解决方案,但是这些实现都需要引入一个第三方库并且要求底层提供异步回调通知机制。 libco通过hook方法,在不修改glibc源码的前提下实现了的gethostbyname的异步化。

    1.3K50发布于 2018-03-23
  • 来自专栏深度学习|机器学习|歌声合成|语音合成

    python IPscan查找IP主机

    python IPscan查找ip主机(仅供学习) from socket import gethostbyname def Miscript(): print'\a=[Welcome to Ip /Enter the Host: ') targetIP = gethostbyname(target) print '\a-Target IP ===>', targetIP print '+-

    1.9K20发布于 2021-01-14
  • 来自专栏python3

    Python获取本机 IP/MAC(多网

      Python获取本机IP地址的一般方法为 import socket IP = socket.gethostbyname(socket.gethostname())   通过gethostname 获取主机名,再用gethostbyname将主机名转换为IP地址。    一个方法是通过socket.gethostbyname_ex获取主机IP地址列表,然后遍历列表取得自己需要的IP。 socket #多网卡情况下,根据前缀获取IP(Windows 下适用) def GetLocalIPByPrefix(prefix): localIP = '' for ip in socket.gethostbyname_ex

    2.7K10发布于 2020-01-08
  • 来自专栏陈猿解码

    InetAddress.getByName背后发生了什么

    和主机、域名解析相关的配置项包括: hosts: files dns # 用于 gethostbyname 等相关函数 # files表示先读取 /etc/hosts # dns 表示查询 dns # 对于ping内部,先通过gethostbyname的系统调用,将非IP地址的主机/域名转换为IP地址,然后发送ICMP报文。 对于"gethostbyname"、"gethostbyaddr"(通过IP地址获取主机/域名)的系统调用,简单示例代码如下所示: #include <stdio.h> #include <netdb.h 但这两个方法的内部流程和gethostbyname基本雷同。 而java中InetAddress类的getByName、getByAddress、getAllByName等方法,本质上是调用了系统函数getaddrinfo或gethostbyname来进行主机名/

    1K20编辑于 2023-10-06
  • 来自专栏微信终端开发团队的专栏

    揭秘:微信如何用 libco 支撑8亿用户?

    gethostbyname 的 Hook 方法 对于现网服务,有可能需要通过系统的 gethostbyname API 接口去查询 DNS 获取真实地址。 我们在协程化改造的时候,发现我们 hook 的 socket 族函数对 gethostbyname 不适用,当一个协程调用了 gethostbyname 时会同步等待结果,这就导致了同线程内的其它协程被延时执行 最终 gethostbyname 协程异步化是通过 Hook _poll 方法以及定义协程私有变量解决的。 gethostbyname 是 glibc 提供的同步查询 dns 接口,业界还有很多优秀的 gethostbyname 的异步化解决方案,但是这些实现都需要引入一个第三方库并且要求底层提供异步回调通知机制 libco 通过 hook 方法,在不修改 glibc 源码的前提下实现了的 gethostbyname 的异步化。

    2.5K11发布于 2017-08-08
  • 来自专栏FreeBuf

    幽灵漏洞(GHOST)影响大量Linux操作系统及其发行版(更新修复方案)

    漏洞概述 代码审计公司Qualys的研究人员在glibc库中的__nss_hostname_digits_dots()函数中发现了一个缓冲区溢出的漏洞,这个bug可以经过gethostbyname*() 应用程序主要使用gethostbyname*()函数发起DNS请求,这个函数会将主机名称转换为ip地址。 sizeof(char *) - 1; char name[sizeof(temp.buffer)]; memset(name, '0', len); name[len] = '\0'; retval = gethostbyname_r

    1.6K80发布于 2018-02-05
  • 来自专栏Python小屋

    Python监视域名对应IP地址变化情况

    from time import sleep from socket import gethostbyname from datetime import datetime def get_ipAddresses (url): ipAddresses = [0] while True: sleep(0.5) #每隔0.5秒查询一次 ip = gethostbyname(url

    4.3K90发布于 2018-04-16
  • 15.1 套接字通过域名取IP地址

    首先我们来实现一个DNS查询功能,该功能的目的是传入一个网站域名自动将该域名解析为对应的IP地址,该功能的实现依赖于gethostbyname函数,该函数将主机名作为参数,并返回一个指向hostent类型结构的指针 IcmpAPI.h>#pragma comment (lib,"iphlpapi.lib")#pragma comment(lib, "ws2_32.lib")// 传入域名返回该域名对应IP地址CHAR* GetHostByName = 0) { return "None"; } // 获取当前主机结构体信息 struct hostent *ptr = gethostbyname(HostName); if (! return inet_ntoa(inAddr); } return "None";}int main(int argc, char *argv[]){ char * HostAddress = GetHostByName

    3.2K40编辑于 2023-10-17
  • 来自专栏记录与分享技术

    Python域名扫描

    , ".org"] # 扫描域名 for suffix in suffixes: domain = prefix + suffix try: ip = socket.gethostbyname 最后,我们使用socket.gethostbyname()函数来获取域名对应的IP地址。如果域名无法解析或者出现其他错误,该函数会抛出一个异常。

    1.2K30编辑于 2023-03-04
领券