找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15743|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , S- }$ W! M0 Y6 @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" q. Q  K+ i5 n' S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ m7 _% s" \" P8 N$ O( g
usage: himr <address> <value>. sample: himr 0x80040000 0x0; [# Z8 J# R% x) W6 k. P
7 L) o8 ?$ T+ f( y. b* K# N

! p3 C4 i  M* A0 l3 ~+ l4 B% S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ B/ [& g0 U+ Y, }
. s) F* p: j& c0 a- c) F3 ?补充内容 (2012-3-8 09:42):
$ L$ T  D0 j! k3 b+ j0 }" w# n1 Q* {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) r- B* k5 I4 o$ h0 u7 F' o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
$ q4 _9 T% C. n) W6 E3 k" k
2 Q0 T0 u; T# ?+ Ahimr <address> <value>. sample: himr 0x80040000 0x0
0 [9 E: s3 I0 e8 i5 K0 G" V
' w, |3 ^: l" J7 U) e- U例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 Y4 G0 U% d! s1 S, }! b( @& a* p
himr 0x80040000 0x00) G  m" I) U' w5 N- t1 r4 v
himr 0x80040001 0x11
6 O1 S/ `: T  T) N& G# A# o) vhimr 0x80040002 0x22$ E; {4 g) I1 G. H3 o# {
himr 0x80040003 0x33
9 t! b% v+ D* J- w9 Xhimr 0x80040004 0x44
( d  e9 r. Q& Khimr 0x80040005 0x55$ P9 N/ e. g1 F/ p7 X

- V; a8 f/ _" }/ Q2 X4 }: u# JSN也是类似。
( n; T1 {$ j5 {; ~; T; C
& f# X4 T  G- `现在主要是,谁告诉我们MAC和SN的地址?" @5 ?6 _6 I* J8 Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* A8 ^0 [* L$ g) P3 Q- \一直想找到运程修改MAC和SN的办法,苦于无解啊

