查看: 17269|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" P0 `& b" r0 K: j2 I1 z/ V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 Y* j, J6 I" }  [% F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ C7 W* D! Z$ u9 I: ~usage: himr <address> <value>. sample: himr 0x80040000 0x0! N4 i! l: i' O. H

8 j0 V9 _. I9 h# @) U: W3 }; t9 A# y( M
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 n. V# q$ P- }* v/ v
8 {7 |. C$ k' ~2 {1 E
补充内容 (2012-3-8 09:42):
( c# H1 g' R; G% Q; r5 Khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 G! b8 q' G" U0 @4 B/ x: ?
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
. S5 o! m* `( V- q) a9 i5 l6 [2 \) e9 B* J* l: H( g
himr <address> <value>. sample: himr 0x80040000 0x0) f5 }3 M0 W( x
. J" L+ x5 V" J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 J9 `$ W- f& ~himr 0x80040000 0x008 b( }) m, W6 _
himr 0x80040001 0x11+ `5 ~+ m5 L% B1 C3 V2 T- W8 v; m
himr 0x80040002 0x22
+ o# g6 e! N: ^7 V, Qhimr 0x80040003 0x33# Y5 W" Q& q: p: y/ _5 U% y
himr 0x80040004 0x44
$ K: V! M! }. C5 Ghimr 0x80040005 0x558 d, e1 \. \* p4 n3 D

% _1 n1 n7 G7 [SN也是类似。
9 ?8 p5 Q- A( y0 R; o7 P- ~& c7 J
6 L8 R" B% R- P6 V) ?现在主要是,谁告诉我们MAC和SN的地址?
5 L+ i0 i% d' F6 `( J4 H, P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # J% C, T0 c! L5 u! S
一直想找到运程修改MAC和SN的办法,苦于无解啊

) u! L0 D# |9 }4 G, a" Z# ~7 b! s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , |( v* Q- U  l8 J2 u, r2 o

6 b5 y1 x# i+ e, N修改的代码早有了。到今天不会编译。
7 f5 n4 X2 |1 v( n. _6 Z2 L& }- p1 ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 d7 t4 O& B" K
  2. #include <malloc.h>  f% [! Q, \* c
  3. #include <sys/types.h>
    * C; P/ \0 @1 U* ]7 D) n+ Y: h
  4. #include <sys/stat.h>
    7 G' o% l- o0 k2 y" n+ f' g
  5. #include <sys/ioctl.h>, d& n: m; o+ x  Q, M. E6 F
  6. #include <stdio.h>* T! }- D! @* X% _  ^/ O# u
  7. #include <string.h>
    ) b4 m; K* Q. ?9 H: z. r# R

  8. ; c! y0 c& G. O# j
  9. typedef struct {
    : [) B* c6 p  C+ S, m6 p
  10.         unsigned int        e2prom_cmd_sub_addr;. P9 N/ w. S& Q
  11.         unsigned int        sub_addr_count;- b9 C2 F5 c6 ]& I
  12.         unsigned char*        e2prom_cmd_data;
    ' W* E& [9 P0 f9 a2 O$ ?: T
  13.         unsigned int        data_count;
    # Q, Y1 c* T' g" j  c$ |
  14. } e2prom_s_cmd;
    1 k/ h" _( ~3 ~, V5 a7 P

  15. 2 c1 T4 V& P; {* v; v7 s! a
  16. #define E2PROM_CMD_READ 1
    6 e7 Z- ?) ?5 d. c& b
  17. #define E2PROM_CMD_WRITE 21 @# o7 M) _8 G- N+ O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 t( H9 c2 m: R$ I: Z* s

  19. - Q3 w% y" \( t- h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . l/ I: o+ B( Q2 I6 y" V* E2 O0 A
  21. {
    * c2 w+ h5 Z5 Q" I
  22.         int fd, ret;
    1 |- z9 a3 u$ R) F7 }% ]6 J
  23.         e2prom_s_cmd arg;3 D8 V' r8 J% A, U! Y/ }9 X
  24.         unsigned char buf[0x18];
    ) }3 }, u  L6 r& r4 [

  25. : p" X, M; B* U. y1 t" Y" _, T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) W, X& M. A1 g% l  ?' Q
  27.         if (fd  < 0) {2 N1 w! A6 ]0 A! l+ k" m" l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ h" I5 O# u% h, G% j  j" q
  29.                 return -1;9 X* S# h# ?4 ^; C5 E. V! S+ \5 d$ b
  30.         }
    1 A7 I0 y- l6 ^$ m1 B! z
  31.         arg.sub_addr_count      = 2;
    2 @; Y% Z" X; V8 [9 o, {
  32.         arg.data_count          = 0x18;- \' \$ Q: ~" U+ {
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " z2 O; O  C5 t( o: ]8 d
  34.         arg.e2prom_cmd_data     = buf;
    ! N; J" |# O. a0 v4 Y3 V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 k! w3 R2 k; u" j8 y" l: N
  36.         if (ret != 0) {5 a. `$ Q# k  C5 o  b0 N" r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; R, g6 P. c/ o5 b# R- C5 m
  38.                 return -1;
    " C7 ]$ F- {, q/ g( Y( L, B$ i; E
  39.         }( Z! h% D  p: @6 Z* V/ g- d7 [
  40.         memcpy(mac, buf, 6);
    % d* a3 t+ ~9 I
  41.         memcpy(stbid, &buf[6], 18);# h3 i* Z$ X& f1 Y* t8 c
  42.         stbid[18] = '\0';3 g. ?/ D1 I  l

  43. 5 y" J- y' T4 @; z
  44.         return 0;% o, H9 x  g( p  d# \
  45. }, ?% I0 b% ^- G' a; r$ ~
  46. & e, h0 U/ n+ t) Z$ b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 I+ S4 r! k" _/ C3 F0 A
  48. {
    % {3 ~. R7 u8 e; P) `# H' E
  49.         int fd, ret;2 m0 |( i+ \! O2 ~4 g" ?
  50.         e2prom_s_cmd arg;
    9 w+ m5 S. i" w( O0 R
  51.         unsigned char buf[0x18];4 Z5 n- L( D8 x# q5 ^6 B3 p

  52. ( l$ i6 W( g1 g
  53.         memcpy(buf, mac, 6);
    9 I) T' [6 r5 q
  54.         memcpy(&buf[6], stbid, 18);
    " E# O: M: z2 L# i" V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 T( F" |& ^: h& ]! \! e
  56.         if (fd  < 0) {, @# k- A+ L5 }0 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 x/ L# \  k0 C* h/ i; ~! ]' i
  58.                 return -1;
    ( X( ?$ p2 b' F2 r% P
  59.         }7 Y* p9 T8 ], G  E# l* p
  60.         arg.sub_addr_count      = 2;; y1 ]+ D" C# a( a5 X0 ]: o
  61.         arg.data_count          = 0x18;1 B/ U% _8 p6 `) y. b- o' |* Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;: N1 |6 k- q* p6 X: Q# B
  63.         arg.e2prom_cmd_data     = buf;. E$ M" Y; I! ^% o3 g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ U- o8 A0 g5 s/ N
  65.         if (ret != 0) {
    4 |. g' e/ W) u2 D" ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 z% ^, o5 ^0 u* O1 _9 h+ i; m9 n
  67.                 return -1;
    + L' Q5 o* K9 u3 \' i" s8 M
  68.         }9 X$ X# Z, k+ u# z5 `" s, f& ?- u  A
  69. # {; v& y$ _6 u7 L3 g. ^+ z$ |
  70.         return 0;1 p1 p8 `4 y$ b3 |
  71. }! a$ Q  m1 h# C' M7 b# M, E

  72. , S) P8 G: `6 z- \1 l7 ]
  73. int main()4 ^1 i6 K2 D$ @  h9 y
  74. {
    ' `$ {% I" Y+ h+ z
  75.         char c;  c! a: X9 V) D7 ~- @; z4 t% I2 H
  76.         int i, macs[6];, N& N6 s1 N0 Z" H! V5 M, S1 }9 q
  77.         unsigned char mac[6];+ X1 E4 l1 T: j& S0 U. [
  78.         unsigned char stbid[256];
    5 [+ F" Z. V1 L8 U
  79. " {/ f5 M; b  A1 _- p8 u' ~
  80.         if (readparam(mac, stbid) < 0)
    + Q" Z) I; C. S  s' f$ n8 m
  81.                 return 1;, I+ Q( P6 n5 }' w# q  a

  82. 3 [  ]: r, s+ b# q  M) F
  83.         printf("Current parameters: \n");! t/ r8 U5 b; O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( V8 W, I% u: B, U: ?+ c
  85.         printf("  STBID: %s\n", stbid);' N$ g7 D. \3 W. U! d2 @" p
  86.        
    6 H+ A' l( M; Z- j0 e1 I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , S' a) o  K; d; ^) v8 W5 q0 a+ V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # X$ ~: J1 s/ u' a, Z; z- I
  89.                 printf("Input MAC error\n");
    * o9 n4 j0 I3 E/ ]
  90.                 return 1;
    4 o- ?: Y  w8 a  w+ H
  91.         }  c  J, k8 j: V6 ^2 f6 q7 Y- a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 M5 v" E! S2 Z) Q
  93.         printf("\nPlease input new STBID: ");
    % u; q) _" n9 W* |
  94.         scanf("%s", stbid);
    : D. d1 I" O% F
  95.         if (strlen(stbid) != 18) {
      E$ I% K: D* v& r3 B- E) O6 |
  96.                 printf("Invalid stbid\n");/ e% {6 i' M7 }3 u* U& F6 F
  97.                 return 1;
    2 C! I/ M/ V6 m5 ~1 h0 o" i
  98.         }8 i. `8 S9 N( _6 x" V) x- ?0 m
  99.         printf("\nNew parameters: \n");  y4 ]; L) h+ ~; v  ?& K) q/ R$ d
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" k. ]  U7 o1 f  {
  101.         printf("  STBID: %s\n", stbid);
    % x; P- c' ]4 M! w0 w  ~& u
  102. # B& b/ ]& a+ ]8 Z7 ?7 G6 v
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 C- D3 H+ d& A" g4 x; i# ?8 H
  104.         for (;;) {
    - f9 D8 X1 B1 O4 }; H+ _$ n# y) y
  105.                 c = getchar();
    1 g% J7 d* h% n- o( r
  106.                 if (c == 'y' || c == 'Y')
    : F& ?( E- b) y, y/ U) I) E
  107.                         break;' f0 l* _. A4 Z/ t* F- W
  108.                 if (c == 'n' || c == 'N') {
    ; N. [  H) w( X2 i
  109.                         printf("\nAborted.\n");! k4 N6 H" u, D
  110.                         return 1;' A' i! U5 W, E; k4 y" Y% ?
  111.                 }! z. u2 A3 c* _, K. ~9 I$ G
  112.         }
    / H+ n& ^) T  Z: q. V
  113.         if (writeparam(mac, stbid) == 0) ' a9 K' o- {1 F* Z4 V
  114.                 printf("Parameters changed.\n");$ n" v  V" E( h0 s0 r
  115. ' q+ S# w* R+ j
  116.         return 0;
    : [1 H4 B, x6 h8 q0 K! Q1 s
  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 : k% t' p3 F( V8 x, S1 Z# ]1 t
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ {( f- |. H* e: Z8 S( ^2 v- J1 L你用的编译命令行格式是什么?
8 q0 q% ~3 a& p' H
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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