NETBIOS主机名编码算法

最近在看SMB协议,在自己构造数据包的时候发现了一个问题。

经过查阅资料发现NETBIOS对主机名的编码方式如下:

1.将字符补齐到16字节,不够的用空格补 2.将每个字符拆成高4bit和低4bit 3.再用0x41就是A加上这个值

举个例子abcd的编码流程: 1.补空格到16字节

"abcd "

2.将每个字符拆开

拆分前0x61 0x62 0x63 0x64 0x20 0x20 0x20 0x20 0x20 ...拆分后0x6 0x1 0x6 0x2 0x6 0x3 0x6 0x4 0x2 0x0 0x2 0x0

3.用0x41加上这个值

0x47 0x42 0x47 0x43 0x47 0x44 0x47 0x45 0x43 0x41 ...GBGCGDGECA

自己用python实现了一下

def encode(src): src = src.ljust(16,"\x20") names = [] for c in src: char_ord = ord(c) high_4_bits = char_ord >> 4 low_4_bits = char_ord & 0x0f names.append(high_4_bits) names.append(low_4_bits) res = "" for name in names: res += chr(0x41+name) return res

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

你真的会写单例模式吗——Java实现

单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,...

11820
来自专栏Jerry的SAP技术分享

Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理

面试问题:Java里的代理设计模式(Proxy Design Pattern)一共有几种实现方式?这个题目很像孔乙己问“茴香豆的茴字有哪几种写法?”

3.2K30
来自专栏java达人

多线程设计模式解读1—Guarded Suspension(保护性暂挂模式)

大家好,今天我们给大家介绍一个多线程设计模式的一个概念,我们平时业务代码写得比较多,因此,如果刚上手写比较复杂多线程代码,很有可能会埋下一些坑,而这些坑一时之间...

11040
来自专栏Java进阶之路

由浅入深谈 Java 的类加载机制

17600
来自专栏PHP在线

php代码优化技巧

PHP优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。本文给大家提供全面的优化技巧。   1、echo比print快。   2、使用echo的多重...

33150
来自专栏北京马哥教育

【干货】Python自动化审计及实现

本文由马哥教育Python自动化实战班导师wayne推荐,作者为SSS团队,转载自互联网,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。...

399100
来自专栏码代码的陈同学

Procedure Call and Stack

最近查资料时,偶然在youtobe看到了华盛顿大学自然科学与工程一位老师 关于 Procedure & Stacks 的课程,深入讲解了基于Stack的过程调用...

642290
来自专栏zhisheng

Java研发方向如何准备BAT技术面试答案(上)

1. 面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Un...

46340
来自专栏炉边夜话

JNI设计实践之路

本文为在 32 位 Windows 平台上实现 Java 本地方法提供了实用的示例、步骤和准则。本文中的示例使用 Sun公司的 Java Development...

19230
来自专栏武培轩的专栏

Keep面经汇总

原理:泛型的实现是靠类型擦除技术,类型擦除是在编译期完成的,在编译期,编译器会将泛型的类型参数都擦除成它的限定类型,如果没有则擦除为object类型之后在获取的...

13930

扫码关注云+社区

领取腾讯云代金券