找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15758|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 Y/ b# L- c: f" q8 T7 K$ l, B% `' q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; U, X5 h# L! `3 a& M% q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 x! `/ X+ w" z- _  Ousage: himr <address> <value>. sample: himr 0x80040000 0x0
3 O5 d5 a3 G9 u0 e, D8 Q- `& L+ l# u' x3 M) ?6 S

) t. A! |$ B  P9 ?不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 ^& b" m1 w; c* c- b+ R7 V4 X: j3 r
补充内容 (2012-3-8 09:42):
1 Q  a$ ?2 d3 E3 E. ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' _6 U) K" v6 m+ A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. K$ V6 J/ Y* q. A1 `
* _+ z8 ?, W" v' X. g+ Vhimr <address> <value>. sample: himr 0x80040000 0x0" m# {& a, ~( V3 F8 {  N" P
( K' z+ z3 W" w6 D( G: e$ m' X6 P; a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 f3 W/ L1 t* d  h. H, Chimr 0x80040000 0x00$ e5 s( Q/ \% y" i. P2 F( o
himr 0x80040001 0x11) i) O( {, G# l& K  Q: {
himr 0x80040002 0x22* M. h9 ?6 h9 Q$ S
himr 0x80040003 0x336 h" I; z9 v, Y; ^9 a
himr 0x80040004 0x444 I2 @2 @* x4 V" |- T1 p
himr 0x80040005 0x55
  T/ L* A4 y1 Y6 G9 n5 X& O4 n: Y, `) {0 D, h0 E) x
SN也是类似。
/ p6 Y! ?+ o, k5 c3 \" V% D
% l. a& \( Y6 S2 \' u现在主要是,谁告诉我们MAC和SN的地址?
* ^2 J) |" g4 H' _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / t) c* Q- e. Z: Y0 x$ ?0 u
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 p* i  T9 D6 C
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ l" Y0 r- y- W! A  P- `2 Z7 a/ n! r5 X
修改的代码早有了。到今天不会编译。
, n% V$ w& s+ L" \需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 h( x: X* Q" a8 X2 v
  2. #include <malloc.h>
    6 R; ?1 W) m  h* L! B3 v- h
  3. #include <sys/types.h>
    : p, S5 f& ?. a7 P# n% N
  4. #include <sys/stat.h>! p6 X( ^7 @9 a7 ?
  5. #include <sys/ioctl.h>
    + d/ G* y/ Z+ y1 q$ \# R
  6. #include <stdio.h>
    + |7 n- r5 j+ p$ D6 k
  7. #include <string.h>
      O% {7 I  A! f% S) m; i

  8. % i7 y+ g( J2 g. t
  9. typedef struct {1 `( E9 n( H3 [5 E. K& e
  10.         unsigned int        e2prom_cmd_sub_addr;
    . `9 u) l  a5 H" }: N& Q2 M( b
  11.         unsigned int        sub_addr_count;' Y* B+ i# c2 M
  12.         unsigned char*        e2prom_cmd_data;& H+ C! O$ h- K; v3 `
  13.         unsigned int        data_count;
    ( i/ F- q8 E3 o% s8 M- N
  14. } e2prom_s_cmd;2 a. W  R8 S1 L; W
  15. % g0 t! F+ R/ G0 Z* B
  16. #define E2PROM_CMD_READ 1
    9 U" c; \+ {) |( ]: G. L
  17. #define E2PROM_CMD_WRITE 27 o6 J' W" x6 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! D- |( r& u( C/ l

  19. 4 r- t- f$ R% z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- Y  a- z+ Q0 n5 J3 B
  21. {
    9 a" N$ {- w6 y
  22.         int fd, ret;
    , D0 D6 m/ o, R+ _5 {$ M
  23.         e2prom_s_cmd arg;' Z/ j( f, }  ~- \) f7 S2 E
  24.         unsigned char buf[0x18];
    . |$ e/ M, ]4 I; l; y, ?+ P
  25. 0 ]. E1 o7 |/ |# q2 q+ j* I5 i' m! ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 E( [  \+ R$ E. P- e$ o
  27.         if (fd  < 0) {
    , {! C$ C8 g* r* Y0 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . B* j. e/ |/ A8 e# n' g! U
  29.                 return -1;
    7 s; D  N. b) P
  30.         }
    2 m8 P( L: V6 u4 N: k! Q
  31.         arg.sub_addr_count      = 2;
    1 Y) ^% |. U. o- `' a0 Y+ F
  32.         arg.data_count          = 0x18;& r# ^$ g1 ^. Y' N! t
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 l8 B2 {+ \* a4 J
  34.         arg.e2prom_cmd_data     = buf;
    4 x7 W% _' s: X( k0 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) b% y7 h; a6 c* \
  36.         if (ret != 0) {# K, g0 p+ V4 l# _8 }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; W+ @: a1 D5 j+ [, S9 U! f) m
  38.                 return -1;' h; x! e% V3 ?9 g7 n
  39.         }  W7 K. c; Z9 H" J! Q: @- v- z
  40.         memcpy(mac, buf, 6);' R0 K/ ?* m, W8 N% }
  41.         memcpy(stbid, &buf[6], 18);
    4 p7 z; w" \7 ~6 ?
  42.         stbid[18] = '\0';
    5 d2 p$ }1 Y; |" \
  43. 0 M; j( t' _  ?1 f
  44.         return 0;
    . E" f: v7 d7 n+ @* F4 N
  45. }5 Q; J/ A8 A$ V( o3 j% h

  46. : w2 \/ B6 B% a6 z! X; U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): c  H; N* ]3 U
  48. {
      L1 d; G3 p5 u: |# K: e  X
  49.         int fd, ret;, M6 C4 L- o) t  k
  50.         e2prom_s_cmd arg;/ j5 M& x; Z' p. V4 n4 F
  51.         unsigned char buf[0x18];" P$ _: c" u9 ]4 ?) z# h% f' I
  52. & I. f2 ?2 F" o% A7 {
  53.         memcpy(buf, mac, 6);. y: W% r# w6 T4 j$ g0 G* Q1 ?
  54.         memcpy(&buf[6], stbid, 18);  H/ E3 B1 ]! D$ @! u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . x: L7 u* X% L; L3 d3 q0 `
  56.         if (fd  < 0) {3 r$ [5 a1 b+ J4 Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  v$ V. _$ P4 I+ O( y/ H8 A
  58.                 return -1;$ i  l$ A0 \% u* z* M/ R
  59.         }
    3 ~0 q6 x9 }' U
  60.         arg.sub_addr_count      = 2;1 c' e" {8 D5 J% Q* @) O" Q
  61.         arg.data_count          = 0x18;
    3 b" r) e2 t7 A5 @. z
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 R7 O2 M: x. P* W' Q6 m! o2 E) ~/ {
  63.         arg.e2prom_cmd_data     = buf;
    , s% N! `# u2 e& k+ N  Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . u* ]; M* S9 l  A8 s2 w! l$ G" t
  65.         if (ret != 0) {% ^/ B5 q, `0 t" @% v' `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 ~" b) Z# e$ h4 u* k
  67.                 return -1;4 ~) A& \. V" L- ~6 [, ], W9 Y1 U
  68.         }8 ]. a' R' l; R$ |+ [  o
  69. ! j3 R  @% [  [$ m
  70.         return 0;; F$ a* i6 M+ r/ }' }
  71. }* w5 v. K, \& F. i/ [" L" n
  72. $ ~1 x  B! S  M% V0 Y: t; r2 Y
  73. int main(); S# K* C! P0 E% _. U. {2 t
  74. {% X* M0 x1 P  Q: F, {
  75.         char c;* z8 A6 [' b/ Q9 _7 H5 ]& A+ @
  76.         int i, macs[6];
    1 R& }9 u. u  y$ L- `
  77.         unsigned char mac[6];% {. d0 ^1 Q, ^* q3 u8 a- S2 a, z
  78.         unsigned char stbid[256];5 x8 l0 q" |9 J- L* K. k2 t  }
  79. ' Q0 S2 o/ v9 n/ a. Q
  80.         if (readparam(mac, stbid) < 0)" E) `* O2 e* J  N0 {* \
  81.                 return 1;
    & l+ r7 W! u9 U
  82. , r* R. p  j2 B* h' O& Z5 C4 c0 _1 J
  83.         printf("Current parameters: \n");
    + m3 M, T1 j8 ^6 X: h( `- D+ U  @) a% [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 U3 T( L; O7 q' s  g4 Q3 i
  85.         printf("  STBID: %s\n", stbid);' Z4 ?) H0 m3 b" G, s. }
  86.        
    5 A3 z" H+ y" M. \( p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ f" R% |2 b# D( T! b0 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& e  U+ G1 w/ {7 q+ O% _5 N8 a( `
  89.                 printf("Input MAC error\n");
    & y( o4 p0 a: K) H
  90.                 return 1;
    ; Q" o# X3 ?- z* w$ ~
  91.         }8 y# V# }( H- m' V- B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      C0 J0 d1 k- R  m
  93.         printf("\nPlease input new STBID: ");
    ) N' ^* [1 I( Q, u* V0 s. P& ?/ ~9 x1 b
  94.         scanf("%s", stbid);
    # p/ {; Q0 G- H
  95.         if (strlen(stbid) != 18) {6 x6 u1 C& h/ k, M' K
  96.                 printf("Invalid stbid\n");1 a' _1 J- K$ v- h! f
  97.                 return 1;0 l7 b" y+ B% d; `; L
  98.         }1 q7 q" O$ C+ N5 J
  99.         printf("\nNew parameters: \n");1 e6 Y* @% k$ _) @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: J' y! t6 x, W, ]( J6 P
  101.         printf("  STBID: %s\n", stbid);( ]8 `1 A8 _/ j

  102. 1 C6 i& o! p. e  N3 N4 c
  103.         printf("\nDo you want to change paramemters? (y/N) ");* [% T4 n) [- _) {
  104.         for (;;) {! n% Q/ j! p/ j% n( k8 M: H
  105.                 c = getchar();5 g4 k" Q( J( u) V
  106.                 if (c == 'y' || c == 'Y')& L- L" ~+ o. t2 y% z1 Y
  107.                         break;, w- A, D, \2 G( Y: C
  108.                 if (c == 'n' || c == 'N') {
    ! ?) ?) k" f, K
  109.                         printf("\nAborted.\n");
    7 T) t! K5 b, F) b) H
  110.                         return 1;
    $ s# C4 p$ ]4 d
  111.                 }6 c/ a* ?+ G! R6 D: j% L" c
  112.         }
    & K7 T, e: K% X( d( C$ X
  113.         if (writeparam(mac, stbid) == 0) 5 a3 |' ^% N/ O: I% s$ }+ y. m
  114.                 printf("Parameters changed.\n");4 S. ^  E0 e0 x/ R
  115. % q2 q, C' G) h. ]: H% _' a) r
  116.         return 0;/ b) i" B: t+ g3 V1 X0 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 + d+ L5 K, n! p) F* j( }
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: P: b, M# \/ ^/ q3 ?# H你用的编译命令行格式是什么?
# o+ S+ W  o8 Q( \6 h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-10 12:06 , Processed in 0.030414 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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