查看: 17361|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : W8 U1 ]. u) x# p8 [+ @3 c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( `+ |/ J6 `% J7 k; m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 z& x2 G2 H% t- P6 m! ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0' D0 j; ~; e  Z2 C, H. c+ \1 {

$ Q! h/ A8 J8 e9 y$ [5 ]" |7 j6 y" u# ]5 M5 M( F! E8 d6 v7 ^8 r# \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 y  ]8 Z& B: ~& U2 ?8 X
. i5 E6 _5 |$ H: I
补充内容 (2012-3-8 09:42):
9 @4 l" V+ r: ]0 k2 uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! k* N% Y! s+ C/ q: q5 u7 S
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! q3 l# j+ G, d$ D. {, ^# T6 d. d. q* \" n5 L/ L" x! C
himr <address> <value>. sample: himr 0x80040000 0x0" t+ {+ H/ k+ c" F$ w& U2 l0 N- `

& r# L: Q9 ]* ^9 w( ]" |例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 N3 k, i1 i# }6 l; yhimr 0x80040000 0x00
) k6 A* x+ U' Whimr 0x80040001 0x11$ L5 C1 N9 J( Z1 v
himr 0x80040002 0x22. g1 x' I( x) e/ o) E
himr 0x80040003 0x33. T& l  U5 H# |4 U' N* A8 r  ^
himr 0x80040004 0x44: T' R# i/ W  ?# H7 V
himr 0x80040005 0x554 Y" t' r" Q) p. v& g
9 y' Q1 T1 Z* |: Z) G) ~# G" `) x% j
SN也是类似。
" Y0 s3 s; I. V! O. |
$ [' i  j: `5 r' K. [4 f现在主要是,谁告诉我们MAC和SN的地址?
/ k& ?3 L& M& \1 n: ^
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# s9 N) q3 ^% q; W  ?3 q6 e+ ]2 U一直想找到运程修改MAC和SN的办法,苦于无解啊
% r8 ?2 m2 l/ S3 O+ O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- g) ~+ A% M' l+ @$ I
3 a7 R/ |; O0 R$ T修改的代码早有了。到今天不会编译。
4 D6 [# H9 ^1 H5 j7 K6 v  I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 h, U2 s! m8 Q. }. y9 _: I2 R
  2. #include <malloc.h>6 [& ]. V6 n/ `0 ~- K
  3. #include <sys/types.h>
    + C+ X2 u, X8 ?$ V( l2 _2 X, A
  4. #include <sys/stat.h>
    + u. \; I7 Y% g4 t8 J9 B0 j
  5. #include <sys/ioctl.h>
    3 R7 h7 [- Z; P% k8 b! h
  6. #include <stdio.h>  @+ K- h- Q3 E# x
  7. #include <string.h>: e7 O$ z4 N# _! ~6 f

  8.   a. m: c) i/ N& l2 c! `
  9. typedef struct {. Q7 w1 L% ]% s# v. O
  10.         unsigned int        e2prom_cmd_sub_addr;
    + r7 B3 A/ E. l
  11.         unsigned int        sub_addr_count;% v  r( i5 `' J9 D, q
  12.         unsigned char*        e2prom_cmd_data;/ o* n, a; D" l) _
  13.         unsigned int        data_count;
    ) V, t( M2 y) p8 E% J, _7 t
  14. } e2prom_s_cmd;" l6 H; }6 G3 W% I5 ?1 x  f3 H
  15. 5 f/ f, E! p$ @4 y; y
  16. #define E2PROM_CMD_READ 1
    8 [( m/ ~# L  P5 Y
  17. #define E2PROM_CMD_WRITE 21 x2 D" G/ l6 I& g/ D8 w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & a! O1 s; |. V9 H9 M8 r
  19. 2 Q0 |+ [# R% U; K' V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ u1 m5 j* w5 p/ D& E4 u
  21. {. K; [# b! ]3 E( w9 a
  22.         int fd, ret;
    # K5 [4 K! S0 N
  23.         e2prom_s_cmd arg;
    : s/ }3 y6 ?& W5 j8 U2 A5 {: ~: K
  24.         unsigned char buf[0x18];
    0 X" h. r) q0 l. @3 K6 c6 n% i
  25. " S9 l7 c7 G, o3 F3 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 z) t" d. E7 G  A
  27.         if (fd  < 0) {3 B0 e/ E! Q- |7 |, ~& ^7 b' W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - Y- X- n& U0 v/ [5 s; d% v
  29.                 return -1;
    6 b& E5 \& }0 w4 W. e  I. G; o5 P
  30.         }$ Q) ^' t' L' ?$ O
  31.         arg.sub_addr_count      = 2;4 X6 v. y" w6 L/ L. R4 a( J& G
  32.         arg.data_count          = 0x18;! E# D9 K; g5 z* W7 f( ]' \" S. S
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 w: \1 H( O: H4 y
  34.         arg.e2prom_cmd_data     = buf;
    # @$ N) v( z+ q. g0 v1 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 s$ g, _4 O- _! W
  36.         if (ret != 0) {7 i  C* s7 y3 F" _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , N$ ^* y( y4 Y% Q
  38.                 return -1;
    / O* \' ]8 H  e5 A7 d, j2 k" e
  39.         }) w9 V; m& P5 x" k  ]
  40.         memcpy(mac, buf, 6);
    : b' H4 m9 |. y* m2 N; G! B
  41.         memcpy(stbid, &buf[6], 18);+ i, L1 m) P3 Y* Y& p
  42.         stbid[18] = '\0';' h1 c7 [- z4 D9 v

  43. ! Q1 \: U) u9 |. @/ A; C" }( R& o
  44.         return 0;$ s& Y# G7 E" x! n& N! j$ r& \
  45. }# f$ a) }' C# Z& \) c5 X$ j

  46. " [8 z. l8 M) @% z! I% w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 |- E3 i' r8 ?/ n  x9 u
  48. {
    & a# `; B6 \- D' t) ~: T* ]9 h
  49.         int fd, ret;
    8 E; I& ^3 U6 S+ E2 r1 ^( w
  50.         e2prom_s_cmd arg;- `1 _) \) z. O) Q
  51.         unsigned char buf[0x18];- d8 ~, ]! V+ R* \1 ]

  52.   E8 `/ }7 F' D0 o4 K
  53.         memcpy(buf, mac, 6);4 c& B' T# K( g# N- _# a5 e
  54.         memcpy(&buf[6], stbid, 18);- ~8 k- Z) X* \) @. \9 A* X$ H  z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" O3 _/ t3 r# P9 V3 E$ m1 N
  56.         if (fd  < 0) {
    ) h) m" a" t/ a$ w' t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * E! a* C6 t( f7 P) T) d5 _- Y+ V
  58.                 return -1;) R  F! {9 ~" k/ N9 |. B; O
  59.         }1 R, k( f1 B! p/ G% C) r& Q
  60.         arg.sub_addr_count      = 2;
    ( z9 [3 M3 M0 P5 H$ I% z! O
  61.         arg.data_count          = 0x18;+ J/ O8 n+ F3 Q5 I
  62.         arg.e2prom_cmd_sub_addr = 0x290;* ~1 t* @- h2 Y. ]
  63.         arg.e2prom_cmd_data     = buf;, Q9 ^, _  E" E( g! E" y% \3 K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 X1 A  d  F* X8 [3 i  J3 O
  65.         if (ret != 0) {
    ( l6 m  r6 N2 u! c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: E) `6 z6 i* p8 X& ^
  67.                 return -1;
    + |6 X) \( q3 y& W+ A
  68.         }
    - G6 Z' p( p7 g, e$ N
  69. " O' {$ J1 r8 R! R$ I% V5 r8 P( N
  70.         return 0;
    . P: r6 g1 U$ K6 o) _# J! ]. d
  71. }
    5 c$ K# D* g1 Q  |6 v

  72. 8 M. `3 }) Y# p0 X4 i& t, C
  73. int main()
    ! C" q% K/ f* u' z+ J5 G
  74. {
      i0 G2 y, Q6 p4 w' p4 S0 w3 t$ \
  75.         char c;
      Q0 I4 [! {7 {
  76.         int i, macs[6];
    8 X+ ~: k5 ~  J
  77.         unsigned char mac[6];8 [8 ^+ y/ W3 @2 a& S6 i! D) M1 u
  78.         unsigned char stbid[256];
    * W& n. ]6 ?- O

  79. * g" C$ P' m$ M' Q! \
  80.         if (readparam(mac, stbid) < 0)
    % v" W0 M6 n2 B
  81.                 return 1;
    ; X! M2 ?- l  d/ p

  82. 3 w! J; B) s5 y8 a) @1 D4 ]: {
  83.         printf("Current parameters: \n");4 q& G( K$ P% T/ E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , k. ~4 w( j4 G4 v+ K
  85.         printf("  STBID: %s\n", stbid);
    * _+ H6 j$ x0 Z2 R+ k! {
  86.        
    + _1 V# B& j7 z* y0 B- L. m6 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 U8 e  J& P8 o7 C$ i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 A/ i: `( x" X- o( W! F
  89.                 printf("Input MAC error\n");" a1 ]- I' d9 _* j
  90.                 return 1;- x; d( x* w& o+ f: D5 m
  91.         }) J8 v2 q9 M5 e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" G) F: u5 m  e3 S
  93.         printf("\nPlease input new STBID: ");
    " R8 u9 D* v/ y' T, ]
  94.         scanf("%s", stbid);
    ! ?+ f. j1 X& B( H, i
  95.         if (strlen(stbid) != 18) {
    / k. j+ N1 H; H/ }& Z) C- L' D4 J
  96.                 printf("Invalid stbid\n");1 |6 l+ o5 c# e3 F% y/ w
  97.                 return 1;# @+ h2 r) D1 E9 `( U. L# a2 i+ d. K
  98.         }7 W0 z% w/ V8 `) N$ l
  99.         printf("\nNew parameters: \n");
    7 a0 O8 m, C5 p2 B" i9 Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! p# _3 e$ e. w3 T
  101.         printf("  STBID: %s\n", stbid);
    & N2 D9 ~  \% A! g2 G3 L% `
  102. * h* B4 ~6 u. ~& T; X$ h, n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / _" q1 C3 F3 e# A1 u; _6 E" G
  104.         for (;;) {; K3 N6 I9 q- G" `5 ]6 s7 Q& T
  105.                 c = getchar();
    ) j1 A# H- R+ R. F7 f+ n6 W- g
  106.                 if (c == 'y' || c == 'Y')
    , g* I( N  h* i7 t
  107.                         break;
    & A2 t! h7 _0 `& i
  108.                 if (c == 'n' || c == 'N') {
    ( G2 H  d4 x& w' P' A, W
  109.                         printf("\nAborted.\n");
    $ e. U  [2 g  P/ i1 _8 u! S( _
  110.                         return 1;* x: Q4 d& u8 B
  111.                 }8 I3 Z- W( v" |( t7 y. b
  112.         }
    " |! n( g. X- v, k; |: P& b: ~& F
  113.         if (writeparam(mac, stbid) == 0) / U. H0 e3 t" A0 q* Y0 p7 C1 Y/ d
  114.                 printf("Parameters changed.\n");" ^0 {, I' e- s" ], ^- t

  115. 7 r; j3 e- b: A2 f$ y2 T
  116.         return 0;$ M. T# [" ?. o
  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
$ J4 ~# l' R# T4 d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- {/ k( V4 o  \+ @: J/ J
你用的编译命令行格式是什么?8 {/ Q6 X5 f" c6 Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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