有一个进程, 在朝某ip, port发数据, 在没有源码的情况下, 如何获知ip, port是多少呢?------还是用strace啦

       最近遇到这样一个问题, 有一个进程, 在朝某ip, port发请求, 在没有源码的情况下, 如何获知ip, port是多少呢?

       有的朋友可能会说, 抓包啊。 但问题是, 在机器上, 其他进程也有网络包, 因此不太好过滤。 那怎么办呢?

 

       我们可以用strace看看进程到底在干什么, 然后就知道ip和port了。 一个strace命令, 为定位问题扫清了障碍, 棒棒哒奋斗。 下面用demo代码来看看:

 

#include <arpa/inet.h>
#include<sys/socket.h>
#include<netinet/in.h>

#include <stdio.h>
#include <unistd.h>

int main()
{
        int sockClient = socket(AF_INET, SOCK_STREAM, 0);

        struct sockaddr_in addrSrv;
        addrSrv.sin_addr.s_addr = inet_addr("127.0.0.1");
        addrSrv.sin_family = AF_INET;
        addrSrv.sin_port = htons(8888);
        connect(sockClient, ( const struct sockaddr *)&addrSrv, sizeof(struct sockaddr_in));

        char szRecvBuf[100] = {0};
        recv(sockClient, szRecvBuf, sizeof(szRecvBuf) - 1, 0);
        printf("%s\n", szRecvBuf);

        getchar();

        close(sockClient);

        return 0;
}

       结果:

 

 

taoge@localhost Desktop> g++ main.cpp 
taoge@localhost Desktop> strace -i ./a.out 
[00bd1424] execve("./a.out", ["./a.out"], [/* 38 vars */]) = 0
[0086e2fd] brk(0)                       = 0x8b07000
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7849000
[0086f5d1] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[0086f494] open("/etc/ld.so.cache", O_RDONLY) = 3
[0086f45e] fstat64(3, {st_mode=S_IFREG|0644, st_size=49072, ...}) = 0
[0086f6d3] mmap2(NULL, 49072, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb783d000
[0086f4cd] close(3)                     = 0
[0086f494] open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20F\254\0044\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=942040, ...}) = 0
[0086f6d3] mmap2(0x4a7f000, 969644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4a7f000
[0086f6d3] mmap2(0x4b60000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe0) = 0x4b60000
[0086f6d3] mmap2(0x4b66000, 23468, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4b66000
[0086f4cd] close(3)                     = 0
[0086f494] open("/lib/libm.so.6", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p4\243\0004\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=202040, ...}) = 0
[0086f6d3] mmap2(0xa30000, 168064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xa30000
[0086f6d3] mmap2(0xa58000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27) = 0xa58000
[0086f4cd] close(3)                     = 0
[0086f494] open("/lib/libgcc_s.so.1", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\257\212\0044\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=122232, ...}) = 0
[0086f6d3] mmap2(0x48a9000, 119592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x48a9000
[0086f6d3] mmap2(0x48c6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d) = 0x48c6000
[0086f4cd] close(3)                     = 0
[0086f494] open("/lib/libc.so.6", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 N\211\0004\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=1855584, ...}) = 0
[0086f6d3] mmap2(0x87e000, 1620360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x87e000
[0086f754] mprotect(0xa03000, 4096, PROT_NONE) = 0
[0086f6d3] mmap2(0xa04000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x185) = 0xa04000
[0086f6d3] mmap2(0xa07000, 10632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xa07000
[0086f4cd] close(3)                     = 0
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb783c000
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb783b000
[0085a552] set_thread_area({entry_number:-1 -> 6, base_addr:0xb783b6d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
[0086f754] mprotect(0xa04000, 8192, PROT_READ) = 0
[0086f754] mprotect(0xa58000, 4096, PROT_READ) = 0
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb783a000
[0086f754] mprotect(0x4b60000, 16384, PROT_READ) = 0
[0086f754] mprotect(0x876000, 4096, PROT_READ) = 0
[0086f711] munmap(0xb783d000, 49072)    = 0
[00392424] socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
[00392424] connect(3, {sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 ECONNREFUSED (Connection refused)
[00392424] recv(3, 0xbfa573c8, 99, 0)   = -1 ENOTCONN (Transport endpoint is not connected)
[00392424] fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
[00392424] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7848000
[00392424] write(1, "\n", 1
)            = 1
[00392424] fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
[00392424] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7847000
[00392424] read(0, 

      ip和port出来了, 无需多说。

 

 


 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
scanport一个用于端口扫描的源码程序,其目的是帮助网络管理员进行系统安全评估和漏洞检测。通过扫描目标主机的开放端口,可以快速现系统中的安全弱点,并及时采取相应的防护措施。 scanport源码主要由以下几部分组成: 1. 网络扫描功能:scanport通过使用TCP全连接或半连接扫描技术,向目标主机的指定端口起连接请求,并根据接收到的响应判断端口的开放情况。在扫描过程中,可以设置扫描的起始端口和结束端口,以及扫描的超时时间等参数。 2. 端口扫描结果处理:scanport能够将扫描到的开放端口及其对应的服务信息进行收集和保存。可以将扫描结果输出到终端窗口、保存到文件或导入到数据库等形式,以便进一步的分析和处理。另外,还可以设置报告生成的格式和内容,方便用户查看和分享。 3. 用户界面和交互:scanport提供了用户友好的图形界面,用户可以通过可视化的方式进行端口扫描的配置和操作。可以设置扫描的目标主机IP地址或域名,选择扫描的端口协议(TCP或UDP),以及设置其他相关的参数。同时,还可以实时监控扫描的进程,查看扫描的状态和结果。 4. 安全性和稳定性:scanport源码中应当包含一些安全性和稳定性的处理机制,如设置合理的扫描速率,避免对目标主机造成过大的负担,以及处理异常情况和错误信息的方式。 总之,scanport源码一个功能强大且易于使用的端口扫描工具的实现,它为网络管理员提供了一种高效的方法来评估和保护网络系统的安全性。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值