查看: 17011|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . Z$ g) N1 \0 q* X9 h# ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 t8 q! K1 E! e, d1 {2 l. A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 R/ a; F% V: O: x  t$ d
usage: himr <address> <value>. sample: himr 0x80040000 0x0  j  v- g: G5 r# T; ^. N( @
' G4 H5 s$ p  n* o" b, ~
, W' V# s0 h0 }- h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: ^2 y) J6 h/ X+ w2 _
/ |+ D7 _2 q1 B' F$ M- d$ S! y/ G9 @
补充内容 (2012-3-8 09:42):: O  ^" m+ `  z5 m9 v
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 u# j/ I1 @1 [& h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! n6 ^6 n* p1 m8 x" u3 M* Y, v
1 r# y+ e2 Q1 O9 R* J! x7 thimr <address> <value>. sample: himr 0x80040000 0x0
9 a) e7 V  S$ v1 k$ c8 @" u0 J& M; L2 P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  p% h# p' c/ ]# f4 q+ P# a/ x: V  j2 Jhimr 0x80040000 0x00
  B4 ]- E7 ]$ o; C  [+ T- _( B2 dhimr 0x80040001 0x11
) Q# w" z& s. k8 F( M, Phimr 0x80040002 0x22
3 I, O  g2 k- I# _0 ^  ^  y6 whimr 0x80040003 0x33
9 u( Z8 t3 @  W1 w7 `7 M' Rhimr 0x80040004 0x44
0 ^( @/ i$ ~8 a' n! m" f: Jhimr 0x80040005 0x55
8 U: c6 t' M# X. _; N( E" c2 A3 y+ U2 ?1 B
SN也是类似。' K1 M+ z1 N2 a) s: f
+ E1 F* b' Q  P2 P4 r3 m
现在主要是,谁告诉我们MAC和SN的地址?
; j% z# J3 E8 I4 C, F. F
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  {5 [8 Z' K9 _/ i$ L. K一直想找到运程修改MAC和SN的办法,苦于无解啊

$ A( y# u0 X& `# x8 q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + B1 K1 T6 ~- H" z& _
7 a* }9 n0 Q7 \3 t5 o
修改的代码早有了。到今天不会编译。: J- o9 P! u4 i9 o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  \5 C" T1 K) b3 P! ^, J( ?' x
  2. #include <malloc.h>
    " |. w# n; p1 K$ W' M7 X
  3. #include <sys/types.h>
      h. h% `( F; `$ F+ y, z: y% @
  4. #include <sys/stat.h>0 s4 Q6 l: Z/ q& P% C; S( m
  5. #include <sys/ioctl.h>
    % A, {/ D+ I. Y& u& `" \& |
  6. #include <stdio.h>. g: l" D; h5 r$ {
  7. #include <string.h>9 d5 `8 S1 @* p, j+ G, E
  8.   L7 n" _( I& p& ]1 _
  9. typedef struct {  B7 ?( S( O$ Y* A
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 N2 S6 e) S4 [
  11.         unsigned int        sub_addr_count;
    % m- }* x% o5 R; Q6 l2 u
  12.         unsigned char*        e2prom_cmd_data;
    + D" B( x* h) s' ~" T. Q4 X' S; k
  13.         unsigned int        data_count;6 n/ O$ k5 X% m! @5 N) P
  14. } e2prom_s_cmd;
    4 |* r6 z9 L$ t" Z$ l/ d$ N

  15. ( e- d5 F4 _3 A2 l4 n. f/ c4 G
  16. #define E2PROM_CMD_READ 1
    # v3 v3 x  O$ }+ A1 A
  17. #define E2PROM_CMD_WRITE 2
    . c- b2 @2 H- W, [* h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ S# i: q! [. ?

  19. 8 ~' J& D0 {/ W5 q( z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 w% L) s  V8 Z1 |
  21. {
    * u# I0 W+ m2 K. {. {
  22.         int fd, ret;* W8 g! l2 h4 H
  23.         e2prom_s_cmd arg;8 n' ~/ |# d7 g/ |: z
  24.         unsigned char buf[0x18];
    " X  i9 c/ [0 u4 _

  25. / [/ D0 H1 {* t+ L( N8 `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : C8 b0 S7 A: V
  27.         if (fd  < 0) {7 I. ^& L3 E& h) a* R8 g( {
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 T+ M( D( G3 a
  29.                 return -1;
    4 Y) V( |# G% o3 u0 a( f
  30.         }
    + m( A* N8 p, i) J: @
  31.         arg.sub_addr_count      = 2;
    2 g+ x( W! e: E* R
  32.         arg.data_count          = 0x18;
    9 M+ Y+ ]  k$ U5 @9 a% J+ Z2 V6 l5 b
  33.         arg.e2prom_cmd_sub_addr = 0x290;; O8 `" |8 J: A. |( H
  34.         arg.e2prom_cmd_data     = buf;
    7 [: M% s& {0 U+ @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' l1 m. t' H# o$ P/ M+ t
  36.         if (ret != 0) {) x" r1 ~. i+ q: V+ c0 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " H! |8 {5 S/ `0 l& @/ \. w% P
  38.                 return -1;7 b; a0 K1 p% k: `! y  O, t, H
  39.         }* r! B  Q' Z. W# b- y5 i
  40.         memcpy(mac, buf, 6);
    6 b; N4 m! N- {# _8 `; v: z
  41.         memcpy(stbid, &buf[6], 18);7 o$ [0 q! n3 x" g+ n) G/ |4 t
  42.         stbid[18] = '\0';" M- Q, \; ^7 k0 D+ q: L: e& u

  43. ) T0 P! y& Z; p  I
  44.         return 0;, M6 i/ g- I3 e, R% H+ p6 \; N& J5 W
  45. }
    0 P: N4 h: W) ^4 [6 V+ h4 S, w
  46. # r# \- s6 o& m- W+ |  C# X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& d% Z9 T! J" W6 G
  48. {2 a) F- W  K# H! o! P9 d
  49.         int fd, ret;: \& t3 {" N* c, F4 e
  50.         e2prom_s_cmd arg;$ \3 S% H0 w6 `2 t( z9 A4 W
  51.         unsigned char buf[0x18];) F( e: w, m+ A! F7 B$ [

  52. : Y7 G! f6 q" z( U: y
  53.         memcpy(buf, mac, 6);( a: v# D( _+ \. \+ d! N
  54.         memcpy(&buf[6], stbid, 18);
    3 Z2 q6 i; A; J- s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! O( U; x8 Z3 Y. B( M
  56.         if (fd  < 0) {
      B+ Q1 ?$ Q1 d/ X- r" ~0 B/ |) t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 i' r6 R9 M) B+ D, d7 @# q  ~% w
  58.                 return -1;
    4 Y% X$ W3 z" g0 F. e3 U- O& t
  59.         }7 I$ d, a) o/ K) I
  60.         arg.sub_addr_count      = 2;- Q- I" d1 [2 Z2 k6 [3 z# A7 ?
  61.         arg.data_count          = 0x18;
    1 O, |' I* a9 }; [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 x0 S: Z/ g4 w
  63.         arg.e2prom_cmd_data     = buf;
    9 U$ y  ^( b3 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ S6 m' j; D0 b
  65.         if (ret != 0) {
    9 c7 a, X$ L. D; I; t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 Z7 W' ^" V" O3 t* y
  67.                 return -1;" r2 t" n, R4 D% X+ c: h
  68.         }
    7 x4 q. h( o# f8 X: U# E

  69. 0 n, e2 t. Y, C9 W$ G
  70.         return 0;
    / a7 S; \# r- ]* v6 D
  71. }$ ~% f2 |2 T: |7 A% i

  72. 1 ^& @  d" N1 k6 T
  73. int main()
    7 Z- n  @' N3 b+ {! {* q6 _
  74. {3 f. ^( `+ C5 t2 f, G
  75.         char c;
    ) u) d2 h/ P. `5 |: M$ H# U5 \
  76.         int i, macs[6];
      N* d) Y4 Z- I0 H
  77.         unsigned char mac[6];
    * b1 o# S" }9 q
  78.         unsigned char stbid[256];9 [* o1 {+ i5 n/ u

  79. 1 z8 W9 D, k; O  e" @
  80.         if (readparam(mac, stbid) < 0)
    0 M! x* k4 U3 ]$ }$ z3 I
  81.                 return 1;
    ( {) x; o$ A6 {( X5 E3 O3 s1 i  M
  82. ' Y2 P- E5 N# O8 n
  83.         printf("Current parameters: \n");& S4 K. `# S% c. ^' z0 X& g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& y* [2 Y2 ^; X- b7 i. P
  85.         printf("  STBID: %s\n", stbid);
    4 p" V1 ~: v8 ?, m' e- J
  86.         8 ^8 f9 O: l, v& \# _- Q3 X7 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 @/ y7 Y2 l6 b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) [1 [7 b2 r7 m+ l6 F& C$ ^
  89.                 printf("Input MAC error\n");
    * `' N3 C/ W: O3 q% g+ R
  90.                 return 1;
    % D! k6 N- L$ S1 P  L+ W( g
  91.         }
    8 w' J- w8 ?+ u" h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: R  B  m0 n7 M6 J' \: V# O1 D
  93.         printf("\nPlease input new STBID: ");
    , z8 M. o/ i  S  N# G
  94.         scanf("%s", stbid);" |) ^( w6 P/ S3 s/ r
  95.         if (strlen(stbid) != 18) {
    7 @( Q, M1 M" ?' E
  96.                 printf("Invalid stbid\n");$ r! k  a0 f6 `2 X+ l, K4 l
  97.                 return 1;
    3 O( ]6 n2 H' u; Q
  98.         }7 K# B# K. |) O6 `
  99.         printf("\nNew parameters: \n");8 q, N* }4 Q7 s: W7 Y) Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 [+ o3 V6 W( R# t1 G, c
  101.         printf("  STBID: %s\n", stbid);
    / _* w# ]( a  S% u$ X

  102. " _% G* @. R" E# C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 h6 f& i8 q8 x" V
  104.         for (;;) {/ d. f# y3 u) B& H: }# L) z
  105.                 c = getchar();
    - p+ i, ?; U; q
  106.                 if (c == 'y' || c == 'Y')
    8 R7 v+ X6 z+ b( D0 y5 V3 [' N
  107.                         break;
    1 W- f. v# ^/ x+ e
  108.                 if (c == 'n' || c == 'N') {
    6 @/ v9 A/ s' t5 G
  109.                         printf("\nAborted.\n");
    ' F) v6 W1 V2 H% W3 k
  110.                         return 1;
    ' `4 F3 v; e8 u2 w* o2 G1 h- j
  111.                 }9 n/ a+ K  i( N
  112.         }  ]' E% ]# b: J2 u  G8 w0 {  ~4 {4 Y
  113.         if (writeparam(mac, stbid) == 0)
    5 _1 Q4 _& ^8 X+ ]
  114.                 printf("Parameters changed.\n");+ ]4 \! I- c7 \- |

  115. 8 c; b  |9 b$ W1 k
  116.         return 0;* Q1 c: I4 x" O4 Z$ @+ I# y- P
  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
! }: i8 [- c; A' l9 C$ {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 R- G' C$ }! C0 K  a' v你用的编译命令行格式是什么?! D* o% D9 L6 L) }; z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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