查看: 17478|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 S: Z/ O7 Y: K' i) O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " I% `) a! I& e: Z# \# E3 [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ a) U1 D6 y. N0 u) ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 K. W+ ?3 M% Q% r# H1 U  y! t- N& ~# _
0 I* u' L$ n+ k$ Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' S$ ^. G7 {- c) t/ _, s! e% X* C- n" ?* r/ j$ z6 e
补充内容 (2012-3-8 09:42):# q0 p% C8 v) d( E3 F% y" v! x2 T' z: }% ?
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% `* n' H3 v" ]' i( }这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 j, O& c& O" Z( j' X! m
2 h" R& H7 q7 C' v4 ~
himr <address> <value>. sample: himr 0x80040000 0x0
9 ?- y  R1 l  C) x7 L. ~
# h) ]0 @; m5 ^, X5 P0 q' @8 m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; D% B) {' f2 j
himr 0x80040000 0x006 u3 C! [7 y0 Q
himr 0x80040001 0x11
# V/ c5 H* q( Zhimr 0x80040002 0x22& H$ Y" a- _9 m/ h
himr 0x80040003 0x33% y' K: `# M8 T5 ~6 c1 b3 H
himr 0x80040004 0x449 _  {! @8 m  U- J. o
himr 0x80040005 0x55
1 q% M* `2 H( k' r
% Q2 U8 O& A* B8 j' B! HSN也是类似。% L- ?1 _% M# ?/ A0 I

8 s3 m6 ?! f  J, g$ ]4 H2 S6 p) `$ l现在主要是,谁告诉我们MAC和SN的地址?: [! l- z5 L2 x) g& N2 e: D
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " ?# c7 l" u: T" x3 D2 N( f4 h6 C4 x
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 K- Q8 F+ v# g9 U; c0 N源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ a" I$ E9 C3 b5 g

$ N2 \, x2 x! Q2 r0 Y  K) ^2 F8 R# g修改的代码早有了。到今天不会编译。
# b. T" v# H) P) h2 g% q' _需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # Y  }0 o2 g, [$ B  x
  2. #include <malloc.h>! S, f  t! X$ O% S2 i9 |
  3. #include <sys/types.h>6 T& G- s9 {9 g# m- W
  4. #include <sys/stat.h>/ A; u( t+ t; x  W# N" u4 R
  5. #include <sys/ioctl.h>
    & V  Y3 _* X& m2 F# [
  6. #include <stdio.h># V* z( g7 V8 L. \+ P5 ~( b' M
  7. #include <string.h>
    + L7 o. z2 T4 [, i( R. F6 I5 ?
  8. ; w3 ]8 W# t* y* {
  9. typedef struct {
    " p: f8 O! o- r+ V. r( Z
  10.         unsigned int        e2prom_cmd_sub_addr;* f, A; y- R% q6 R
  11.         unsigned int        sub_addr_count;
    * n) G% y4 K2 R* U. a
  12.         unsigned char*        e2prom_cmd_data;' k8 B, @- @$ P0 Y. _; G( w1 P
  13.         unsigned int        data_count;! f" L! z! m6 G$ m8 H, `
  14. } e2prom_s_cmd;. M. Y/ O( Q2 I

  15. 8 c( S8 E! U% e; @0 T
  16. #define E2PROM_CMD_READ 1/ x% M& G. h+ j0 k5 j- a4 Q
  17. #define E2PROM_CMD_WRITE 2; e6 T3 f. @* \# h% K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  y2 j; q8 m9 T& [2 z7 ]
  19. . h, @: s2 z' V3 t) @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 S8 Z( x( d; p3 I0 n. P
  21. {8 O" n, e/ h+ E' i$ X8 e
  22.         int fd, ret;: a; v7 j8 N) N6 _/ T. H7 B
  23.         e2prom_s_cmd arg;
    8 {, q0 [1 J9 S. `+ L
  24.         unsigned char buf[0x18];9 v) T: y: P: m* T$ ]- r3 d7 a
  25. ( W8 S2 {# }& c+ `3 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ Y' ^' s& w, S& S& V
  27.         if (fd  < 0) {! j0 k$ H1 a9 X7 l# Y4 k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 J- ?- o7 [! d& ]1 A
  29.                 return -1;1 T/ D2 r: V: e- \  V, D
  30.         }9 y" Z) Z4 N3 }, Y1 C
  31.         arg.sub_addr_count      = 2;
    5 c: E* h" q- d# B8 }2 [, a
  32.         arg.data_count          = 0x18;' @- [% w7 \8 [4 x# y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 B& n# K: g" C3 c5 f. T; n
  34.         arg.e2prom_cmd_data     = buf;6 j; n9 W% ]* y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # y& D9 O7 M2 y
  36.         if (ret != 0) {
    & t% f0 L) _9 z* i* ^6 b: [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 h) t6 y. E' z; @8 a& G
  38.                 return -1;3 @3 R( o7 X8 z! I$ Z- i% l/ T' ]
  39.         }/ g8 H3 ~% J$ K: n$ I
  40.         memcpy(mac, buf, 6);/ x1 S; x3 d; N( [$ i* w  l4 W
  41.         memcpy(stbid, &buf[6], 18);6 Y" k" ?# v% Q" w' z, q& w2 D
  42.         stbid[18] = '\0';2 r( o% `  [1 o7 Z

  43. . L( t# S& l  {5 P) J; {
  44.         return 0;/ Z% e$ b/ ]; k2 K4 m
  45. }
    : s9 T2 M  r) b+ Q  c
  46. ! i9 U1 d' t2 i  Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ r; k6 W0 p' f1 }: f: C1 I# p9 Q
  48. {
    0 M: Z1 q% Z2 M% S' S' \' P1 s7 S: d
  49.         int fd, ret;
    ; q6 J2 j9 K+ p) J7 R4 w0 F9 g- i
  50.         e2prom_s_cmd arg;1 E" t( S# O; K: a
  51.         unsigned char buf[0x18];1 D0 j& Z4 Y9 G& i6 }
  52. 4 Q3 D/ C2 L/ T
  53.         memcpy(buf, mac, 6);5 o$ U5 @* g/ X- v( l
  54.         memcpy(&buf[6], stbid, 18);
    ! u' C; |% C( {3 I# w3 ~. u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) M( v  P! n0 U6 P& k! @
  56.         if (fd  < 0) {" G- w- ~) n7 ?. O9 [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 {1 x: g) h$ ^& B6 Z, I
  58.                 return -1;
    6 r. |+ _  A) K5 \2 e* ^
  59.         }
      k3 F  r# y: `! h; J) e- s
  60.         arg.sub_addr_count      = 2;  o, u/ t% `4 r( L* e) F9 f
  61.         arg.data_count          = 0x18;; ~1 G" \7 J1 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 s* ?# Y+ S7 L/ j5 ^1 @
  63.         arg.e2prom_cmd_data     = buf;# Q" k* n3 N0 }1 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- A* \& X( B8 S) s% K4 q
  65.         if (ret != 0) {& E5 D1 V9 w/ s' K1 v+ Q" L5 _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  G0 R1 W* H; [4 [3 _  Q9 y
  67.                 return -1;6 C7 [4 i! u- b$ k
  68.         }
    # V5 x, A/ x' o+ s) P$ @, G
  69. 4 @* ?$ k9 C- S+ S" N* E: T
  70.         return 0;
    + B5 ?0 Q. M+ N& |. _* k
  71. }% Y* \$ P' b7 E: ^6 E6 h" J

  72. 1 }5 l" Y' R0 B  P' @6 `2 s
  73. int main()  `# G- g) b6 \# }9 N& K
  74. {2 }& ?# R( D0 U# N3 V0 Q
  75.         char c;+ P9 ?% I3 {5 ]* r- P4 q# {1 S/ h
  76.         int i, macs[6];& A3 D$ v. G( a6 s5 ~3 @
  77.         unsigned char mac[6];
    5 v' J4 W, d% X: y& R
  78.         unsigned char stbid[256];
    : M! T0 ?; p0 t/ f) R$ ^$ U
  79. $ N/ h  P/ F% G3 l2 I
  80.         if (readparam(mac, stbid) < 0)
    " g% U# h1 u+ b. S/ X
  81.                 return 1;" W8 b. R  w6 [2 D4 J
  82. ; n9 l' K1 j/ s7 {% T% a
  83.         printf("Current parameters: \n");
    5 ~$ o( B% z5 ?& J1 _, Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 U1 z  F$ x% E; ]
  85.         printf("  STBID: %s\n", stbid);9 |& [4 B$ I3 ~2 `! y* d
  86.         9 \; [/ C% u# \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 E2 v/ L  c2 X1 k8 l4 p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # L) Y) ~# g' ~. ^& T
  89.                 printf("Input MAC error\n");: M. Z# ~" q2 w* l+ D& J9 s, ^
  90.                 return 1;4 Q" Q3 |) g5 M" Y$ ?
  91.         }6 R; Q: u. m' }3 y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- b: R' w& |& D6 V9 k
  93.         printf("\nPlease input new STBID: ");
    % i$ |- X. j9 B1 }
  94.         scanf("%s", stbid);9 g5 |8 c% h4 @
  95.         if (strlen(stbid) != 18) {
    ! I* O( d' S7 g5 R" G& l4 ?7 r
  96.                 printf("Invalid stbid\n");
    3 H1 c2 ~" N5 y
  97.                 return 1;
    % B! ?5 J) r0 q8 V; G
  98.         }
    5 e8 R$ [5 \( e3 ~- D
  99.         printf("\nNew parameters: \n");& `* i7 k5 s0 y+ z6 {, n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' v) X+ I5 n3 Z# g# ^
  101.         printf("  STBID: %s\n", stbid);
    $ n. P4 b# i1 a3 S" Q6 V

  102. 2 A# y7 s/ U) @8 [% M# ^6 a% Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");! d. A5 c! ]  i9 R( s
  104.         for (;;) {- n+ E' s' x. w9 O7 E6 Y
  105.                 c = getchar();' M, @3 R% r, u# e1 I$ w* o) F
  106.                 if (c == 'y' || c == 'Y')
    , E( ]$ ~% p4 u5 j9 m5 @
  107.                         break;3 J  o# @; w& C3 ~4 T
  108.                 if (c == 'n' || c == 'N') {
    . i0 Z' F: C: L
  109.                         printf("\nAborted.\n");
    0 X+ n5 M& z5 v) N$ G( D
  110.                         return 1;2 P8 ^. m# v( w$ E  A/ [
  111.                 }. B- @8 U" K' f) A) t# d5 O
  112.         }
    ( p$ w3 L3 u3 q$ v
  113.         if (writeparam(mac, stbid) == 0) 0 G. I- ]( l: N! ]
  114.                 printf("Parameters changed.\n");
    ( A7 g& y  T5 r9 _1 @' j
  115. ! S& O1 F2 _7 {4 r: u' z$ D3 V
  116.         return 0;
    * q7 ^- A$ d+ e7 H1 B) e+ p6 C
  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
( c) f1 b4 R7 o$ H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% c# Y3 N! d7 C# n9 S9 P; V你用的编译命令行格式是什么?
' z5 K- a, _9 ^: U* ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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