免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wantaugust
打印 上一主题 下一主题

[内核入门] 自己设想3种比较端口和pid的关系方法,不是bashshell,请大家帮帮 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-07-31 12:00 |只看该作者
回复 9# Godbach
能在第二种方法中想想办法吗,好些资料说在/proc中有端口的资料,但是我只找到/proc/pid/net/tcp。这个tcp的10进制端口和netstat里的端口号又对不上,不知道怎么办了

   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
12 [报告]
发表于 2014-07-31 12:09 |只看该作者
回复 11# wantaugust
如果你本地是主动发起连接的话,那么你检查的就是源端口

   

论坛徽章:
0
13 [报告]
发表于 2014-07-31 15:58 |只看该作者
回复 12# Godbach


    没错,主要就是限制本地的output端口,在允许的pid的范围内就放行

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
14 [报告]
发表于 2014-07-31 16:37 |只看该作者
回复 11# wantaugust


这个能对上啊,两者是一致的。是不是你计算错了。
   

论坛徽章:
0
15 [报告]
发表于 2014-07-31 16:51 |只看该作者
本帖最后由 wantaugust 于 2014-07-31 16:55 编辑

回复 9# Godbach

刚刚想到的一个方法:
char *buf;
char comm[256]="lsof -i :port     |cut -d ' ' -f 2";
char temp[256];
int prot=12345;
要做的就是将comm中的port替换成12345然后复值给buf,
buf就成了:lsof -i :12345     |cut -d ' ' -f 2"
然后再pp=popen(comm,'r');

但是不知道怎么将port值替换成到comm中
我试着将int port先转成字符,然后在给
comm[9]=temp[0],comm[10]=temp[1],comm[11]=temp[2],
comm[12]=temp[3],comm[13]=temp[4] 5个元素复值
但是不知道到用什么函数能将12345转换成temp[0]temp[1]temp[2]temp[3]temp[4]
别见笑,我接触c不到一年,谢谢
总是大错字,重新编辑了2次,不好意思

论坛徽章:
0
16 [报告]
发表于 2014-07-31 17:09 |只看该作者
回复 14# Godbach
真的对不上,4267是我transmision的进程号:
[root@localhost ~]# netstat -tunp|grep 4267
tcp        0      0 192.168.0.202:57166     182.218.47.37:20642     ESTABLISHED 4267/transmission-g
tcp        0      1 192.168.0.202:52552     5.35.170.5:80           SYN_SENT    4267/transmission-g
tcp        1      0 192.168.0.202:52540     5.35.170.5:80           CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:47731     162.159.243.215:80      CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:43126     218.85.133.194:6969     CLOSE_WAIT  4267/transmission-g
tcp        0      1 192.168.0.202:45585     111.74.238.135:2710     SYN_SENT    4267/transmission-g
tcp        1      0 192.168.0.202:43442     50.63.83.19:80          CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:57116     67.208.74.71:80         CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:37243     188.165.28.253:80       CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:52541     5.35.170.5:80           CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:53746     173.203.217.152:80      CLOSE_WAIT  4267/transmission-g
tcp        0      0 192.168.0.202:37726     210.244.71.12:6969      CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:51838     88.80.30.4:80           CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:53486     62.116.181.25:80        CLOSE_WAIT  4267/transmission-g
tcp        0      1 192.168.0.202:45591     111.74.238.135:2710     SYN_SENT    4267/transmission-g
tcp        1      0 192.168.0.202:45765     173.203.238.64:80       CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:41506     50.63.83.19:80          CLOSE_WAIT  4267/transmission-g
tcp        0      1 192.168.0.202:57258     85.25.196.185:2710      SYN_SENT    4267/transmission-g
tcp        1      0 192.168.0.202:60615     104.28.25.63:80         CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:41464     50.63.83.19:80          CLOSE_WAIT  4267/transmission-g
tcp        1      0 192.168.0.202:56325     205.251.122.77:80       CLOSE_WAIT  4267/transmission-g
tcp        0      1 192.168.0.202:52050     95.85.45.61:80          SYN_SENT    4267/transmission-g
udp        0      0 192.168.0.202:45679     192.168.0.1:5351        ESTABLISHED 4267/transmission-g



