c - 刪除前 4 個字節的數據 (c - remove first 4 bytes of data)


問題描述

c ‑ 刪除前 4 個字節的數據 (c ‑ remove first 4 bytes of data)

I'm reading a packet but I need to strip the first four bytes and the last byte from the packet to get what I need, how would you go about doing this in C?

/* Build an input buffer of the incoming message. */
    while ( (len=read(clntSocket, line, MAXBUF)) != 0)
    {
            msg = (char *)malloc(len + 1);
            memset(msg, 0, len+1);
            strncpy(msg, line, len);
        }
    }

The incoming data is a mix of char and int data.

‑‑‑‑‑

參考解法

方法 1:

You can simply start you copy at (line + 4) if line is a char *, which it appears to be. And copy 5 bytes fewer than len, which will ditch the last byte.

I.e.  making it pretty explicit (assuming your prior malloc, which leaves some safety at the end of the buffer).

char *pFourBytesIn = (line + 4);
int adjustedLength = len ‑ 5;
strncpy(msg, pFourBytesIn, adjustedLength);
msg[adjustedLength] = '\0';

方法 2:

You can change the address of strncpy source:  

while ( (len=read(clntSocket, line, MAXBUF)) != 0)
{
        msg = (char *)calloc(len ‑3, 1); // calloc instead of malloc + memset
        strncpy(msg, line+4, len);
    }
}

PS: I assumed that line is char*.

(by txcotraderDWrightRamy Al Zuhouri)

參考文件

  1. c ‑ remove first 4 bytes of data (CC BY‑SA 3.0/4.0)

#offset #packet-capture #C






相關問題

ASM 使用代碼查找偏移量 (ASM find offset with code)

沒有在偏移量 0 處映射 Win32 便攜式可執行文件的可能原因是什麼? (What are possible reasons for not mapping Win32 Portable Executable images at offset 0?)

Адлюстраванне тоста з зададзеным зрушэннем (Displaying toast at a given offset)

c - 刪除前 4 個字節的數據 (c - remove first 4 bytes of data)

PCM 樣本位置 [字節偏移] 在 flac (PCM sample position [byte offset] in flac)

到達 (window).scroll 上的中間元素 (Reach middle element on (window).scroll)

插入新元素時“LIMIT OFFSET”是否穩定? (Is 'LIMIT OFFSET' stable when new element inserted?)

如何從包含 Oracle 中時區偏移的日期/時間字符串中獲取 UTC 日期/時間 (How to get UTC date/time from a date/time string that contains timezone offset in Oracle)

嚴重性:警告消息:非法字符串偏移 'id' MY OWN PROJECT (Severity: Warning Message: Illegal string offset 'id' MY OWN PROJECT)

jquery 獲取和設置文檔偏移量(或位置?) (jquery get and set document offset (or position?))

在地址位移內還是在地址位移外相乘更有效? (Is it more efficient to multiply within the address displacement or outside it?)

如何在裝配中進行十六進制偏移計算 (how to do hex offset calculation in assembly)







留言討論