开启辅助访问
QQ登录 只需一步,快速开始
扫一扫,访问微社区
立即注册 找回密码
查看: 36000|回复: 336
上一主题 下一主题
[教程&攻略]

华为EC1308机顶盒更改参数教程

  [复制链接]
跳转到指定楼层
楼主
发表于 2016-5-12 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
华为EC1308机顶盒有几个版本,本方式只适用于采用海思Hi3560V100芯片,且存在设备文件/dev/misc/e2prom_24lc16的机顶盒。


用Telnet登录机顶盒,执行下面的命令:
ls -l /dev/misc/e2prom_24lc16
游客,如果您要查看本帖隐藏内容请回复

修改参数程序源代码如下:
#include <fcntl.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <string.h>

typedef struct {
        unsigned int        e2prom_cmd_sub_addr;
        unsigned int        sub_addr_count;
        unsigned char*        e2prom_cmd_data;
        unsigned int        data_count;
} e2prom_s_cmd;

#define E2PROM_CMD_READ 1
#define E2PROM_CMD_WRITE 2
#define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"

static int readparam(unsigned char *mac, unsigned char *stbid)
{
        int fd, ret;
        e2prom_s_cmd arg;
        unsigned char buf[0x18];

        fd = open(E2PROM_DEVICE, O_RDWR);
        if (fd  < 0) {
                printf("Device %s open error.\n", E2PROM_DEVICE);
                return -1;
        }
        arg.sub_addr_count      = 2;
        arg.data_count          = 0x18;
        arg.e2prom_cmd_sub_addr = 0x290;
        arg.e2prom_cmd_data     = buf;
        ret = ioctl(fd, E2PROM_CMD_READ, &arg);
        if (ret != 0) {
                printf("Device %s read error.\n", E2PROM_DEVICE);
                return -1;
        }
        memcpy(mac, buf, 6);
        memcpy(stbid, &buf[6], 18);
        stbid[18] = '\0';

        return 0;
}

static int writeparam(unsigned char *mac, unsigned char *stbid)
{
        int fd, ret;
        e2prom_s_cmd arg;
        unsigned char buf[0x18];

        memcpy(buf, mac, 6);
        memcpy(&buf[6], stbid, 18);
        fd = open(E2PROM_DEVICE, O_RDWR);
        if (fd  < 0) {
                printf("Device %s open error.\n", E2PROM_DEVICE);
                return -1;
        }
        arg.sub_addr_count      = 2;
        arg.data_count          = 0x18;
        arg.e2prom_cmd_sub_addr = 0x290;
        arg.e2prom_cmd_data     = buf;
        ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
        if (ret != 0) {
                printf("Device %s write error.\n", E2PROM_DEVICE);
                return -1;
        }

        return 0;
}

int main()
{
        char c;
        int i, macs[6];
        unsigned char mac[6];
        unsigned char stbid[256];

        if (readparam(mac, stbid) < 0)
                return 1;

        printf("Current parameters: \n");
        printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
        printf("  STBID: %s\n", stbid);
        
        printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
        if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
                 printf("Input MAC error\n");
                 return 1;
        }
        for (i=0; i<6; i++)mac = macs;
        printf("\nPlease input new STBID: ");
        scanf("%s", stbid);
        if (strlen(stbid) != 18) {
                printf("Invalid stbid\n");
                return 1;
        }
        printf("\nNew parameters: \n");
        printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
        printf("  STBID: %s\n", stbid);

        printf("\nDo you want to change paramemters? (y/N) ");
        for (;;) {
                c = getchar();
                if (c == 'y' || c == 'Y')
                        break;
                if (c == 'n' || c == 'N') {
                        printf("\nAborted.\n");
                        return 1;
                }
        }
        if (writeparam(mac, stbid) == 0)
                printf("Parameters changed.\n");

        return 0;
}
沙发
发表于 2016-5-12 17:18 | 只看该作者
虽不明,但觉厉!这个厉害哦 涨知识了    感谢楼主的分享!
回复 支持 反对 使用道具 举报
板凳
发表于 2016-5-13 16:47 | 只看该作者
感谢分享,ZNDS有你更精彩:)
回复 支持 反对 使用道具 举报
地板
匿名  发表于 2016-5-14 10:15
谢谢分享。。。。
回复 支持 反对 使用道具
5#
发表于 2016-5-14 10:23 来自ZNDS手机版 | 只看该作者
谢谢分享。。。。
回复 支持 反对 使用道具 举报
6#
发表于 2016-5-14 10:25 来自ZNDS手机版 | 只看该作者
楼主你说详细点吗?
回复 支持 反对 使用道具 举报
7#
发表于 2016-5-19 10:30 来自ZNDS手机版 | 只看该作者
楼主能不能说详细点
回复 支持 反对 使用道具 举报
8#
发表于 2016-5-20 15:20 | 只看该作者
强烈支持楼主ing……
回复 支持 反对 使用道具 举报
9#
发表于 2016-5-28 20:26 | 只看该作者
好东西呀 楼主好人 一会去试试
回复 支持 反对 使用道具 举报
10#
发表于 2016-5-31 15:01 | 只看该作者
强烈支持楼主ing……
回复 支持 反对 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则
关闭

推荐应用 上一条 /6 下一条

Archiver|新帖|标签|软件|Sitemap|ZNDS优乐国际youle88官网 ( 浙ICP备14000780号 )
增值电信业务经营许可证:浙B2-20150411 丨 浙公网安备 33010802006145号 浙网文(2016)6491-366号 | GMT+8, 2017-11-19 05:21 , Processed in 0.072928 second(s), 23 queries , MemCache On.
Powered by Discuz! 监督举报:report#znds.com (请将#替换为@) © 2007-2017 ZNDS.Com
快速回复 返回顶部 返回列表

youle88

百度360搜索搜狗搜索