查看: 17194|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 N5 M) E# \, Z, i4 Q( g8 d1 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 t( o$ X: a% w- k# P$ C5 c' M& `* V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 x. e; [; |+ }9 R# \# pusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 v7 _! n5 X- z2 K" u$ f/ _) w0 {0 n) r

& }# X$ w* t5 [5 ]+ F7 b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ v& P+ o8 x. _1 {, O! W1 r" g8 W, X8 {# N6 r2 ~5 V; G
补充内容 (2012-3-8 09:42):3 A* ]4 u& o" G- D9 [
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% [/ P- c6 i( s# K这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。! k8 @# p5 E% W1 w1 E
3 a7 z! g" N2 d  G8 p" [
himr <address> <value>. sample: himr 0x80040000 0x04 W8 `0 |$ L! h. \

4 X  l  ?/ P9 d$ F& T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 p! H- Z; G8 ^, E! L/ Shimr 0x80040000 0x00
/ d/ a9 b& |7 d! @himr 0x80040001 0x11
+ ?0 F/ c6 d! e# Whimr 0x80040002 0x22
, o# [$ e$ m2 I: W  xhimr 0x80040003 0x33
+ g0 I* s0 D1 a1 u# Hhimr 0x80040004 0x44
6 {$ h9 J# h3 G. Qhimr 0x80040005 0x55
7 S( R4 O+ w7 a+ K  d: i+ G" V9 m( C
SN也是类似。
  c3 r  W( u( w* `4 h1 |7 u2 N$ v, }
现在主要是,谁告诉我们MAC和SN的地址?4 x' \8 r/ ~4 A
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & i, ]$ X1 F* q8 I3 i" r& y! m
一直想找到运程修改MAC和SN的办法,苦于无解啊

! ~; \& H3 d, x! k/ \* H源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: l, I0 S3 V. N! R5 m; M: t$ e$ l2 U( w. g
修改的代码早有了。到今天不会编译。
$ M# C& Q8 E- {" q5 ]需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' V& s9 U5 l# s& s1 |, R8 N/ n! H
  2. #include <malloc.h>! j8 D' X' |) h3 h5 Z0 b
  3. #include <sys/types.h>
    9 [' Z" w9 S' C" h6 e8 [, ?
  4. #include <sys/stat.h>
    - o% [$ [6 x$ x6 x  \
  5. #include <sys/ioctl.h>" }+ c! E0 ^8 V8 K. Z' |
  6. #include <stdio.h>( |5 W- N! ?+ V2 u+ t
  7. #include <string.h>
    . p2 r9 y* S! }' V, ^. }/ ^

  8.   \8 o* b, D# C) {1 I
  9. typedef struct {
    * @4 h7 r0 C- l' y1 T* N
  10.         unsigned int        e2prom_cmd_sub_addr;- Z$ \  {5 Q/ W6 {8 |- f: e4 `
  11.         unsigned int        sub_addr_count;
    " g, X7 u9 x% Z2 l( D+ P8 U
  12.         unsigned char*        e2prom_cmd_data;1 }) f* u8 [2 k/ h7 Q) }3 |
  13.         unsigned int        data_count;
    1 L9 g. e7 M5 z( Z8 r3 O, J
  14. } e2prom_s_cmd;
    ; M  X+ g+ R' S6 M

  15. ! o. |; U1 {# e7 m4 X! a. [
  16. #define E2PROM_CMD_READ 16 r. E2 W. q8 U: ?$ w: Y
  17. #define E2PROM_CMD_WRITE 2
    3 G; }$ E/ K* A8 f. P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( z# O- i# f( w. W0 h
  19. 9 T7 o& d! W4 _. @& N% V/ y: w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - i" Q0 f; u! v; ]. K2 ?& e
  21. {. F* `% z5 j% Q
  22.         int fd, ret;9 T% S6 y0 R- g
  23.         e2prom_s_cmd arg;
    + t6 ^- y/ ?( T9 U: t# f
  24.         unsigned char buf[0x18];- ~: B9 |$ o" P# G6 F; m
  25. " }5 Z$ I6 G  b9 l% o* W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: g3 Q* {8 |1 i
  27.         if (fd  < 0) {
    # F$ Y) b$ N/ ^5 W3 @3 y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - F6 [( |6 l5 w
  29.                 return -1;) |7 N9 V+ @) ^9 R( b
  30.         }
    $ I6 D# f9 W  o5 F' C* ?( }! x
  31.         arg.sub_addr_count      = 2;" e8 ]% Q6 I. O1 A
  32.         arg.data_count          = 0x18;7 ~2 ]. N8 h4 l. k: B
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ b3 Q. _3 v# |
  34.         arg.e2prom_cmd_data     = buf;% W% m0 I* P" T  Z; A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! w: @* b+ W" F9 a1 X
  36.         if (ret != 0) {
    5 K7 H! R/ |7 \0 Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # X0 j! g9 k8 i
  38.                 return -1;5 v% J- m5 a4 S. r
  39.         }/ A7 a* c- C* j: |6 ^8 C
  40.         memcpy(mac, buf, 6);
    8 P/ |3 a" y: c" s, G; I
  41.         memcpy(stbid, &buf[6], 18);
    0 C/ s/ m5 C+ k' U' z8 _
  42.         stbid[18] = '\0';
    2 |+ Z+ H7 a$ c3 ?
  43. 8 T/ ?; A" U' J- d! U
  44.         return 0;' ?6 t- q2 j3 s  q, w; h' Q
  45. }
    0 }  L; s& Y/ t. _) V
  46. ! L2 J  Y- ^6 G9 M- j  L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ u/ r# {* L# X: m, p$ t
  48. {
    7 X" Q' \3 S9 X0 Z
  49.         int fd, ret;5 d# K1 \1 A- f# \) `
  50.         e2prom_s_cmd arg;' h: ^; G4 {: {6 D
  51.         unsigned char buf[0x18];4 k( p  u- u9 `7 N8 j  O
  52. 4 x2 I& j( w  G( C' M9 o8 b
  53.         memcpy(buf, mac, 6);
    % e. o4 O. L, \9 |  \& h( l, @: v
  54.         memcpy(&buf[6], stbid, 18);+ d7 z, G( n) h' y7 m% N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) O9 I, ]6 f2 f
  56.         if (fd  < 0) {0 \4 Y0 c( r# n1 ?' y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ B. n$ ?) T/ c" ?% a7 |. m
  58.                 return -1;
    3 b0 M, t( n) g4 K: w
  59.         }  d# k% {8 w* I" X
  60.         arg.sub_addr_count      = 2;( y, }1 a' F. C2 d1 ~1 e4 b
  61.         arg.data_count          = 0x18;
    " X* h2 y: o4 u1 ^2 s
  62.         arg.e2prom_cmd_sub_addr = 0x290;" S  G+ h8 d- C& U. o1 W. H2 i5 v
  63.         arg.e2prom_cmd_data     = buf;
    " V5 A) i$ @9 ^  ?' @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " j+ N5 u$ f% f. a0 S$ P! i4 O! z1 A
  65.         if (ret != 0) {# K' w$ O7 m* J0 }7 W: r+ O; \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 I. b/ @5 E: u$ f2 @4 b/ }
  67.                 return -1;
    . ^7 w- I; m" f
  68.         }
    6 M6 e/ _6 e) u: H7 H+ k3 r6 ?

  69. 4 C+ K, u& V8 w
  70.         return 0;
    , d6 l5 n; G) _' x) V" Q( n
  71. }
    0 N' D2 W( ]. T  ?

  72. 5 [! o( p) n& k7 d9 a
  73. int main()! h3 [) L* Z$ f. u$ E
  74. {  e5 J2 [8 `" \: Z
  75.         char c;4 B' ?- O  q/ m
  76.         int i, macs[6];4 L. q  d* l- R: L+ A
  77.         unsigned char mac[6];
    ! N( r% R. @) m) k  m
  78.         unsigned char stbid[256];2 q) |+ F8 [5 y, @% U

  79. 7 {; q5 E, d! b+ a, w8 A
  80.         if (readparam(mac, stbid) < 0)4 f  v0 p$ {4 x: S3 d& W) {5 T
  81.                 return 1;
    2 E" F4 z# p! q- r: J( y! y
  82. / Y+ K/ `1 W' X& ?5 g
  83.         printf("Current parameters: \n");6 X( u8 a* ?, _& \6 O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; Z7 w0 J, I1 f5 T/ {
  85.         printf("  STBID: %s\n", stbid);" |6 O0 l# G, q3 }! Y
  86.         9 m# K( _* a! i' O& V" w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& c" M7 q# p& s  ~0 P4 [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , w3 k  a$ U  h" y! ^4 E) m8 n; R
  89.                 printf("Input MAC error\n");( {0 [& U2 }3 {+ O9 K1 Y% u" X
  90.                 return 1;
    0 j# O% r" L  X/ z3 ^
  91.         }
    & \0 o# ^  K8 Z2 L" x: u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 G1 u% y# c% C( ?1 u  d
  93.         printf("\nPlease input new STBID: ");
    7 Q, r+ |# G, H- L9 P: m
  94.         scanf("%s", stbid);
    9 Z# U1 l1 v+ Y; D
  95.         if (strlen(stbid) != 18) {" f. @: o; v) F/ |6 K- v
  96.                 printf("Invalid stbid\n");
    ) v; s& I5 [% }9 {. Y
  97.                 return 1;
    " \% A0 ]9 F0 l3 w  }
  98.         }
    % {, W) ]) n6 i
  99.         printf("\nNew parameters: \n");
    " O- G3 F# Z8 s; V& L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' |: y" {0 f  t8 A; H% X: T$ f
  101.         printf("  STBID: %s\n", stbid);
    - L1 d6 I. T. _  v+ N& T2 R) g. P
  102. * Y) N1 z/ I& d$ M
  103.         printf("\nDo you want to change paramemters? (y/N) ");( y: `$ x1 t0 ?( G2 N$ E
  104.         for (;;) {
    1 Z) v5 s2 V3 J" g
  105.                 c = getchar();
    4 t. C& w9 z5 }/ s* d  l! h
  106.                 if (c == 'y' || c == 'Y')
    * F4 |( p4 f  l" c
  107.                         break;' p/ j) e  n1 @, u- t& Z0 Z6 K
  108.                 if (c == 'n' || c == 'N') {( v, n6 [7 k% X4 k1 J0 ]
  109.                         printf("\nAborted.\n");$ z8 \7 f% _# M  G% U# R) |1 N6 o
  110.                         return 1;
    2 Q1 b" I& C3 p" a9 D1 p- X6 l' G+ u
  111.                 }
    + m; n7 z. g1 ^6 f6 s" s7 \
  112.         }) B/ P( m$ n/ V% |0 x2 j
  113.         if (writeparam(mac, stbid) == 0)
    7 |! D* t6 G$ ?9 J% T5 v# ~0 M
  114.                 printf("Parameters changed.\n");- [! z! Q1 B6 x5 p! ?& ~$ W- M0 z
  115. 6 M+ u1 X7 }. Y2 v; o; F
  116.         return 0;
    7 g; \, g0 `/ u) u/ @# ?0 i
  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
- P0 \  g, E3 k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ Y% t  [2 c( |* H
你用的编译命令行格式是什么?
$ }5 Y; ^; P2 ^' G7 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客服返回顶部