anythinging 发表于 2024-6-16 09:20:01

关于filewriteline记录日志格式出错的问题

做了个网络服务程序,不时就总被一群坏种扫描漏洞,想着记录下到底发送的是啥,结果文件编码格式被弄坏,想请教各位有经验的朋友如何解决?
我用的是默认utf8格式,看了下帮助好象可以使用fileopen指定编码格式,请有经验的朋友指点下修改编码模式可以避免此类问题吗?

日志记录代码
FileWriteLine($LogFile,@YEAR&'-'&@MON&'-'&@MDAY&' '&@HOUR&":"&@MIN&":"&@SEC&" _Rev DATA ---> "& $sReceivedString)

日志文件内容 如下,当记录了这个扫描的内容后文件就不能自动换行了,而且字符间还出现了空格
2024-06-16 02:22:04 _Rev DATA ---> /*�   Cookie: mstshash=Administr
     
2 0 2 4 - 0 6 - 1 6   0 5 : 1 5 : 2 3   _ R e v   D A T A   E r r o r

2024-06-16 05:15:23 _Rev DATA ---> /*?   Cookie: mstshash=Administr
     2024-06-16 08:46:23 _Rev TCPRecv ---> Empty Data , Close Socket.2024-06-16 08:46:23 _Rev

afan 发表于 2024-6-16 10:04:59

$hFile = FileOpen($LogFile, 1 + 512)
FileWriteLine($hFile, ...

anythinging 发表于 2024-6-16 10:16:15

afan 发表于 2024-6-16 10:04
$hFile = FileOpen($LogFile, 1 + 512)
FileWriteLine($hFile, ...

感谢回复,这就去试试

anythinging 发表于 2024-6-16 10:20:11

继续等坏种们扫描,回头反馈结果。

anythinging 发表于 2024-6-16 15:50:53

$hFile = FileOpen($LogFile, 1 + 512)好象没有效果

2024-06-16 15:22:37 _Rev DATA ---> /*�   Cookie: mstshash=Administr
     
2024-06-16 15:51:15 _Rev TCPRecv ---> Empty Data , Close Socket.2024-06-16 15:51:15 _Rev

afan 发表于 2024-6-16 15:54:40

anythinging 发表于 2024-6-16 15:50
$hFile = FileOpen($LogFile, 1 + 512)好象没有效果

2024-06-16 15:22:37 _Rev DATA --->    /*�   Co ...

那就是源头 $sReceivedString 问题了

anythinging 发表于 2024-6-16 16:04:45

afan 发表于 2024-6-16 15:54
那就是源头 $sReceivedString 问题了

下面的代码,您看有需要修改的地方吗?
目前比较恼人的是存了扫描的代码后,之后 filewriteline 保存的内容就不换行了。
Do
$Socket = TCPAccept($iListenSocket)
Until $Socket <> -1
$sReceived = TCPRecv($Socket, 2048, 1)
$sReceivedString = BinaryToString($sReceived, 4)
FileWriteLine($LogFile,@YEAR&'-'&@MON&'-'&@MDAY&' '&@HOUR&":"&@MIN&":"&@SEC&" _Rev DATA ---> "& $sReceivedString)

anythinging 发表于 2024-6-16 16:07:47

刚发现$sReceivedString = BinaryToString($sReceived, 4)是转换成utf8了,我换成ansi试试

anythinging 发表于 2024-6-16 16:14:43

afan 发表于 2024-6-16 15:54
那就是源头 $sReceivedString 问题了

我刚把接收端改成BinaryToString($sReceived, 1)后,发送端没改居然没问题,TCPSend($Socket, StringToBinary($SendToClientText, 4)),请教a版,是否可行?

有点忘了为什么当初没有使用默认ansi格式,不会是中文支持方面有问题吧?

afan 发表于 2024-6-16 16:27:48

anythinging 发表于 2024-6-16 16:14
我刚把接收端改成BinaryToString($sReceived, 1)后,发送端没改居然没问题,TCPSend($Socket, StringToBi ...

一般是要两端一致的,避免双子节字符乱码问题

anythinging 发表于 2024-6-16 17:00:06

afan 发表于 2024-6-16 16:27
一般是要两端一致的,避免双子节字符乱码问题

a版,我有个想法,如果能得到对方的ip,将其直接加入黑名单,下次它再连直接关闭socket。
请教获得对方ip的方法?

afan 发表于 2024-6-16 17:16:41

本帖最后由 afan 于 2024-6-16 19:39 编辑

anythinging 发表于 2024-6-16 17:00
a版,我有个想法,如果能得到对方的ip,将其直接加入黑名单,下次它再连直接关闭socket。
请教获得对方ip ...
没搞过,不清楚~ 不过帮助文档 TCPAccept 有例子

anythinging 发表于 2024-6-16 22:48:11

afan 发表于 2024-6-16 17:16
没搞过,不清楚~ 不过帮助文档 TCPAccept 有例子

感谢指点,完成了黑名单功能。
日志混乱的问题还在测试中。

anythinging 发表于 2024-6-18 07:38:14

到目前为止,经测试ansi也没得到解决,与utf8一样。
2024-06-18 00:50:42 _Rev DATA---> /*?   Cookie: mstshash=Administr
     
2 0 2 4 - 0 6 - 1 8   0 0 : 5 0 : 4 2   _ R e v   D A T A   N u m   E r r o r   S a v e   I P B l o c k   7 9 . 1 2 4 . 5 6 . 2 0 2   - - - >   1 4 7 . 1 8 5 . 1 3 2 . 2 0 2 & 7 9 . 1 2 4 . 5 6 . 2 0 2

anythinging 发表于 2024-6-18 08:32:50

这个坏种发的数据就比较规矩,一点也不添乱
2024-06-17 05:09:49 _Rev DATA ---> SSH-2.0-ZGrab ZGrab SSH Survey
页: [1] 2
查看完整版本: 关于filewriteline记录日志格式出错的问题