查看: 16942|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) y  c( i8 n: y$ ~( ?9 a# e3 `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) S# [& n7 l3 V$ g" H, |- y: k) O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) F$ s; Q* S9 X5 k5 ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0
; Y7 Q0 B6 j3 j8 H+ i! J+ w2 C: Z) x8 W0 s

! n/ S1 d- n  k0 p  p6 t. q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. {. e( r( U' p

' [. K/ N; h, L+ _. @- w9 m/ L  e: T补充内容 (2012-3-8 09:42):9 c4 B& v' H. Z- H- v6 A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 v" @3 i( y% B; l$ J+ ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
0 g0 p+ A0 G' r5 ~
2 Y8 e& d; B. O2 _0 `himr <address> <value>. sample: himr 0x80040000 0x0" W  P. A- P  F4 w

; m- _3 t7 u% n4 C+ q" U" f' K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# y$ x7 l( {3 \  U! P
himr 0x80040000 0x00( V9 z/ O+ \+ P3 C; `, P# S
himr 0x80040001 0x11
8 ]. y* O+ K7 a' s+ `4 D: b  i6 T3 thimr 0x80040002 0x22
: J  A8 L. j! ^9 Q. Xhimr 0x80040003 0x33+ d2 N% x2 Q9 b/ O+ {4 @6 w
himr 0x80040004 0x44$ S# v) I# |* D/ x% z- j, T- `
himr 0x80040005 0x551 i2 e5 r  r: q) c

6 c- _+ m5 N4 t. K' a, oSN也是类似。
  ?- u. |- C/ v, r! \% u' f/ `. \2 k
现在主要是,谁告诉我们MAC和SN的地址?$ d0 \  X9 `# R. H* A+ k
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & v+ s. w# I1 }) \
一直想找到运程修改MAC和SN的办法,苦于无解啊

# s& D' S* p& s% |9 {源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : B  H- X( W3 O* j$ |

2 j3 f) P% ^& L修改的代码早有了。到今天不会编译。+ t8 }2 j' Z# C, L
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 `' {8 s: m9 I; v3 b' [7 r
  2. #include <malloc.h>
    + k5 k! u7 L' N5 D6 j/ r9 l
  3. #include <sys/types.h>
    # y9 k0 Y! ?+ x7 C8 c4 z
  4. #include <sys/stat.h>
    , C3 i6 R; W8 ^$ T/ _
  5. #include <sys/ioctl.h>
    : |. m2 h0 S" w. w# ?. u
  6. #include <stdio.h>
    , L! t7 a  \* w& E& s9 [
  7. #include <string.h>
    8 K7 T8 K1 y  z( z; @/ ?. R# n

  8. * O! w0 |) I8 E' ^
  9. typedef struct {0 o6 I9 ^" s; E. b
  10.         unsigned int        e2prom_cmd_sub_addr;& w4 J, B9 {# D& @% r
  11.         unsigned int        sub_addr_count;
    3 x3 d- p4 K! w% S7 n, ^$ B( x
  12.         unsigned char*        e2prom_cmd_data;8 F4 ]' [: X2 U5 x' j# d
  13.         unsigned int        data_count;
    4 @; e: m/ _4 |' y4 `) k  N
  14. } e2prom_s_cmd;9 C+ R: y  I, F3 s+ @" D' S

  15. 8 N, t$ j  q' O7 \
  16. #define E2PROM_CMD_READ 1
    1 D( X. m: b8 L3 ]3 P  [
  17. #define E2PROM_CMD_WRITE 2# r. N7 q& O' F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": P+ }' S* g1 C' O* Q
  19. 8 k: _& H, }( v2 k3 m! O& C9 D% f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 u, F' U& z  [+ G* h. N, Z
  21. {
    3 J% q3 v- T+ \7 f7 Q2 i! ]& G6 \
  22.         int fd, ret;% s' G9 z: @+ @
  23.         e2prom_s_cmd arg;
    & }0 Y9 \  I+ P0 l2 X) L+ z+ J
  24.         unsigned char buf[0x18];
    ' {) U: c4 B+ g9 E% ]6 w# V

  25. * Z, {6 I' ~2 ~5 P; `* S! J; F+ i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ o; Y9 B* L4 D* Y
  27.         if (fd  < 0) {
    : G/ U9 P8 J: \% f+ C3 s0 M, p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 w1 D+ u) ~; q# M0 C( u  i# h
  29.                 return -1;3 {' |5 }2 K: y6 M8 P
  30.         }
    . `$ K0 D: @! K6 E: g. t
  31.         arg.sub_addr_count      = 2;
    3 B) f8 B/ V" e! q& _: f
  32.         arg.data_count          = 0x18;; b7 G0 e+ j6 A, c
  33.         arg.e2prom_cmd_sub_addr = 0x290;, h" l# ^0 ?; ]
  34.         arg.e2prom_cmd_data     = buf;1 i% @7 K8 j/ r! E5 C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * L& i9 L6 M8 I* ~8 H& ], w) ]
  36.         if (ret != 0) {
    9 ]" h! G3 ?/ A. P  m! i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# N! q9 A+ T' r; G0 p
  38.                 return -1;
    6 R( z: z: x$ s& ]9 G( j* l( W. t
  39.         }  s) q, D5 x( {4 H5 L
  40.         memcpy(mac, buf, 6);
    * Y! \! J4 B# E, d$ H& E3 c8 Y
  41.         memcpy(stbid, &buf[6], 18);
    + }) |8 V( M9 b
  42.         stbid[18] = '\0';$ u1 k3 p7 H# A. k) A

  43. % Q9 r0 T* X* T/ h
  44.         return 0;
    4 L) X! X5 i" i9 ?9 `: {) H, Y) f
  45. }$ g1 O! l8 d1 L6 V- t

  46. " h2 E+ S+ u7 o" J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 Z8 T4 o( R% v) X: E
  48. {
    : B# @3 g$ ]  g' o6 @/ O2 ^/ g' h" p
  49.         int fd, ret;
    - w$ O$ {  Z4 ?7 |# j8 m+ H' X
  50.         e2prom_s_cmd arg;
    - Y+ W& h) f- c0 ]: Y
  51.         unsigned char buf[0x18];$ y. c( `% T/ f2 [3 f

  52. 1 M  V- T3 k' @: Q3 E$ k' O
  53.         memcpy(buf, mac, 6);
    4 m; p1 {. k. V/ s
  54.         memcpy(&buf[6], stbid, 18);! L. y1 `2 k5 {8 a( R7 M, k  ]1 ]  J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 S3 l& K8 q/ q' o0 b. j* G
  56.         if (fd  < 0) {
    9 c% y: x& ]- C. u  D/ P% J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 j6 M5 f" y0 B# [3 d8 G
  58.                 return -1;- s; o" }; ^6 I; q0 N( i
  59.         }+ F/ F/ u! @0 c* ^( W; V
  60.         arg.sub_addr_count      = 2;
    9 ?, ?- ~, ~' x' ~
  61.         arg.data_count          = 0x18;
    3 T0 O$ ]2 G% H6 Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 e5 ?. Q# O4 A7 S
  63.         arg.e2prom_cmd_data     = buf;' s4 j  d0 C$ y; D( _# y# ^1 p6 X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      j( O8 F2 A* r* V# U* I. J9 O
  65.         if (ret != 0) {5 Z7 q6 ^( m1 K5 K/ K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 R% l0 W( }% a+ Z
  67.                 return -1;5 t  l) o  q- n0 k7 E+ k0 b
  68.         }# ^$ t6 M! f$ l5 L2 M- a- o
  69. " d$ y- x& f  Y! |
  70.         return 0;+ b/ Q0 l' H% e: n! ?& j
  71. }
    : p6 W  s' C- l1 g0 u$ R) m( e) B

  72. 5 q; {, V& B. i0 d
  73. int main()
    0 l! o# y+ G. t; h1 _
  74. {, N; m+ P" j% X. q7 J8 o
  75.         char c;
    1 G, T; \% ]+ v3 [/ f' N7 g
  76.         int i, macs[6];8 @* x2 }4 y0 t$ t! I
  77.         unsigned char mac[6];. \9 _) O0 f3 _' }/ U/ @
  78.         unsigned char stbid[256];$ u0 ]' _7 U5 j" r

  79. ' {# ~6 Q! l0 K9 n& c
  80.         if (readparam(mac, stbid) < 0)
    . K  ?& b/ E0 J* Y
  81.                 return 1;% G! V7 N9 @. q; s) Q
  82. # s6 y5 L1 ~$ ?# [3 u/ I( e
  83.         printf("Current parameters: \n");5 U3 c4 @/ Z& N( W& K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) H6 t/ h# Y; i7 N* a
  85.         printf("  STBID: %s\n", stbid);
    1 M5 b( U* |- r2 E. c- S
  86.         ) t8 D1 D; n% j! I5 p4 y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . A- {  K8 u9 f# b9 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 p% `3 G& d! d; f) D
  89.                 printf("Input MAC error\n");2 C4 Z% s8 L  |+ C' A
  90.                 return 1;4 c  j/ q% k9 ?% m! D2 ?; I
  91.         }8 Y7 }! Y9 ^  `+ q' o: B; {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' _0 L! t! l. [7 R7 Y7 d
  93.         printf("\nPlease input new STBID: ");; j* K/ d5 L" r- l/ h/ P
  94.         scanf("%s", stbid);; M+ A0 f6 P4 O5 l* w  ^) D
  95.         if (strlen(stbid) != 18) {
    5 x6 p+ o0 R. H8 J8 Z
  96.                 printf("Invalid stbid\n");7 n" V+ R! t. ]# }: a1 W1 T/ O' [
  97.                 return 1;& S) y9 X$ ^' L5 d  f) u8 y
  98.         }
    ) A% O# m4 f, S: j( Y+ F6 C
  99.         printf("\nNew parameters: \n");
    0 |+ \3 p, v9 j# j9 B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , g. x: g, B; z  [
  101.         printf("  STBID: %s\n", stbid);
    " U6 ^/ v( R2 w' ?: I8 m, {
  102. 0 W& X  w! r* W) a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      w* V5 v0 Z. t4 @; h- ]
  104.         for (;;) {* p/ T  Y9 |8 u, I! C
  105.                 c = getchar();
    ( B5 x+ E: h- u! E% K8 q# A! ~
  106.                 if (c == 'y' || c == 'Y')# \2 v+ X5 B# O
  107.                         break;
    9 s, }2 |6 l9 U% H+ ~
  108.                 if (c == 'n' || c == 'N') {
    3 f0 b! R2 r% `' \
  109.                         printf("\nAborted.\n");# W1 L+ U8 ?, V
  110.                         return 1;
    1 j0 v, e7 e$ z# L
  111.                 }5 r- q7 |9 o$ A. S0 d
  112.         }  {6 n7 ]( ^& i' K, i, p) r8 l/ E
  113.         if (writeparam(mac, stbid) == 0) - Z! F" A/ g) G) D  I4 a
  114.                 printf("Parameters changed.\n");* i3 `! T- z3 k; t

  115. 0 O4 w# v2 ]* N4 I( O5 y- J
  116.         return 0;
    3 |$ Z  H3 V, N# f' a9 W# ?
  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   V. z9 K' i% j- J7 ?# M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ ^9 x* `, W# l7 j你用的编译命令行格式是什么?( b$ s* x7 |1 v2 o7 \  }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部