标签: netbsd

Unix屏幕实用程序错误:无法找到'xterm-256color'的termcap条目

我通过我的Mac上的ssh连接在NetBSD系统上工作,我想使用该screen实用程序,以便我可以启动进程并在终端连接中断后返回它们.当我输入时,screen我收到错误消息:

Cannot find termcap entry for 'xterm-256color'
Run Code Online (Sandbox Code Playgroud)

浏览论坛帖子后,我认为它与远程机器上的termcap有关,但似乎并非如此; 我可以从另一台计算机的ssh会话中启动屏幕而没有任何错误,我通常无法访问该计算机.这表明我需要在本地计算机上配置一些东西,但我无法弄清楚是什么或如何.虽然这篇文章被标记为"gnu-screen"但我怀疑我正在使用Berkeley屏幕,尽管我不知道这是否是一个重要的区别.

macos ssh gnu-screen termcap netbsd

14
推荐指数
2
解决办法
2万
查看次数

如果我使用睡眠,为什么测量的网络延迟会发生变化?

我正在尝试确定机器接收数据包,处理数据包并给出答案所需的时间.

这台机器,我称之为"服务器",运行一个非常简单的程序,它recv(2)在缓冲区中接收一个数据包(),将收到的内容(memcpy(3))复制到另一个缓冲区并发回数据包(send(2)).服务器运行NetBSD 5.1.2.

我的客户多次测量往返时间(pkt_count):

struct timespec start, end;
for(i = 0; i < pkt_count; ++i)
{
    printf("%d ", i+1);

    clock_gettime(CLOCK_MONOTONIC, &start);        
    send(sock, send_buf, pkt_size, 0);
    recv(sock, recv_buf, pkt_size, 0);
    clock_gettime(CLOCK_MONOTONIC, &end);        

    //struct timespec nsleep = {.tv_sec = 0, .tv_nsec = 100000};
    //nanosleep(&nsleep, NULL);

    printf("%.3f ", timespec_diff_usec(&end, &start));
}   
Run Code Online (Sandbox Code Playgroud)

为清楚起见,我删除了错误检查和其他小问题.客户端运行在64位的Ubuntu 12.04上.两个程序都以实时优先级运行,尽管只有Ubuntu内核是实时的(-rt).程序之间的连接是TCP.这很好,平均给我750微秒.

但是,如果我启用已注释的nanosleep调用(睡眠时间为100μs),我的测量值会下降100μs,平均值为650μs.如果我睡眠200μs,则测量值降至550μs,依此类推.这一直持续到600μs的睡眠,平均为150μs.然后,如果我将睡眠时间提高到700μs,我的测量值平均会达到800μs.我用Wireshark证实了我的程序测量.

我无法弄清楚发生了什么.我已经在客户端和服务器中设置了TCP_NODELAY套接字选项,没有区别.我使用UDP,没有区别(相同的行为).所以我猜这种行为不是由于Nagle算法.会是什么呢?

[UPDATE]

这是客户端输出与Wireshark的截图.现在,我在另一台机器上运行我的服务器.我使用相同配置的相同操作系统(因为它是笔式驱动器中的Live System),但硬件不同.此行为未显示,一切按预期工作.但问题仍然存在:为什么它会在以前的硬件中发生?

输出比较

[更新2:更多信息]

正如我之前所说,我在两台不同的服务器计算机上测试了我的一对程序(客户端/服务器).我绘制了两个获得的结果.

两台服务器之间的比较

第一台服务器(奇怪的)是RTD单板计算机,具有1Gbps以太网接口.第二台服务器(普通服务器)是具有100Mbps以太网接口的Diamond单板计算机.他们都从SAME pendrive运行SAME OS(NetBSD 5.1.2).

从这些结果来看,我确实认为这种行为是由驱动程序或NIC本身引起的,尽管我仍然无法想象它为什么会发生......

c sockets linux network-programming netbsd

11
推荐指数
1
解决办法
1258
查看次数

9
推荐指数
2
解决办法
3008
查看次数

缓冲区溢出漏洞利用:函数 ret 上的段错误到堆栈代码

我试图利用测试程序中的缓冲区溢出来执行任意代码。我在 NetBSD 6 i386 上。这是C代码:

int checkPassword(char *password)
{
  char                  savePassword[64] = {0};
  char                  *logMessage;
  int                   isUser = 0;
  int                   isAdmin = 0;
  int                   i;

  if (!strcmp(password, userPassword))
    isUser = 1;
  strcpy(savePassword, password);  
  for (i = 0; password[i]; ++i)
    password[i] ^= xorKey;
  if (!strcmp(password, adminPassword))
    isAdmin = 1;
  if (!(isAdmin | isUser)) {
    /* ... */
  }
  return isAdmin ? ADMIN : isUser ? USER : NOBODY; /* main.c:79 */
}
Run Code Online (Sandbox Code Playgroud)

我将代码插入savePassword缓冲区 (at %ebp - 0x58)。下面是 GDB …

c exploit buffer-overflow segmentation-fault netbsd

5
推荐指数
1
解决办法
1956
查看次数

OpenBSD 无法执行 a.out

我编写了这个程序,应该以 exitcode 44 退出:

// prog.S
#include <sys/syscall.h>
        .text
        .globl _start
_start:
        subl $8, %esp
        pushl $44
        pushl $0
        movl $SYS_exit, %eax
        int $0x80
Run Code Online (Sandbox Code Playgroud)

我编译了

$ cc prog.S -nostdlib -o a.out
Run Code Online (Sandbox Code Playgroud)

并运行

$./a.out
Run Code Online (Sandbox Code Playgroud)

在 FreeBSD 13.0-RELEASE i386 (clang 11.0.1) 上这样做效果很好。事实上,可执行文件运行并且程序的退出代码应该是 44。

但是,在 OpenBSD 7.0 GENERIC.MP#5 i386(clang 版本 11.1.0)和 NetBSD 9.2 i386(gcc 7.5.0)上执行相同操作时,内核拒绝执行代码,并将其传递给 shell,其中课程失败:

openbsd$ ./a.out
./a.out[1]: syntax error: `(' unexpected
Run Code Online (Sandbox Code Playgroud)

奇怪的是,该文件说它是一个 ELF 二进制文件,因此通常应该由内核执行

openbsd$ file a.out

a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped …
Run Code Online (Sandbox Code Playgroud)

assembly openbsd bsd freebsd netbsd

5
推荐指数
1
解决办法
300
查看次数

在bash中编写脚本解释器

我为ruby编写了一个bash包装器,它经历了各种设置步骤.

最基本的版本是,

   #!/bin/bash 
   #   ruby_wrapper.sh
   ruby
Run Code Online (Sandbox Code Playgroud)

现在我希望能够像常规红宝石一样使用这个包装器!具体来说,我想创建一个使用这个"解释器"的.rb文件.

   #!/path/to/ruby_wrapper.sh
   #  my_file.rb
   puts "hello world"
Run Code Online (Sandbox Code Playgroud)

所以我希望能够$ ./my_file.rb而不是$ ruby_wrapper.sh my_file.rb

这可能吗?

文件称事实并非如此.

请注意,解释器本身可能不是解释器脚本.

但我不明白为什么不.有没有人有任何想法来解决这个问题?

unix linux bash netbsd

1
推荐指数
1
解决办法
818
查看次数

什么是NetBSD的FIONSPACE ioctl在Linux中的等价物?

我正在使用Linux 2.6.38(fc14).什么是ioctl标志来获取套接字文件描述符(例如,TCP套接字)上的可用空间量?我发现NetBSD有FIONREAD,FIONWRITE和FIONSPACE用于此类相关目的.但是,我只能在Linux中使用FIONREAD.

sockets linux ioctl netbsd

1
推荐指数
1
解决办法
2293
查看次数