然后进入/proc/4267/net
[root@localhost net]# cat tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:006F 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 16457 1 ffff8800b2538000 100 0 0 10 0                     
   1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 21377 1 ffff8800a7e60000 100 0 0 10 0                     
   2: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 23088 1 ffff8800a5ac0700 100 0 0 10 0                     
   3: 00000000:8C42 00000000:0000 0A 00000000:00000000 00:00000000 00000000    29        0 17052 1 ffff8800b2538700 100 0 0 10 0                     
   4: 000000000C7 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 40235 1 ffff8800a325e900 100 0 0 10 0                     
   5: CA00A8C0F4E 252FDAB6:50A2 01 00000000:00000000 00:00000000 00000000     0        0 150562 1 ffff8800a3258e00 622 4 22 5 3                    
   6: CA00A8C0:CD3C 05AA2305:0050 08 00000000:00000001 00:00000000 00000000     0        0 156994 1 ffff8800a5ac7700 113 4 0 10 -1                  
   7: CA00A8C0:CD3E 05AA2305:0050 08 00000000:00000001 00:00000000 00000000     0        0 156996 1 ffff8800a5ac7000 115 4 0 10 -1                  
   8: CA00A8C0:BA73 D7F39FA2:0050 08 00000000:00000001 00:00000000 00000000     0        0 142002 1 ffff8800a5ac3800 57 4 0 10 -1                    
   9: CA00A8C0:A876 C28555DA:1B39 08 00000000:00000001 00:00000000 00000000     0        0 140760 1 ffff88008e587000 29 4 0 10 -1                    
  10: CA00A8C0:B211 87EE4A6F:0A96 02 00000001:00000000 01:000001C4 00000005     0        0 157008 2 ffff8800a5ac6900 3200 0 0 1 5                    
  11: CA00A8C0:A9B2 13533F32:0050 08 00000000:00000001 00:00000000 00000000     0        0 157023 1 ffff8800a5ac3100 59 4 0 10 -1                    
  12: CA00A8C0:9E50 F558ED5B:0050 09 00000001:00000001 01:0000155E 00000006     0        0 0 2 ffff88008e765400 6521 4 0 1 7                        
  13: CA00A8C0F1C 474AD043:0050 08 00000000:00000001 00:00000000 00000000     0        0 42965 1 ffff880090ff0000 70 4 22 10 -1                    
  14: CA00A8C0:A19A F558ED5B:0050 02 00000001:00000000 01:0000021E 00000004     0        0 157973 2 ffff8800a7e67700 1600 0 0 1 5                    
  15: CA00A8C0:917B FD1CA5BC:0050 08 00000000:00000001 00:00000000 00000000     0        0 44419 1 ffff880093e82a00 86 4 18 10 -1                    
  16: CA00A8C0:CD3D 05AA2305:0050 08 00000000:00000001 00:00000000 00000000     0        0 156995 1 ffff8800a5ac4d00 115 4 0 10 -1                  
  17: CA00A8C01F2 98D9CBAD:0050 08 00000000:00000001 00:00000000 00000000     0        0 40902 1 ffff8800a3259c00 63 4 22 10 -1                    
  18: CA00A8C0:A717 13533F32:0050 09 00000001:00000001 01:000000EB 00000005     0        0 0 2 ffff88008e584d00 1897 4 0 1 7                        
  19: CA00A8C0:935E 0C47F4D2:1B39 08 00000000:00000000 00:00000000 00000000     0        0 150019 1 ffff88008e580700 38 4 0 10 -1                    
  20: CA00A8C0:CA7E 041E5058:0050 08 00000000:00000001 00:00000000 00000000     0        0 44413 1 ffff880093e81500 89 4 16 10 -1                    
  21: CA00A8C00EE 19B5743E:0050 08 00000000:00000001 00:00000000 00000000     0        0 44411 1 ffff880093e86200 57 4 26 10 -1                    
  22: CA00A8C0:B217 87EE4A6F:0A96 02 00000001:00000000 01:000005A4 00000004     0        0 157974 2 ffff8800a7e63800 1600 0 0 1 5                    
  23: CA00A8C0:B2C5 40EECBAD:0050 08 00000000:00000001 00:00000000 00000000     0        0 45578 1 ffff8800a5949500 62 4 30 10 -1                    
  24: CA00A8C0:A222 13533F32:0050 08 00000000:00000001 00:00000000 00000000     0        0 40271 1 ffff8800a325e200 52 4 24 10 -1                    
  25: CA00A8C0FAA B9C41955:0A96 02 00000001:00000000 01:00000228 00000003     0        0 158806 2 ffff88012c812a00 800 0 0 1 5                     
  26: CA00A8C0:ECC7 3F191C68:0050 08 00000000:00000001 00:00000000 00000000     0        0 44456 1 ffff880090fb9500 50 4 30 10 -1                    
  27: CA00A8C0:A1F8 13533F32:0050 08 00000000:00000001 00:00000000 00000000     0        0 42923 1 ffff8800a5ac6200 52 4 30 10 -1                    
  28: CA00A8C0C05 4D7AFBCD:0050 08 00000000:00000001 00:00000000 00000000     0        0 45093 1 ffff8800a5948700 58 4 4 10 -1                     
  29: CA00A8C0:CB52 3D2D555F:0050 02 00000001:00000000 01:00000090 00000002     0        0 158808 2 ffff88012c815b00 400 0 0 1 5
   

看到tcp文件前几行中16进制端口了吗,006F,0016,0277,8C42,在netstat中就没有呀

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
17 [报告]
发表于 2014-07-31 17:17 |只看该作者
回复 16# wantaugust

0x16 是 22,可能和 SSH 有关

你查下资料看看前几行有什么特别的,你没看 IP 啥的也特别吧,后面的 0A 代表状态,好像是 LISTEN 的意思吧。排除一下就可以吧

   

论坛徽章:
0
18 [报告]
发表于 2014-07-31 17:51 |只看该作者
回复 17# Godbach


    我没想到,谢谢,我查查

论坛徽章:
0
19 [报告]
发表于 2014-08-01 15:26 |只看该作者
回复 17# Godbach


    大神报告你个好消息,我终于成功了,利用下面的代码,正常上网
    char comm[256]="lsof -i :port   |cut -d ' ' -f 2";//这里省略一个子程序,就是把字符串中的port替换成一个tcp包头获取的来源端口
    pp=popen(comm,"r");
    fgets(line,255,pp);
    sscanf(line,"%d",&pid);
然后if(pid==main中的进程号)
然后就是返回包是否放行了
好激动呀

但是,这里是郁闷的但是,我网速300k,用了自己写的防火墙后是1k-5.4k不考虑速度和猫一样上网,我是不是失败了!
关键就是那个lsof -i :port这个语句占用时间是以妙为单位的,我tm快被他气疯了

看来现在只能考虑/porc/pid/net/tcp这条路了,找了一天这个tcp文件的解释,寥寥无几

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
20 [报告]
发表于 2014-08-01 18:33 |只看该作者
回复 19# wantaugust

kernel 代码的文档中会对 /proc 下相关文件解释的。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP