小编Ale*_*lex的帖子

strncmp 并通过传递数组的第 i 个索引地址来比较数组的一部分

我有这个功能

void save_ad(int n,char arr[n])
{
    int i=0;
    int price=0;
    char title[100];
    
    printf("entered\n");
    
    while(i<n)
    {
        
            
        if(strncmp((char*)&arr[i],"title=",sizeof("title="))==0)
        
        {
            
            int x=0;
            while(arr[x]!='\r')
            {
                printf("%c\n",arr[x]);
            }
            printf("\n");
        }
        i++;
    }
    printf("\n");

}
Run Code Online (Sandbox Code Playgroud)

arr 是从另一个函数传递的,它包含 this

add?title=samsung&price=22000 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Run Code Online (Sandbox Code Playgroud)

所以我喜欢提取这一行,add?title=samsung&price=22000 HTTP/1.1因为这就是函数save_ad。但问题是我无法理解为什么我无法通过arr像这样传递数组第 i 个索引的地址来进行比较

    if(strncmp((char*)&arr[i],"title=",sizeof("title="))==0)
Run Code Online (Sandbox Code Playgroud)

在索引 4 处,单词 …

c

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

如何从函数中读取所有参数 - ebpf

所以我有这些宏

#define PT_REGS_PARM1(x) ((x)->di)
#define PT_REGS_PARM2(x) ((x)->si)
#define PT_REGS_PARM3(x) ((x)->dx)
#define PT_REGS_PARM4(x) ((x)->cx)
#define PT_REGS_PARM5(x) ((x)->r8)
#define PT_REGS_RET(x) ((x)->sp)
#define PT_REGS_FP(x) ((x)->bp)
#define PT_REGS_RC(x) ((x)->ax)
#define PT_REGS_SP(x) ((x)->sp)
#define PT_REGS_IP(x) ((x)->ip)
Run Code Online (Sandbox Code Playgroud)

但上面没有说如何从函数中获取特定参数`__sys_write

将 sys_write 视为

 long sys_write(unsigned int fd, const char __user *buf,
              size_t count);
Run Code Online (Sandbox Code Playgroud)

所以我需要缓冲区,我一直在尝试不同的宏,但不确定哪个宏给我什么?

那么任何人都可以澄清一下吗

如果我正在读取缓冲区,那么也将读取缓冲区,那么也需要计数,这样我的 ebpf 程序就会被加载,并且不会给出越界访问错误。谁能告诉

c ebpf

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

char 数组中的字节如何表示整数?

假设我有从二进制文件(如 ext2 格式的文件系统图像文件)读取的 char 数组。

现在我需要读取从偏移字节 1024 开始的整数(<--这是从数据开始的偏移量)。有什么巧妙的方法可以做到这一点吗?该整数可以是任何数字。所以我相信在我的系统(x86-64)上可以用 4 字节的整数大小来表示。

我相信我需要使用 strtol ,例如:

/* Convert the provided value to a decimal long */
char *eptr=malloc(4);// 4 bytes becuase sizeof int is 4 bytes
....
int valread=read(fd,eptr,4);//fd is to ext2 formatted image file (from file system)
result = strtol(eptr, &v, 10);
Run Code Online (Sandbox Code Playgroud)

上面是long那么这个数字是代表32位整数吗?

应该eptr以 null 终止吗?

这是否正确?

c io

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

来自msdn样本的c#中的IComparer - 在MSDN部分上误导

我有以下方法:

public static void OrderByDescendingEx1()
{
    List<decimal> decimals = new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };

    IEnumerable<decimal> query =  
        decimals.OrderByDescending(num => num, new SpecialComparer());

    foreach (decimal num in query)
    {
        Console.WriteLine(num);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是执行 IComparer

public class SpecialComparer : IComparer<decimal>
{
    /// <summary>
    /// Compare two decimal numbers by their fractional parts.
    /// </summary>
    /// <param name="d1">The first decimal to compare.</param>
    /// <param name="d2">The second decimal to compare.</param>
    /// <returns>1 if the first decimal's fractional part 
    /// …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

真正的软件在 Linux 和其他操作系统上是否有内核模块

我想问:Linux 上的 Apache Webserver 之类的应用程序,Wireshark 之类的应用程序,以及网络工具之类的软件以及其他必须与网络连接一起工作的现实世界应用程序,它们是否需要内核模块,如果不需要,那么它在多大程度上是正常的实践应用程序确实具有内核模块。就像当我安装一些应用程序然后内核模块安装它一样。我知道当我从 Windows 启用 IIS 服务器时,会启用特定的内核模块来执行 IIS 工作。(不知道为什么那个操作系统没有实现原始套接字 api 以便开发人员可以使用)

我的问题:前段时间我试图使用原始套接字制作 tcp 服务器,但发现这并不容易,因为内核会做各种各样的事情(如果我错了,请纠正我)

检查欺骗数据包

在数据包中添加自己的标头信息

所以我要制作一个在内核中执行以下操作的应用程序

  1. 配置NIC卡如读卡寄存器和报告
  2. 关闭网络接口
  3. 启动网络接口
  4. 从 DMA RX 读取数据包并报告接收到的平均数据包数以检测 DOS 攻击,如果检测到 DOS,则关闭特定接口/如数据包的报告计数器

应用程序将仅充当命令控制器。喜欢用户可以使用应用程序进行上述 4 点中指定的更改。

所以我想问你,如果有人喜欢在应用程序中选择嵌入式内核模块,为什么应用程序有一个内核模块是一种常见的做法,为什么这是一个重新选择的选项,

以上内容仅供学习使用。

c linux kernel-module

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

如何在C中打印指针成员指向的值

我有一个结构

\n
struct c\n{\n    int *id;\n    int type;   \n\n} obj;\n
Run Code Online (Sandbox Code Playgroud)\n

如何打印obj.id指向什么?并且还obj->id指向一些 int 变量

\n

我试过

\n
printf("%p\\n",obj.id);\n
Run Code Online (Sandbox Code Playgroud)\n

但上面打印了一些地址

\n

\n
printf("%d\\n",obj.id);\n
Run Code Online (Sandbox Code Playgroud)\n

在上面的编译器给出警告

\n
format \xe2\x80\x98%d\xe2\x80\x99 expects argument of type \xe2\x80\x98int\xe2\x80\x99, but argument 2 has type \xe2\x80\x98int *\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n

c

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

标签 统计

c ×5

.net ×1

c# ×1

ebpf ×1

io ×1

kernel-module ×1

linux ×1