• 大小: 7.57MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-17
  • 语言: 其他
  • 标签: mini24  

资源简介

基于mini2440安全文件传输系统, 含文档和代码,可直接在mini2440板子上运行。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAXBUF 1024

void ShowCerts(SSL * ssl)
{
  X509 *cert;
  char *line;

  cert = SSL_get_peer_certificate(ssl);
  if (cert != NULL) {
    printf(“Digital certificate information:\n“);
    line = X509_NAME_oneline(X509_get_subject_name(cert) 0 0);
    printf(“Certificate: %s\n“ line);
    free(line);
    line = X509_NAME_oneline(X509_get_issuer_name(cert) 0 0);
    printf(“Issuer: %s\n“ line);
    free(line);
    X509_free(cert);
  }
  else
    printf(“No certificate information!\n“);
}

int main(int argc char **argv)
{
  int ijsockfd len fd size;
  char fileName[50]sendFN[20];
  struct sockaddr_in dest;
  char buffer[MAXBUF + 1];
  SSL_CTX *ctx;
  SSL *ssl;

  if (argc != 3)
  {
    printf(“Parameter format error! Correct usage is as follows:\n\t\t%s IP Port\n\tSuch as:\t%s 127.0.0.1 80\n“ argv[0] argv[0]); exit(0);
  }

  /* SSL 库初始化 */
  SSL_library_init();
  OpenSSL_add_all_algorithms();
  SSL_load_error_strings();
  ctx = SSL_CTX_new(SSLv23_client_method());
  if (ctx == NULL)
  {
    ERR_print_errors_fp(stdout);
    exit(1);
  }

  /* 创建一个 socket 用于 tcp 通信 */
  if ((sockfd = socket(AF_INET SOCK_STREAM 0)) < 0)
  {
    perror(“Socket“);
    exit(errno);
  }
  printf(“socket created\n“);

  /* 初始化服务器端(对方)的地址和端口信息 */
  bzero(&dest sizeof(dest));
  dest.sin_family = AF_INET;
  dest.sin_port = htons(atoi(argv[2]));
  if (inet_aton(argv[1] (struct in_addr *) &dest.sin_addr.s_addr) == 0)
  {
    perror(argv[1]);
    exit(errno);
  }
  printf(“address created\n“);

  /* 连接服务器 */
  if (connect(sockfd (struct sockaddr *) &dest sizeof(dest)) != 0)
  {
    perror(“Connect “);
    exit(errno);
  }
  printf(“server connected\n\n“);

  /* 基于 ctx 产生一个新的 SSL */
  ssl = SSL_new(ctx);
  SSL_set_fd(ssl sockfd);
  /* 建立 SSL 连接 */
  if (SSL_connect(ssl) == -1)
    ERR_print_errors_fp(stderr);
  else
  {
    printf(“Connected with %s encryption\n“ SSL_get_cipher(ssl));
    ShowCerts(ssl);
  }

  /* 接收用户输入的文件名,并打开文件 */
  printf(“\nPlease input the filename of you want to load :\n>“);
  scanf(“%s“fileName);
  if((fd = open(fileNameO_RDONLY0666))<0)
  {
    perror(“open:“);
    exit(1);
  }
    
  /* 将用户输入的文件名,去掉路径信息后,发给服务器 */
  for(i=0;i<=strlen(fileName);i++)
  {
    if(fileName[i]==‘/‘)
    {
      j=0;
      continue;
    }
    else {sendFN[j]=fileName[i];++j;}
  }
  len = SSL_write(ssl sendFN strlen(sendFN));
  if (len < 0)
    printf(“‘%s‘message Send failure !Error code is %d,Error messages are ‘%s‘\n“ buffer errno strerror(errno));

  /* 循环发送文件内容到服务器 */
  bzero(buffer MAXBUF + 1); 
  while((size=read

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-03-17 19:40  SFSS\
     目录           0  2011-03-17 19:40  SFSS\doc\
     文件       74537  2010-08-11 19:18  SFSS\doc\概要设计.pdf
     文件      331100  2010-08-11 19:19  SFSS\doc\详细设计.pdf
     文件       52699  2010-08-11 19:19  SFSS\doc\项目需求.pdf
     目录           0  2011-03-17 19:40  SFSS\OpenSSL\
     目录           0  2011-03-17 19:40  SFSS\OpenSSL\代码\
     目录           0  2011-03-17 19:40  SFSS\OpenSSL\代码\库\
     文件     2086131  2009-06-16 22:55  SFSS\OpenSSL\代码\库\openssl-0.9.6.tar.gz
     文件     3852259  2009-06-16 22:08  SFSS\OpenSSL\代码\库\openssl-0.9.8k.tar.gz
     目录           0  2011-03-17 19:40  SFSS\OpenSSL\代码\编程范例\
     文件        1525  2010-02-27 11:00  SFSS\OpenSSL\代码\编程范例\cacert.pem
     文件        3607  2009-03-19 12:58  SFSS\OpenSSL\代码\编程范例\client.c
     文件        1675  2010-02-27 10:52  SFSS\OpenSSL\代码\编程范例\privkey.pem
     文件        4664  2009-03-20 11:55  SFSS\OpenSSL\代码\编程范例\server.c
     文件         162  2010-05-25 12:39  SFSS\OpenSSL\代码\编程范例\~$范例说明.doc
     文件       32256  2009-03-20 16:08  SFSS\OpenSSL\代码\编程范例\范例说明.doc
     目录           0  2011-03-17 19:40  SFSS\OpenSSL\资料\
     文件      533427  2009-06-09 10:31  SFSS\OpenSSL\资料\openssl_program.chm
     文件      237056  2009-06-09 10:31  SFSS\OpenSSL\资料\openssl中文简介.doc
     文件     1190527  2009-06-09 10:31  SFSS\OpenSSL\资料\openssl编程.pdf
     文件         164  2010-05-25 14:38  SFSS\readme.txt
     目录           0  2011-03-17 19:40  SFSS\线程池\
     目录           0  2011-03-17 19:40  SFSS\线程池\编程范例\
     文件        5799  2010-05-19 15:38  SFSS\线程池\编程范例\thread.c
     目录           0  2011-03-17 19:40  SFSS\线程池\资料\
     文件         162  2010-05-25 13:00  SFSS\线程池\资料\~$线程池介绍.doc
     文件       59392  2010-02-27 11:51  SFSS\线程池\资料\条件变量.doc
     文件       21504  2010-02-27 11:42  SFSS\线程池\资料\线程池介绍.doc
     目录           0  2011-03-17 19:40  SFSS\项目代码\
     目录           0  2011-03-17 19:40  SFSS\项目代码\client\
............此处省略10个文件信息

评论

共有 条评论