* M8 }, `! H" K& ~( d( C源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : Q0 n1 H7 f8 B' S" @9 ]" X& b
" H6 V( E7 w. S7 ]7 y. _
修改的代码早有了。到今天不会编译。
' q3 G5 Z7 Z6 x7 S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # W5 J( D. d- @2 z
  2. #include <malloc.h>+ n3 Q6 R) I+ u+ [
  3. #include <sys/types.h># F0 j, _7 p3 d# L2 g
  4. #include <sys/stat.h>
    9 m9 U+ f" B3 E& Y" b. B
  5. #include <sys/ioctl.h>) `3 B# F( }( V
  6. #include <stdio.h>
    0 g7 H6 ~) _1 O- H# w9 X+ g9 H
  7. #include <string.h>* j8 m- u5 s2 Z5 j% t- O
  8. ! H% Y, x) q# k/ Q1 O# p. [! H
  9. typedef struct {$ L& t) ?+ X0 F9 ]/ Z
  10.         unsigned int        e2prom_cmd_sub_addr;4 R6 \0 R$ r" t: _8 ]) }
  11.         unsigned int        sub_addr_count;
    % h. y7 b6 l6 L
  12.         unsigned char*        e2prom_cmd_data;. [/ Y0 f0 }2 i" s: Y5 B2 ~: ^
  13.         unsigned int        data_count;
    ) E# v( g1 F0 _; k8 D
  14. } e2prom_s_cmd;/ ~, U0 y2 e( n" i) M4 x
  15. 9 B& s# F9 a$ x
  16. #define E2PROM_CMD_READ 1! y3 W: S# [* V$ S+ w* s* d
  17. #define E2PROM_CMD_WRITE 2
    2 ~7 e+ U5 ~7 ]: V$ p4 v" b9 v0 g" H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( f6 W: u" o8 @8 O5 |
  19. ; P* v+ D6 b3 C6 j& p) n  P9 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ r# H  T9 @' _9 |
  21. {
    ! C2 D. ^/ D; q! ^5 `3 o7 Z; \
  22.         int fd, ret;& f1 H( H& a5 l( ~1 m7 w
  23.         e2prom_s_cmd arg;  c$ z, k7 u- g* ?6 F8 K: k
  24.         unsigned char buf[0x18];; P/ k% U  P- I  m# F$ `. d' M5 D% \
  25. & x* c  f0 {2 @- o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* W. p! P. z3 h$ A
  27.         if (fd  < 0) {$ E" u3 x' H* d, e% h' c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % S) t; A/ J& H6 L8 E+ h
  29.                 return -1;% }9 o* A  I- O  ^4 R
  30.         }/ C$ ~. m% u- P" l& @2 _4 V
  31.         arg.sub_addr_count      = 2;2 d) `4 N& K8 s; }1 a
  32.         arg.data_count          = 0x18;" _7 p6 I. Q. j0 Z* J
  33.         arg.e2prom_cmd_sub_addr = 0x290;* C& W7 T, l( n& A- d4 c
  34.         arg.e2prom_cmd_data     = buf;
    % b% A5 F- f4 c5 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # }# c3 ~% A  ]& S, W
  36.         if (ret != 0) {
    " x) f: _0 X* q/ L4 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , O1 J- U4 W. i
  38.                 return -1;/ E! r5 Z+ D1 e3 ?0 m
  39.         }/ c' P; l0 R  I5 p
  40.         memcpy(mac, buf, 6);
    2 B5 k7 x, ^- w
  41.         memcpy(stbid, &buf[6], 18);2 C7 H; X/ X8 M3 a+ X/ t5 U
  42.         stbid[18] = '\0';
    8 N5 r' W) @- F0 m
  43. , k% R/ u. l5 T  K& `: A- V. ?# G
  44.         return 0;0 {( R: A* V3 Y& N3 [$ @0 g) }
  45. }
    : ?3 b( N) `% U6 c
  46. ; Y7 o; ?  p2 j' A& o# S( }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ t, D. M% c& G; w
  48. {) t* [3 ?0 \0 C& R6 v' w
  49.         int fd, ret;
    8 X) |% y! M# _1 ?. P' d
  50.         e2prom_s_cmd arg;1 T0 b5 I' {% i$ E( @8 j
  51.         unsigned char buf[0x18];& R8 ~1 v; t+ m, V! b+ `  L

  52. 2 s# x: E4 t) x% {! k
  53.         memcpy(buf, mac, 6);
    ; B+ j7 ?/ v) h0 }; R8 \  Q
  54.         memcpy(&buf[6], stbid, 18);
    5 K! x# C9 `1 z6 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 C7 `7 b/ X2 d0 u% f/ C
  56.         if (fd  < 0) {1 G- J$ `8 l) d* B3 E  j' f+ ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 o0 x! C8 ?1 L5 Z. Z0 o; y- d- h
  58.                 return -1;; n  T1 m9 z  D
  59.         }5 i& G  [- ^& y6 t: T. ~7 S% p/ W" j( ^
  60.         arg.sub_addr_count      = 2;
    ' y+ q3 H3 j: }1 \6 T
  61.         arg.data_count          = 0x18;; `' m% X0 p: P
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ M6 x+ G5 y* ~- e7 {0 b: G
  63.         arg.e2prom_cmd_data     = buf;
    $ Q$ S1 f& I" g: m; ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 Y# o" w# j6 s6 ~, F. A: f
  65.         if (ret != 0) {+ O" @2 b. L  ?& n; n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 [5 w& B: V2 M" W' I9 d+ d! I
  67.                 return -1;& Y9 O% X$ @/ Y& z! t* l8 G0 b
  68.         }
    $ m8 \6 D. x" f

  69. 0 [. ?) d9 s  r4 S* x" L8 L
  70.         return 0;8 @1 G' [8 X1 b- B6 z( U8 G
  71. }
    : g6 c& m- y0 i, j  C
  72. + G) U) R0 o6 s4 f$ z3 ?
  73. int main()
    0 N" s- |5 Z& V" b+ A7 ]- r7 a
  74. {
    0 E: o: t4 B3 O
  75.         char c;% N6 k  N9 s* w& W' ~
  76.         int i, macs[6];
    / ~3 J0 k7 w+ e4 q) }
  77.         unsigned char mac[6];- N2 z2 G- n. R: H' f( H
  78.         unsigned char stbid[256];; B5 h' |  m+ `( M0 `# j+ ]( y

  79. 5 ~0 X2 W# U" E9 t
  80.         if (readparam(mac, stbid) < 0)4 [! K+ G9 W5 n$ j$ v! Y- M) u
  81.                 return 1;
    : \( \9 h, Q5 |8 X: q  v
  82. 8 x0 k' Z; ?9 N) f8 k! ~
  83.         printf("Current parameters: \n");; s+ R  Z3 D! @+ K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 s: J4 p  ?3 v2 d7 ~
  85.         printf("  STBID: %s\n", stbid);
    , g0 ]9 |, [5 X6 t
  86.         * }/ {) g' F. s, a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - ^( S* a) R. \: m8 u2 q- g2 R1 k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 d! V) a, W- M8 c8 C
  89.                 printf("Input MAC error\n");
    9 B' t! M' Z- j4 |# _
  90.                 return 1;
    ) V& h) m* F' Y' {( E, T' F0 c
  91.         }/ v& ^" P2 \+ l- y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " @+ u7 F( J* N, \+ _
  93.         printf("\nPlease input new STBID: ");
    ( H9 c" v( Y1 j. W$ g% C! L
  94.         scanf("%s", stbid);& p5 z9 T* Q$ y) y% h- ^
  95.         if (strlen(stbid) != 18) {
      ]6 \6 j4 y% V& _: B- e; p6 e
  96.                 printf("Invalid stbid\n");
    * O0 z5 g( q! K* e9 A* j! ~  v
  97.                 return 1;# Z+ w3 y# i( B$ o! `4 A' D9 ]
  98.         }
    5 `$ n8 @5 x8 I, e- e
  99.         printf("\nNew parameters: \n");
    * _7 L9 x' N8 `0 k4 y  {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# k0 i& y5 S  n3 ]1 g
  101.         printf("  STBID: %s\n", stbid);' e( d3 j- z+ T
  102. " c. f& d3 k7 r- l/ F& }
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 a$ Z, m2 {6 a! Y
  104.         for (;;) {
    * u3 d1 o/ k! r8 E/ B2 F' J
  105.                 c = getchar();) y2 w! m5 a* q1 C+ P
  106.                 if (c == 'y' || c == 'Y')
    3 m: q# F; ^, X5 Q
  107.                         break;7 O5 A- Z1 M' P% M% a
  108.                 if (c == 'n' || c == 'N') {
    & K7 G% r! ~1 O9 b! L9 g3 m
  109.                         printf("\nAborted.\n");
    7 e2 g, N$ o+ H1 w; Z7 B
  110.                         return 1;
    # \) p- U( d% x
  111.                 }/ E' _* N: e8 [" q% u
  112.         }: h) u* h0 T' r( K3 T7 `, r& E
  113.         if (writeparam(mac, stbid) == 0)
    + ]- ]! E. X9 n; I
  114.                 printf("Parameters changed.\n");
    ! j6 E3 P% }  L. ?

  115. % p7 J+ s2 o0 b3 W; n
  116.         return 0;- D  x1 T. h( V) ^) h0 U
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 6 U; G  \0 e. i. H( [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. x+ A9 I% E1 j+ `1 q9 d你用的编译命令行格式是什么?
( A1 d- P. o0 X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-11 16:21 , Processed in 0.166719 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表