查看: 17706|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! @& m9 U) K5 F# j9 |3 |2 I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # ?9 ^" u9 g1 }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ o3 z$ d. P! i8 o( J
usage: himr <address> <value>. sample: himr 0x80040000 0x0
" v( V0 B1 W' J: e; C* t1 y! U5 b, l" v! a! u* a7 X0 `/ h& }
- P, s* k5 E$ B5 f, r  M% D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 R* \! ?5 G2 c  W% r! n

2 `  ~( v8 v% c+ h( d! G3 B补充内容 (2012-3-8 09:42):
1 a! k& ?0 e4 \4 j2 }* y) ?http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; k: U6 p6 }+ w2 k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。; a; D8 `5 \2 f* O

6 g9 E5 m% j5 H; b" j/ |himr <address> <value>. sample: himr 0x80040000 0x0% P! x$ V: ?7 N. U" u' k5 O

, S' w  p! o, V' f2 e例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ {7 P. h' o2 F5 ihimr 0x80040000 0x00- Q) I! ?2 B  [& y
himr 0x80040001 0x114 n7 `$ Z7 \' P$ g: M7 b
himr 0x80040002 0x227 A$ x1 I( O9 B1 L( h0 u2 [- j
himr 0x80040003 0x33
$ `! i) y: y! T+ k; ghimr 0x80040004 0x44' ~3 v; G3 a* B1 D. ~$ i
himr 0x80040005 0x55
; F$ s2 K+ k- f' ]0 X1 U7 }
3 |4 P3 b! ?$ C- M% g, qSN也是类似。8 b6 F& ]- e' f/ u! Z, I

9 z! [( J4 P2 {! n现在主要是,谁告诉我们MAC和SN的地址?
7 w- s/ q: G- T9 V9 h' G0 `" s
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % u3 \; {& s' H: d" x
一直想找到运程修改MAC和SN的办法,苦于无解啊

' Q! y8 S# M! r+ b) z5 p1 M) x% I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   r8 V/ ]/ D& ]4 \. T0 J

' R2 V4 A% L, P( {& b3 W  ?修改的代码早有了。到今天不会编译。
; o$ \7 V# V; ~: J9 a需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, P+ D# [- e# W! U+ [" m* l
  2. #include <malloc.h>
    . q; x4 L! o1 t  L
  3. #include <sys/types.h>, @/ m3 V  c* B# z
  4. #include <sys/stat.h>
    1 M, t) [( J5 o  N1 y
  5. #include <sys/ioctl.h>! N$ X0 x8 i1 x9 C* O+ Y
  6. #include <stdio.h>0 `/ M) Y7 o- C: R/ ^" O3 o
  7. #include <string.h>8 W- G+ Z( ]% `) P( U- a' q

  8. : j8 k9 J: z; R9 z" e: y
  9. typedef struct {
    " ]! x2 `; ~$ a1 S4 e& U# p. x
  10.         unsigned int        e2prom_cmd_sub_addr;4 o9 ?0 l7 _' m
  11.         unsigned int        sub_addr_count;- B( ?5 G& R9 y' k
  12.         unsigned char*        e2prom_cmd_data;
    3 l! K( u. h: O) Q
  13.         unsigned int        data_count;0 \! E' v9 Q+ w- n8 `
  14. } e2prom_s_cmd;
    . |4 A8 I. T" }7 h* X$ d4 y) L
  15. 9 Y% Q/ N: y7 g: q  U
  16. #define E2PROM_CMD_READ 1
    3 h9 [5 @, y; [  Y3 g
  17. #define E2PROM_CMD_WRITE 28 @7 S' }% L1 i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 p+ ~. d) C0 p) I8 D$ L0 Y

  19. ' C; E2 ^- U8 z) D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' J# {: H; \0 \$ j( i
  21. {+ {; [; D% W( p" a9 Z+ f' T
  22.         int fd, ret;
    0 x, Q* v/ F) @5 S: o: n9 p
  23.         e2prom_s_cmd arg;6 g4 Y4 o- A) E* ]% F# g% U5 b
  24.         unsigned char buf[0x18];
    8 i% I2 w, T* E$ \+ L; V0 a8 a- s- J
  25. 7 w- l. [, a0 G- Q2 W4 i. r5 m! t" x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! S. g9 o( [: E( v# r2 E
  27.         if (fd  < 0) {. X9 X6 t! r/ ^: l  p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 b4 _# `$ E1 a' M+ A% V# i
  29.                 return -1;
    5 r2 g2 B( o4 c; H
  30.         }
    $ }) E  v3 }3 @3 i# A9 `7 i2 i( b; n
  31.         arg.sub_addr_count      = 2;
    " l+ C- T- J; H
  32.         arg.data_count          = 0x18;
    & `. k) z/ J( t" x$ @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + D  H4 b/ m4 G) N) b5 s7 G6 n
  34.         arg.e2prom_cmd_data     = buf;
    7 `1 S8 K' g! x% j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - J# u. n( s, B+ Q
  36.         if (ret != 0) {
    ; E; U) j3 @8 `; f1 Q( n; ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 N& v; Q+ x/ H
  38.                 return -1;' O6 R3 g% |: b# d- Y, n
  39.         }8 m5 ^- R0 }3 N
  40.         memcpy(mac, buf, 6);
    , k  L' B6 I' d# C5 p3 {
  41.         memcpy(stbid, &buf[6], 18);
    0 c- d, J% w3 o; L9 l+ K
  42.         stbid[18] = '\0';' V1 a  Z# u  k8 e) w  Q
  43. % s# \' {- \- t8 O3 v% e, C
  44.         return 0;& j( R; {2 S  b0 J, P
  45. }! x1 R9 `/ E" D* _8 D- g

  46. & q# x, Z. J% P9 e' }( q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 @& J# Y+ A) `2 K! o
  48. {
    2 ^+ @( y) ?2 D$ e" j9 b
  49.         int fd, ret;
    ; q9 n9 g# r1 ?8 F: n( [1 O9 q3 v
  50.         e2prom_s_cmd arg;* E  s5 @( s3 d
  51.         unsigned char buf[0x18];: q. t7 x- {1 _- e

  52. . K2 }2 ]6 X+ h
  53.         memcpy(buf, mac, 6);( S# V# b4 E- I# k) b' H  M1 R. a
  54.         memcpy(&buf[6], stbid, 18);+ o1 {+ F& F: c+ t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ S% V6 \1 p% U+ \: S$ ~& q
  56.         if (fd  < 0) {
    ' X; s7 c/ }5 U( r: j5 @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / @/ G- c& h3 q$ N; u- g1 i8 P
  58.                 return -1;' ]( u0 F9 L, G+ T2 [. R( q* ?( I
  59.         }- S) E0 b/ u' e+ ^0 ?9 R, G9 x
  60.         arg.sub_addr_count      = 2;
    - s  F% O, z0 ~7 _: H. H- U( @$ P
  61.         arg.data_count          = 0x18;5 U4 i  N# u* z. q
  62.         arg.e2prom_cmd_sub_addr = 0x290;: i3 m/ m5 C6 u! x- J3 G+ D
  63.         arg.e2prom_cmd_data     = buf;: N0 C$ c! G  ^8 ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 g5 ?; O3 ?% y3 v! a/ ^
  65.         if (ret != 0) {* `% V- k5 y3 r  t6 W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. W/ E; |8 w7 ?# |$ K/ _: ]0 P- }9 |
  67.                 return -1;- h+ x' G* g! Q  k) n& K9 z
  68.         }8 i# \5 b8 e9 a5 o

  69. : e$ Q& W) V" g9 ~
  70.         return 0;
    $ @- C& _  J- S; R
  71. }! P; _6 @$ N- x

  72. 3 E4 h& X6 j: P# r$ @/ p+ A
  73. int main()
    ' f4 N: [! d; Y8 S3 b
  74. {
    9 }' k* i) ]1 R2 L7 h
  75.         char c;  Z% K" {& X; D, |
  76.         int i, macs[6];
    & t7 [% `  z4 N; D
  77.         unsigned char mac[6];
    - m9 C0 @: {7 N5 ]$ R. N5 a0 q8 a: c. g
  78.         unsigned char stbid[256];
    . _7 I" s6 C' T. e+ x3 @' ]/ z2 |

  79. 0 G. ]5 \# D7 a& g2 R
  80.         if (readparam(mac, stbid) < 0)& v; l( h+ `/ ^1 I! f
  81.                 return 1;4 p& J  m7 l, q. l* E

  82. 0 s+ d. V6 [- y0 ?# h. L
  83.         printf("Current parameters: \n");7 i5 z$ R; w6 L6 O5 Q- p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * G' ^& t: X9 T* X# N4 P
  85.         printf("  STBID: %s\n", stbid);; s) v6 B5 u2 l2 @; b
  86.         1 b- H( V& G. c6 a8 L: D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  F9 |4 G& ^3 P' Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ U7 u  o( I/ m9 E# P% K
  89.                 printf("Input MAC error\n");  x0 U# c  u$ Z6 m* R  q
  90.                 return 1;$ p" u/ w2 Z$ o: _0 x
  91.         }
    1 I8 A8 Y& u: V0 B, V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" W7 Z: D: N; G2 L! ]/ z! `
  93.         printf("\nPlease input new STBID: ");
    # a# }% t3 W2 q  Z( e3 _1 R" d
  94.         scanf("%s", stbid);" n% C2 ]$ Q/ [0 Z9 M
  95.         if (strlen(stbid) != 18) {5 ?) D6 a! `  Y+ `, t4 w+ j
  96.                 printf("Invalid stbid\n");9 F5 R! n0 l5 {& G! o7 b9 Y" V
  97.                 return 1;
    : A8 \+ o0 m2 [; z7 q
  98.         }
    " s, v7 Q5 z3 j, \) T: q6 ^! k
  99.         printf("\nNew parameters: \n");
    & G' A5 @6 g9 u' W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) U7 S+ f3 \0 e2 e. G
  101.         printf("  STBID: %s\n", stbid);
    , M5 C1 G* @# E& u6 m& d! u
  102.   ^+ U8 Z7 r9 g7 B  R1 m; \0 R: l* R
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ c6 F- I  p- @+ o! l  c1 x' J) O5 W
  104.         for (;;) {8 g9 V+ `. f# Q. G$ H1 f4 W
  105.                 c = getchar();
    9 ?. Z# @5 b5 o" T: ~
  106.                 if (c == 'y' || c == 'Y')
    7 @) X) T' ]# P# H8 h+ J
  107.                         break;# }" {6 q: c4 R: X
  108.                 if (c == 'n' || c == 'N') {! O9 h" D; m5 o& `" z( m
  109.                         printf("\nAborted.\n");
    ; q1 Q2 {- M+ y+ M
  110.                         return 1;3 `8 K# v( E" R9 Q& A2 l9 Y& t' N
  111.                 }
    * }7 D. e: W: k; @2 U' y0 v4 q/ P
  112.         }2 r9 i/ N0 ]* G' c2 k
  113.         if (writeparam(mac, stbid) == 0)
    & @6 S0 W4 u# u% O5 a; {3 [' a
  114.                 printf("Parameters changed.\n");
    3 S% h" s- j7 ?6 d
  115. ( N$ [& \- i# K2 j' ]  {
  116.         return 0;+ _8 N; F0 B! |5 X
  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
. q5 A, b2 D+ k' ~, O! h. j5 p; H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  e- R9 N/ s5 R/ {. i0 U4 M你用的编译命令行格式是什么?; U* W- D% S5 W
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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