我打算在我的Go应用程序中保存密码/密钥以用于与其他一些应用程序的通信.我想知道如何保护它,例如有人获得二进制文件并在某个十六进制查看器中搜索它.这种安全措施是否常见,还是我担心太多?
几乎从一开始,Photoshop 文件就以 8BPS 开始。(我已将其验证回 2.5 版)它在某些时候一定具有某种意义。
我认为 8B 可能是指位/通道,但将其保存为 16 或 32 没有区别。PS 可能是 PhotoShop,但也可能不是。与 Mac 保存文件的方式有关吗?
我知道 PE 32 位结构,我想知道 PE 32 位和 PE 64 位之间有什么区别(定义 64 位 PE 结构)?
void update_memblock(MEMBLOCK *mb)
{
static unsigned char tempbuf[128 * 1024];
SIZE_T bytes_left;
SIZE_T total_read;
SIZE_T bytes_to_read;
SIZE_T bytes_read;
bytes_left = mb->size;
total_read = 0;
while (bytes_left)
{
bytes_to_read = (bytes_left > sizeof(tempbuf)) ?
sizeof(tempbuf) : bytes_left;
ReadProcessMemory(mb->hProc, mb->addr + total_read,
tempbuf, bytes_to_read, &bytes_read);
if (bytes_read != bytes_to_read) break;
memcpy(mb->buffer + total_read, tempbuf, bytes_read);
bytes_left -= bytes_read;
total_read += bytes_read;
}
mb->size = total_read;
}
Run Code Online (Sandbox Code Playgroud)
这是我当前的代码,我最初正在阅读另一个进程'内存使用ReadProcessMemory.现在我存储了临时数据tempbuf.我能够以tempbuf十六进制形式输出数据.但是我打算如图所示显示它,另外我在这里遇到的另一个复杂因素是bytes_left> sizeof(tempbuf)我只读取相当于tempbuf大小的足够数据.如何读取更多数据,因为我定义的数组只能支持尽可能多的数据?
我一直在开发一个程序,该程序将采用十六进制文件,如果文件名以“CID”开头,那么它应该删除前 104 个字符,在那之后有几个单词。我也想删除单词之后的所有内容,但问题是我想要隔离的部分长度各不相同。
\n\n我的代码目前是这样的:
\n\ny = 0\nimport os\nfiles = os.listdir(".")\n\nfilenames = []\nfor names in files:\n if names.endswith(".uexp"):\n filenames.append(names)\n y +=1\n print(y)\nprint(filenames)\n\nfor x in range(1,y):\n filenamestart = (filenames[x][0:3])\n print(filenamestart)\n if filenamestart == "CID":\n openFile = open(filenames[x],\'r\')\n fileContents = (openFile.read())\n ItemName = (fileContents[104:])\n print(ItemName)\nRun Code Online (Sandbox Code Playgroud)\n\n输入示例文件(从 HxD 中提取):
\n\n.........................\xc3\xbd\xc3\xbf\xc3\xbf\xc3\xbf................E.................!...1AC9816A4D34966936605BB7EFBC0841.....Sun Tan Specialist.................9.................!...9658361F4EFF6B98FF153898E58C9D52.....Outfit.................D.................!...F37BE72345271144C16FECAFE6A46F2A.....Don\'t get burned............................................................................................................................\xc3\x81\xc6\x92*\xc5\xbe\nRun Code Online (Sandbox Code Playgroud)\n\n我已经成功删除了前 104 个字符,但我还想删除“Sun Tan Specialist”之后的字符,这些字符的长度会有所不同,所以我只剩下那部分。
\n\n我感谢任何人能给我的任何帮助。
\n该问题基于以下命令的输出:
$ hexdump -C acpid.pid
00000000 36 39 37 0a |697.|
00000004
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,0x36 0x39 0x37被解析为其关联的符号6 9 7。由于0x0A是换行符,因此它们不是表示它的普通符号(根据 ASCII 表),但是
为什么0x0A解析为一个点?
我的操作系统是Ubuntu 18.04.3。
我正在尝试检查磁盘或磁盘映像是否为"空".我假设如果第一个1mb和最后一个1mb是零则这是真的.我开始尝试重新创建,hexdump但此时似乎有点啰嗦.
这是我的代码:
open DISK, $disk or die $!;
for( 1 .. 1024 ) {
$buffer = undef;
sysread(DISK, $buffer, 1024, 0) or last;
for ( split //, $buffer ) {
if( ord($_) =~ /[^0]/ ) {
$flag++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我想输出8go文件的hexdump结果.是否有可能一件一件地做?如何指定有限数量的行(我已阅读手册页,它似乎对应于-n长度,但它不起作用)
在Linux bash shell中,我使用以下命令将纯十六进制转储转换为二进制
$ echo "8cd59ef53c9aaa68311b73767e0975e7" | xxd -r -p > xxd_out.bin
Run Code Online (Sandbox Code Playgroud)
当我在文本查看器中打开文件时,它看起来像 ŒÕžõ<šªh1sv~ uç
或在xxd中
$ xxd -b xxd_out.bin
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<.
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv
0000000c: 01111110 00001001 01110101 11100111 ~.u.
Run Code Online (Sandbox Code Playgroud)
或在Notepad ++ Hex-Editor(插件)视图中

如何在Ruby中获得相同的二进制输出?有没有可用的库xxd -r -p?
我今天在调试时遇到了一些奇怪的问题,我设法将其追溯到一开始我忽略的事情。
看一下这两个命令的输出:
root@test:~# printf '%X' 10 | xxd -r -p | xxd -p
root@test:~# printf '%X' 43 | xxd -r -p | xxd -p
2b
root@test:~#
Run Code Online (Sandbox Code Playgroud)
第一个 xxd 命令将十六进制转换为 ASCII。第二个将 ASCII 转换回十六进制。(43 十进制 = 2b 十六进制)。
不幸的是,它似乎是十六进制转换为ASCII并没有保留非打印字符。例如,原始十六进制“A”(十进制十进制 = A 十六进制),不知何故被xxd -r -p. 因此,当我执行逆操作时,我得到一个空结果。
我想做的是将一些数据输入到 minimodem 中。我需要通过位敲击有效地生成呼叫等待来电显示 (FSK)。我的 bash 脚本有正确的位,但如果我执行十六进制转储,则缺少不可打印的字符。不幸的是,minimodem 似乎只接受 ASCII 字符,我需要给它原始十六进制,但它似乎在转换中被吃掉了。是否有可能以某种方式保留这些字符?我不认为这是任何选择,所以想知道是否有更好的方法。